Issue
Code for augmentation layer
data_augmentation = tf.keras.Sequential([
layers.RandomFlip('horizontal'),
layers.RandomRotation(0.2),
])
Model block inside function get_model(model_name, droput_rate):
model = tf.keras.Sequential([
data_augmentation,
layers.Conv3D(64, (5, 5, 5), padding='same', activation='relu', input_shape=(22, 64, 64, 1)),
layers.BatchNormalization(),
layers.MaxPooling3D(pool_size=(3, 3, 3)),
layers.Dropout(dropout_rate),
layers.Conv3D(128, (5, 5, 5), padding='same', activation='relu'),
layers.Conv3D(128, (5, 5, 5), padding='same', activation='relu'),
layers.BatchNormalization(),
layers.MaxPooling3D(pool_size=(3, 3, 3)),
layers.Dropout(dropout_rate),
layers.GlobalMaxPool2D(),
layers.Dense(10, activation='softmax')])
Here model_name will call the above model block
opt = tf.keras.optimizers.SGD(learning_rate=0.001)
model = get_model(model_name, 0.5)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
model_json = model.to_json()
with open(models_dir + model_name + ".json", "w") as json_file:
json_file.write(model_json)
# plot the model architecture
model.summary()
plot_model(model, to_file='/content/gdrive/MyDrive/Lip Reading/outputs/architecture_{}.pdf'.format(model_name), show_shapes=True, show_layer_names=False)
When above code is executed below errors are shown:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-166-57c956c1a8c7> in <module>()
4
5 # plot the model architecture
----> 6 model.summary()
7 plot_model(model, to_file='/content/gdrive/MyDrive/Lip Reading/outputs/architecture_{}.pdf'.format(model_name), show_shapes=True, show_layer_names=False)
/usr/local/lib/python3.7/dist-packages/keras/engine/training.py in summary(self, line_length, positions, print_fn, expand_nested, show_trainable)
2774 if not self.built:
2775 raise ValueError(
-> 2776 'This model has not yet been built. '
2777 'Build the model first by calling `build()` or by calling '
2778 'the model on a batch of data.')
ValueError: This model has not yet been built. Build the model first by calling `build()` or by calling the model on a batch of data.
Solution
It is model.summary()
that throws the error. Do model.build(input_shape=(x1, x2, x3))
before calling model.summary()
. Of course you need to replace input_shape
with the desired shape.
Answered By - Sam Ngugi
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.