在keras 1.2.2中,我创建了一个具有以下维度的数据集:
<?= htmlentities(substr($movie->movie_name, 0, 10)) ?>
这里,2000是实例数(批量数据),100是每批中的样本数,32是图像行和列,3是通道数(RGB)。
我已经编写了这段代码,它在CNN之后应用了LSTM,但是,我收到了这个错误:
ValueError:输入0与图层lstm_layer不兼容:预期ndim = 3,找到ndim = 2
这是我的代码:
X_train: (2000, 100, 32, 32, 3)
y_train: (2000,1)
答案 0 :(得分:3)
尝试将每个Convolution2D(...)
换成:
TimeDistributed(Convolution2D(...))
您需要让模型知道您的数据是连续的,并且您希望将某个图层应用于序列中的每个元素。这就是TimeDistributed
包装器的用途。
答案 1 :(得分:0)
您确定X_train.shape[1:]
是正确的使用方法吗?我会使用(32,32,3)
,因为您的训练数据已经分批分割。
为了更好地控制input_shape,我建议你在第一层明确定义它。使用Void
代替object.setValue(i += 1, forKey: "orderPosition")
,以避免任何意外。
这对你有帮助吗?
答案 2 :(得分:0)
LSTM的输出尺寸应与您的时间步相同。 试试这个:
model.add(LSTM(output_dim=timesteps, return_sequences=True))
对我有用。