该模型尚未构建。首先通过调用 build() 或对一批数据调用模型来构建模型
This model has not yet been built. Build the model first by calling `build()` or by calling the model on a batch of data
增强层代码
data_augmentation = tf.keras.Sequential([
layers.RandomFlip('horizontal'),
layers.RandomRotation(0.2),
])
函数内的模型块 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')])
这里model_name会调用上面的模型块
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)
执行以上代码时,显示以下错误:
---------------------------------------------------------------------------
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.
是model.summary()
抛出的错误。在调用 model.summary()
之前执行 model.build(input_shape=(x1, x2, x3))
。当然你需要把input_shape
替换成你想要的形状。
增强层代码
data_augmentation = tf.keras.Sequential([
layers.RandomFlip('horizontal'),
layers.RandomRotation(0.2),
])
函数内的模型块 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')])
这里model_name会调用上面的模型块
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)
执行以上代码时,显示以下错误:
---------------------------------------------------------------------------
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.
是model.summary()
抛出的错误。在调用 model.summary()
之前执行 model.build(input_shape=(x1, x2, x3))
。当然你需要把input_shape
替换成你想要的形状。