Skip to content

Failure with shared embedding layer #2

Open
@iskandr

Description

@iskandr

I'm using a shared embedding layer between multiple lengths of sequence inputs and get the following error:

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in ascii(model)
    167 
    168 def ascii(model):
--> 169     node = Node(model.layers[-1])
    170     return node.render()
    171 

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in __init__(self, layer)
     11         self.layer = layer
     12         self.text = "%20s %-20s" %  (self._name(), layer.output_shape)
---> 13         self.children = self._calculate_children()
     14         self.node_width = len(self.text)
     15         self.family_width = self._calculate_family_width()

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in _calculate_children(self)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in <listcomp>(.0)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in __init__(self, layer)
     11         self.layer = layer
     12         self.text = "%20s %-20s" %  (self._name(), layer.output_shape)
---> 13         self.children = self._calculate_children()
     14         self.node_width = len(self.text)
     15         self.family_width = self._calculate_family_width()

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in _calculate_children(self)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in <listcomp>(.0)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in __init__(self, layer)
     11         self.layer = layer
     12         self.text = "%20s %-20s" %  (self._name(), layer.output_shape)
---> 13         self.children = self._calculate_children()
     14         self.node_width = len(self.text)
     15         self.family_width = self._calculate_family_width()

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in _calculate_children(self)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in <listcomp>(.0)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in __init__(self, layer)
     11         self.layer = layer
     12         self.text = "%20s %-20s" %  (self._name(), layer.output_shape)
---> 13         self.children = self._calculate_children()
     14         self.node_width = len(self.text)
     15         self.family_width = self._calculate_family_width()

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in _calculate_children(self)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in <listcomp>(.0)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in __init__(self, layer)
     11         self.layer = layer
     12         self.text = "%20s %-20s" %  (self._name(), layer.output_shape)
---> 13         self.children = self._calculate_children()
     14         self.node_width = len(self.text)
     15         self.family_width = self._calculate_family_width()

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in _calculate_children(self)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in <listcomp>(.0)
     25         layers = list(_flatten([node.inbound_layers for node in self.layer.inbound_nodes]))
     26         layers = [l.layers[-1] if issubclass(type(l), Model) else l for l in layers]
---> 27         return [Node(l) for l in layers]
     28 
     29     def _calculate_family_width(self):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras_diagram/diagram.py in __init__(self, layer)
     10     def __init__(self, layer):
     11         self.layer = layer
---> 12         self.text = "%20s %-20s" %  (self._name(), layer.output_shape)
     13         self.children = self._calculate_children()
     14         self.node_width = len(self.text)

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras/engine/topology.py in output_shape(self)
    827                             'the notion of "output shape" is ' +
    828                             'ill-defined for the layer. ' +
--> 829                             'Use `get_output_shape_at(node_index)` instead.')
    830 
    831     def set_weights(self, weights):

Exception: The layer "amino_acid_embedding has multiple inbound nodes, with different output shapes. Hence the notion of "output shape" is ill-defined for the layer. Use `get_output_shape_at(node_index)` instead.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions