为什么我的 Keras TimeDistributed CNN + LSTM 模型期望形状不完整
Why does my Keras TimeDistributed CNN + LSTM model expect an incomplete shape
我正在 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% 的准确率。
我对机器学习还很陌生,所以我可能忽略了一些简单的事情,但是在搜索 Whosebug 和 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'])
预期的输入形状不应该与我在训练中使用的第一个输入层相同吗?
我比你还菜鸟,可能给出了错误的建议。
如果我没理解错,如果我是你,我会尝试
帧 = 帧 [None, ...]
对于需要预测的内容。帮了我一次。
如果我没有做过类似的任务,我就不会写这篇文章。我对你的经历很感兴趣,我可以分享我的经历。你想讨论这个问题吗?
我正在 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% 的准确率。
我对机器学习还很陌生,所以我可能忽略了一些简单的事情,但是在搜索 Whosebug 和 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'])
预期的输入形状不应该与我在训练中使用的第一个输入层相同吗?
我比你还菜鸟,可能给出了错误的建议。 如果我没理解错,如果我是你,我会尝试
帧 = 帧 [None, ...]
对于需要预测的内容。帮了我一次。
如果我没有做过类似的任务,我就不会写这篇文章。我对你的经历很感兴趣,我可以分享我的经历。你想讨论这个问题吗?