Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keras plot_model not showing the input layer appropriately

My model is defined as such:

model = keras.models.Sequential()
model.add(layers.Embedding(max_features, 128, input_length=max_len,
                       input_shape=(max_len,), name='embed'))
model.add(layers.Conv1D(32, 7, activation='relu'))
model.add(layers.MaxPooling1D(5))
model.add(layers.Conv1D(32, 7, activation='relu'))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(1))

and when I use the plot_model function to draw it out:

from keras.utils import plot_model

plot_model(model, show_shapes=True, to_file='model.png')

The drawing I get is like this

Where the input layer is a series of numbers. Does anybody know how it let it show the input properly?

like image 980
Chenglei Si Avatar asked Aug 07 '18 01:08

Chenglei Si


1 Answers

It happened to me after upgrading Keras

check this link: https://github.com/keras-team/keras/issues/10638

In keras/engine/sequential.py

Comment this out:

@property
def layers(self):
    # Historically, `sequential.layers` only returns layers that were added
    # via `add`, and omits the auto-generated `InputLayer`
    # that comes at the bottom of the stack.
    if self._layers and isinstance(self._layers[0], InputLayer):
        return self._layers[1:]
    return self._layers
like image 159
eroz Avatar answered Oct 29 '22 00:10

eroz