我已经制作了一个多层LSTM模型,该模型使用回归来预测数据的下一帧值。模型在20个纪元后完成。然后,我得到一些预测,并将它们与我的基本真理值进行比较。正如您在上图中看到的那样,预测收敛到一个恒定值。我不知道为什么会这样。 到目前为止,这是我的模型:
str
通过比较2张图片,我可以得出结论,当时期数增加时,预测更有可能收敛到大约-0.1的某个特定值。
答案 0 :(得分:2)
因此,在尝试了不同数量的LSTM
单元和不同类型的体系结构之后,我意识到当前LSTM
单元的数量导致模型学习得如此缓慢,而20个纪元不足以实现这种学习对于每一层,我将LSTM单位的数量更改为64,并删除了Dense(1024)
层,并将纪元数从20增加到了400,结果非常接近基本的真值。 我应该提到的是,新模型中使用的数据集与前一个模型不同,因为我在使用该数据集时遇到了一些问题。这是新模型:
from keras.optimizers import RMSprop
from keras.initializers import glorot_uniform, glorot_normal, RandomUniform
init = glorot_normal(seed=None)
init1 = RandomUniform(minval=-0.05, maxval=0.05)
optimizer = RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
model = Sequential()
model.add(LSTM(units=64, dropout=0.2, recurrent_dropout=0.2,
input_shape=(x_train.shape[1], x_train.shape[2]),
return_sequences=True, kernel_initializer=init))
model.add(LSTM(units=64, dropout=0.2, recurrent_dropout=0.2,
return_sequences=False, kernel_initializer=init))
model.add(Dense(1, activation='linear', kernel_initializer= init1))
model.compile(loss='mean_squared_error', optimizer=optimizer )
model.summary()
它仍然不是最好的模型,但至少比以前的模型要好。 如果您有任何进一步的改进建议,将不胜感激。