【发布时间】:2021-10-25 04:09:22
【问题描述】:
我正在 Keras 中构建一个小型 CNN LSTM 模型,用于练习视频分类。我的数据的输入维度是(1、5、30、10、3)(批量大小、时间步长、宽度、高度、通道)。我发现 ConvLSTM2D 取得了一些成功,但我想使用 TimeDistributed 制作模型,因为我想比较 LSTM 与 GRU 的性能。
模型成功训练(尽管有一些非常奇怪的准确度),
https://i.imgur.com/5uAbPkR.png
但是当我将它保存到我的计算机并在维度数组(1、5、30、10、3)上调用 model.predict 时,我得到了这个错误:
ValueError: Input 0 is incompatible with layer sequential_12: expected shape=(None, None, 10, 30, 3), found shape=(1, 5, 30, 10, 3)
即使使用训练集中的图像也会发生这种情况,据说可以达到 100% 的准确率。
我对机器学习很陌生,所以很可能我忽略了一些简单的事情,但是在整天搜索 stackoverflow 和 Google 以寻找任何线索之后,我一无所获。
模型看起来像这样。
model = Sequential()
model.add(Input((5,10,30,3)))
model.add(TimeDistributed(Conv2D(filters=2,
kernel_size=(3,3),
padding='same',
activation='relu')))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(4))
model.add(Dense(16, activation='sigmoid'))
model.add(Dense(2, activation='softmax'))
sgd = SGD(learning_rate=0.01)
model.compile(optimizer=sgd,
loss='binary_crossentropy',
metrics=['accuracy'])
预期的输入形状不应该与我在训练中使用的第一个输入层相同吗?
【问题讨论】:
标签: python tensorflow machine-learning keras recurrent-neural-network