我有一个大小为(5358,293,30)的数据集,我想训练一个LSTM网络以预测0到1之间的值。
我的神经网络定义如下:
model = Sequential()
model.add(LSTM(10, input_shape=(293, 30)))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss="mean_squared_error", optimizer="adam")
model.fit(Xtrain, Ytrain, epochs=20, batch_size=38, shuffle=False)
火车中所有时期的损失值为〜0.04。 当我在测试数据上测试神经网络时,我得到的输出总是与结果相同,〜0.80。 我也尝试了更大的网络,但是输出没有改变。
我使用默认参数,并缩放了[0,1]范围内的数据。
此问题的可能原因是什么?我该如何解决?
更新: 简化版本的model.summary()的输出:
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 10) 1640
_________________________________________________________________
dense_1 (Dense) (None, 1) 11
=================================================================
Total params: 1,651
Trainable params: 1,651
Non-trainable params: 0
_________________________________________________________________
完整版:
Layer (type) Output Shape Param #
=================================================================
lstm_2 (LSTM) (None, 293, 64) 24320
_________________________________________________________________
lstm_3 (LSTM) (None, 64) 33024
_________________________________________________________________
dense_2 (Dense) (None, 64) 4160
_________________________________________________________________
dense_3 (Dense) (None, 1) 65
=================================================================
Total params: 61,569
Trainable params: 61,569
Non-trainable params: 0
_________________________________________________________________
答案 0 :(得分:0)
答案 1 :(得分:0)
如果我们假设您的模型还可以,那么您首先要做的就是增加纪元数。
epochs=20
也可以使用优化器。例如,您选择Adam优化器,确保测试不同的参数:
opt = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, decay=0.01)
您可以添加model.summary()
,以更好地预测模型。我认为提供模型摘要是了解系统的第一件事。
既然您提到了功能,请务必注意如何表示它们。根据功能表示,您可能需要修改LSTM模型。