keras 验证均方误差总是类似于 1

数据挖掘 机器学习 scikit-学习 张量流 喀拉斯
2022-03-06 13:55:29

Keras 的验证均方误差输出总是与 1 非常相似,有什么原因吗?谢谢你。我所有的训练结果如下:

155/155 [==============================] - 0s - loss: 6062.6136 - mean_absolute_error: 0.8344 - mean_squared_error: 1.0271 - val_loss: 0.8252 - val_mean_absolute_error: 0.8252 - val_mean_squared_error: 1.0164
Epoch 29/1000
155/155 [==============================] - 0s - loss: 5870.5280 - mean_absolute_error: 0.8324 - mean_squared_error: 1.0211 - val_loss: 0.8246 - val_mean_absolute_error: 0.8246 - val_mean_squared_error: 1.0130
Epoch 30/1000
155/155 [==============================] - 0s - loss: 5668.5083 - mean_absolute_error: 0.8311 - mean_squared_error: 1.0134 - val_loss: 0.8244 - val_mean_absolute_error: 0.8244 - val_mean_squared_error: 1.0106
Epoch 31/1000
155/155 [==============================] - 0s - loss: 5530.8119 - mean_absolute_error: 0.8288 - mean_squared_error: 1.0115 - val_loss: 0.8243 - val_mean_absolute_error: 0.8243 - val_mean_squared_error: 1.0089
Epoch 32/1000
155/155 [==============================] - 0s - loss: 5222.6773 - mean_absolute_error: 0.8283 - mean_squared_error: 1.0119 - val_loss: 0.8245 - val_mean_absolute_error: 0.8245 - val_mean_squared_error: 1.0071
Epoch 33/1000
155/155 [==============================] - 0s - loss: 5090.0273 - mean_absolute_error: 0.8273 - mean_squared_error: 1.0078 - val_loss: 0.8247 - val_mean_absolute_error: 0.8247 - val_mean_squared_error: 1.0060
Epoch 34/1000
155/155 [==============================] - 0s - loss: 4878.2420 - mean_absolute_error: 0.8272 - mean_squared_error: 1.0093 - val_loss: 0.8245 - val_mean_absolute_error: 0.8245 - val_mean_squared_error: 1.0046

注意:我已经使用 sklearn 标准化来标准化我的输入和输出:

from sklearn import preprocessing
    X_scaler = preprocessing.StandardScaler().fit(X_list_total)
    X_list_total_standardized = X_scaler.transform(X_list_total)
    Y_scaler = preprocessing.StandardScaler().fit(Y_list_total)
    Y_list_total_standardized = Y_scaler.transform(Y_list_total)

这是否意味着根本无法从数据中学到任何东西?

2个回答

由于许多原因,它可能非常接近 1(或者就此而言,变化非常缓慢):

  • 也许你的学习率非常小。
  • 也许网络已经达到了它的学习能力。由于我们对网络架构一无所知,因此我们不能排除这种可能性。

这并不意味着没有什么可以从数据中学习的。在最坏的情况下,在给定的架构、超参数和你愿意让网络学习的时间的情况下,没有什么可以从数据中学习的。

你的输出是什么?是0-1吗?如果是这样,您不应该使用 RMSE,而应该使用交叉熵作为损失函数。