我遇到一个问题,需要使用 LSTM 多对一架构,即它首先接收 19 个图像帧,然后给出输出。
图像帧的大小为(128,128,3)。
我几天来一直在尝试,但找不到答案,LSTM 的 input_shape 应该是什么?
我相信,由于图像帧的大小为 128*128*3,因此输入层中的单元数将为 49152。目前代码如下所示:
timesteps = 19
data_dim = 128*128*3
model = Sequential()
model.add(LSTM(data_dim,input_shape=(timesteps, data_dim)))
model.add(Dense(10))
optimizer = 'sgd'
momentum=0.6
decay=0.0005
nesterov=True
optimizer = SGD(lr=lr, momentum=momentum, decay=decay, nesterov=nesterov)
model.compile(loss='categorical_crossentropy', optimizer=optimizer)
此代码在编译后出现内存错误。
这是否是由于 input_shape 和 LSTM 的其他参数中的一些错误所致,还是由于我的计算机硬件所致?
最佳答案
这当然是你的建筑。尝试更少的 LSTM 单元,data_dim
太多了。
考虑到您的输入也是 data_dim
,这将导致超过 4*49152*49152 = 9.663.676.416 的权重(不计算偏差)。
model.add(LSTM(less_units, input_shape=(timesteps,data_dim)))
<小时/>
图像序列:
model.add(TimeDistributed(Conv2D(output_filters,kernel_size,...), input_shape=(timesteps,x,y,channels))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(output_dim,...))
关于machine-learning - Keras - 使用 time_steps 将图像输入到 LSTM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49860738/