我正在尝试做一个视频分类 dl 项目。预处理:从每个视频中,我取出 20 帧并重新整形它们并将它们添加到一个列表中,我的 x.shape 看起来像这样 --> (无,20,2...
我正在尝试做一个视频分类 dl 项目。预处理:从每个视频中,我取出 20 帧并重新整形它们并将它们添加到列表中,我的 x.shape 看起来像这样 --> (None, 20, 224, 224, 3)模型:我使用 vgg16 作为基础模型并组合使用 lstm 层。baseModel = VGG16(weights=\'imagenet\', include_top=False, input_shape=(frame_height, frame_width, 3))
#model
model = Sequential()
model.add(TimeDistributed(baseModel, input_shape=(sequence, frame_height, frame_width, 3)))
model.add(TimeDistributed(Dropout(0.3)))
model.add(TimeDistributed(Flatten()))
model.add(TimeDistributed(Dropout(0.3)))
#LSTM Layer
model.add(LSTM(320, activation='tanh'))
model.add(Dropout(0.2))
model.add(Dense(label_count, activation="softmax"))
for layer in baseModel.layers:
layer.trainable = False
optimizers = Adam(learning_rate=0.001)
model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizers, metrics=['accuracy'])
model.fit(x=x_train, y=y_train, validation_data=(x_val,y_val),epochs=1, batch_size=10, callbacks=[early_stopping])
此后,我将模型保存在本地:model.save(\'model.keras\')
但是,当我尝试使用 :loaded_model = load_model(r'model.keras') 加载模型时
我收到一个 ValueError:无法将“20”转换为形状。
TimeDistributed.call() 接收的参数:• args=('
我想保存模型以供以后使用并在需要时加载它。我很新手,所以任何事情都会有帮助,即使有更好的预处理方法或更好的模型架构。