如何将5D张量输入LSTM?

时间:2018-06-04 22:13:05

标签: python keras reshape lstm convolutional-neural-network

我有3D CNN网络输入形状的视频数据为(150,80,80,16,3)。

我得到了带有形状(150,7,7,2,512)的conv层的输出,表示:

150个序列号

7,7高度和宽度

2时间维度

512个要素图

我想将其提供给LSTM,因此我将输出数据重新整形为:

model.add(Reshape((1, 7*7*2*512)))
model.add(LSTM(100, return_sequence=true))

它适用于LSTM,但我不确定这是否正确(我应该将时间空间= 16并根据我们在开头选择的时间维度将特征数更改为3136)。我知道LSTM应该获得具有形状(序列,时间空间,特征)的数据。

如果您有任何建议,我会很高兴。

由于

1 个答案:

答案 0 :(得分:0)

你真的很接近但是你错过了组织时间步长或时间维度的关键步骤。你所追求的是(150, 2, 7*7*512),它表示150个样本,2个步骤和平坦的特征。所以你可以先置换然后重塑:

model.add(Permute((3, 1, 2, 4)) # (samples, 2, 7, 7, 512)
model.add(Reshape((2, 7*7*512)) # (samples, 2, 7*7*512)

现在LSTM将处理2个步骤的平顶图像特征。

请注意,这实际上是每个时间步都非常大的功能空间,您可能希望通过池操作或其他CNN层来减少功能集。

相关问题