我的问题是,这段代码有意义吗?如果这有意义的话,目的应该是什么呢?
model.add(LSTM(18, return_sequences=True,batch_input_shape=(batch_size,look_back,dim_x), stateful=True))
model.add(Dropout(0.3))
model.add(LSTM(50,return_sequences=False,stateful=False))
model.add(Dropout(0.3))
model.add(Dense(1, activation='linear'))因为如果我的第一个LSTM层从一个批返回到另一个批处理的状态,为什么不应该同样地执行第二个LSTM层呢?
我很难理解Keras中的LSTM机制,所以我非常感谢您的帮助:)
如果你否决了这篇文章,你能告诉我为什么在命令里吗?谢谢。
发布于 2018-10-27 10:20:17
您的程序是一个回归问题,您的模型由两个lstm层组成,每个层有18层和50层,最后是一个显示回归值的密集层。
LSTM需要一个3D input.Since,您的第一个LSTM层的输出要输入到第二个LSTM layer.The输入,第二个LSTM层的输入也应该是3D的。因此,我们将retrun序列设为真,因为它将返回一个3D输出,然后可以用作第二个LSTM的输入。
您的第二个LSTM值不返回序列,因为在第二个LSTM之后,您有一个不需要3D值作为输入的致密层。
更新
在keras中,默认情况下,在每一批培训数据之后重置状态,因此,如果不希望在每一批数据之后重置状态,则可以设置stateful=True。如果将LSTM变为有状态的,批处理的最终状态将用作下一批处理的初始状态。稍后可以通过调用reset_states()来重置状态。
https://stackoverflow.com/questions/53013146
复制相似问题