Keras中卷积神经网络后使用LSTM时的尺寸误差

时间:2017-02-26 09:07:53

标签: machine-learning neural-network keras lstm recurrent-neural-network

在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)

3 个答案:

答案 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))

对我有用。