为什么我的Keras TimeDistributed CNN + LSTM模型期望一个不完整的形状

我在练习视频分类时,正在构建一个小的CNN LSTM模型。我的数据输入维度是(1, 5, 30, 10, 3)(批量大小,时间步长,宽度,高度,通道)。我曾尝试使用ConvLSTM2D取得了一些成功,但我希望构建一个使用TimeDistributed的模型,以便比较LSTM和GRU的性能表现。

模型成功训练了(尽管准确率有些奇怪),

https://i.sstatic.net/UwfTY.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'])

期望的输入形状不应该与我在训练中使用的第一个输入层相同吗?


回答:

我比你还新手,可能给出的建议是错误的。如果我理解正确的话,如果我是你,我会尝试

frame = frame [None, …]

用于需要预测的内容。这曾经帮了我一次。

如果我不是在做类似的任务,我是不会写这些的。我对你的经验非常感兴趣,我也愿意分享我的经验。你想讨论这个问题吗?

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注