阿
Conv2D层需要四个维度,而不是三个:
(batch_size, height, width, channels)
。
并且
TimeDistributed将需要额外的尺寸:
(batch_size, frames, height, width, channels)
因此,如果您真的要使用
TimeDistributed+
Conv2D,则需要5个维度。你
input_shape=(86,28,28,3),或者你的
batch_input_shape=(batch_size,86,28,28,3),在这里我假设你有一个RGB视频(3个色通道)。
通常,您只需将输入形状传递给
TimeDistributed。
model.add(TimeDistributed(Dense(....), input_shape=(86,28,28,3))
batch_input_shape仅在使用
stateful=TrueLSTM的情况下才需要。然后,您只需将batch_input_shape替换为input_shape。
请注意,只有卷积2D层才能看到高度和宽度方面的图像。添加LSTM时,将需要调整数据的形状以将高度,宽度和通道合并为一个维度。
对于形状(框架,h,w,ch):
model.add(Reshape((frames,h*w*ch)))
而且,您不应
TimeDistributed仅将这些LSTM与卷积层一起使用。
您的使用方法可以,
model.add(TimeDistributed(Flatten()))而不需要重塑。
还要注意,Keras最近实现了
ConvLSTM2D一层,这可能对您有用:https
:
//keras.io/layers/recurrent/#convlstm2d
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)