Keras LSTM恒定损耗

时间:2018-08-13 12:06:53

标签: python tensorflow keras lstm

我遇到一个问题,我的LSTM网络的丢失从一个时期到另一个时期根本没有改变。

这不会系统地发生。在相同的代码和相同的数据集的情况下,一次执行可以很好地运行,并且损失可以随着每个时期的减少而减少,而另一次执行则可以遇到持续损失的问题。我无法确定是什么使它顺其自然,这似乎是随机的。

为什么相同的代码和数据集会导致两个不同的结果?

型号代码:

mdl = Sequential()
mdl.add(Dense(3, input_shape=(1, lags), activation='relu'))
mdl.add(LSTM(6, activation='relu'))
mdl.add(Dense(1, activation='relu'))
mdl.compile(loss='mean_squared_error', optimizer='adam')
mdl.fit(X_train, y_train, epochs=10, verbose=2)

执行#1(成功):

Epoch 1/10
 - 1s - loss: 0.0401
Epoch 2/10
 - 0s - loss: 0.0091
Epoch 3/10
 - 0s - loss: 0.0025
Epoch 4/10
 - 0s - loss: 0.0012
Epoch 5/10
 - 0s - loss: 8.3705e-04
Epoch 6/10
 - 0s - loss: 6.6625e-04
Epoch 7/10
 - 0s - loss: 5.7399e-04
Epoch 8/10
 - 0s - loss: 5.4451e-04
Epoch 9/10
 - 0s - loss: 5.0578e-04
Epoch 10/10
 - 0s - loss: 4.7520e-04

执行#2(持续损失):

Epoch 1/10
 - 1s - loss: 0.0884
Epoch 2/10
 - 0s - loss: 0.0884
Epoch 3/10
 - 0s - loss: 0.0884
Epoch 4/10
 - 0s - loss: 0.0884
Epoch 5/10
 - 0s - loss: 0.0884
Epoch 6/10
 - 0s - loss: 0.0884
Epoch 7/10
 - 0s - loss: 0.0884
Epoch 8/10
 - 0s - loss: 0.0884
Epoch 9/10
 - 0s - loss: 0.0884
Epoch 10/10
 - 0s - loss: 0.0884

1 个答案:

答案 0 :(得分:2)

为什么?由于神经网络权重的随机初始化。这定义了重量空间的起点,在您的情况下,似乎有些起点确实不好。