brianlow / keras_diagram

Keras models as ASCII diagrams
29 stars 6 forks source link

TypeError with concatenate layer #7

Open kmcnaught opened 6 years ago

kmcnaught commented 6 years ago
model_input = Input(
              shape=(3,),
              name='Input')

hidden = Dense(
         units=7,
         activation=K.relu,
         name="Hidden")(model_input)

means = Dense(
        units=7, 
        name='Means')(hidden)

variances = Dense(
            units=7,  
            activation=K.exp, # enforce positivity
            name='Covariances')(hidden)

posterior = concatenate(
   [means, variances],
   name='Posterior_Params')

model = Model(
       inputs=model_input,
       outputs=[posterior])

print(ascii(model))

throws exception:

> Traceback (most recent call last):
  File "test_ascii_model.py", line 56, in <module>
    print(ascii_model(model))
  File "[redacted]/python3.6/site-packages/keras_diagram/diagram.py", line 170, in ascii
    return node.render()
  File "[redacted]/python3.6/site-packages/keras_diagram/diagram.py", line 71, in render
    return str(self.canvas())
  File "[redacted]/python3.6/site-packages/keras_diagram/diagram.py", line 61, in canvas
    a = Arrows(canvas.width())
  File "[redacted]/python3.6/site-packages/keras_diagram/diagram.py", line 135, in __init__
    self.line1 = create_string_buffer(' ' * width)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/__init__.py", line 63, in create_string_buffer
    raise TypeError(init)
TypeError:                                         

The same model with either means or variances as output prints out correctly.

Using python 3.6, Keras 2.0.8, tensorflow 1.1.0, on OSX.