我有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应该获得具有形状(序列,时间空间,特征)的数据。
如果您有任何建议,我会很高兴。
由于
答案 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层来减少功能集。