【发布时间】:2021-01-16 04:30:57
【问题描述】:
我有一个 LSTM 模型,它根据今天的出水量、温度和降水量来预测明天的出水量。
model = Sequential()
model.add(LSTM(units=24, return_sequences=True,
input_shape=(X_Train.shape[1],X_Train.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(units=50))
model.add(Dropout(0.2))
model.add(Dense(20, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(optimizer = 'adam', loss = 'mean_squared_error')
history = model.fit(X_Train, Y_Train, epochs=8,
validation_data=(X_Test, Y_Test))
Epoch 1/8
4638/4638 [==============================] - 78s 17ms/step - loss:
1.9951e-04 - val_loss: 1.5074e-04
Epoch 2/8
4638/4638 [==============================] - 77s 17ms/step - loss:
9.6735e-05 - val_loss: 1.0922e-04
Epoch 3/8
4638/4638 [==============================] - 78s 17ms/step - loss:
6.5202e-05 - val_loss: 5.9079e-05
Epoch 4/8
4638/4638 [==============================] - 77s 17ms/step - loss:
5.1011e-05 - val_loss: 4.9478e-05
Epoch 5/8
4638/4638 [==============================] - 77s 17ms/step - loss:
4.3992e-05 - val_loss: 5.1148e-05
Epoch 6/8
4638/4638 [==============================] - 77s 17ms/step - loss:
3.9901e-05 - val_loss: 4.2351e-05
Epoch 7/8
4638/4638 [==============================] - 74s 16ms/step - loss:
3.6884e-05 - val_loss: 4.0763e-05
Epoch 8/8
4638/4638 [==============================] - 74s 16ms/step - loss:
3.5287e-05 - val_loss: 3.6736e-05
但是当我手动计算均方误差时,我得到了不同的结果
mean_square_root = mean_squared_error(predicted_y_values_unnor, Y_test_actual)
130.755469707972
我想知道为什么训练时验证损失与手动计算时不同。训练时的损失如何计算?
【问题讨论】:
-
你是怎么得到
predicted_y_values_unnor的? -
在深度学习中,通常会给出归一化的输入(mean=0 和 std-dev=1)。这就是为什么损失数字非常小。
-
我现在明白了。我将归一化损失与我的非归一化均方误差进行比较。
-
太棒了。很高兴能帮助你。请接受答案,以便我们能够帮助社区中的其他人。
标签: python keras lstm loss-function