【发布时间】:2019-02-18 16:27:10
【问题描述】:
我无法理解为什么我的自定义 RMSE 损失函数的值与 MAE 相同。
我有一个模型,我用 loss='mae' 训练一次,用自定义函数训练一次:
def root_mean_squared_error(y_true, y_pred):
return keras.sqrt(keras.mean(keras.square(y_pred - y_true),axis=-1))
(我知道做 sqrt 并没有实际的好处,只是为了掌握我所做的事情)。 我的问题是,当我使用自定义函数时,我得到的输出显示损失值等于 MAE。 例如,这是一个示例输出:
/1 [==============================] - 0s 173ms/步 - 损失:0.0450 - mean_squared_error:0.0091 - mean_absolute_error:0.0450 Epoch 96/100 1/1 [===============================] - 0s 169ms/步 - 损失:0.0449 - mean_squared_error:0.0091 - mean_absolute_error:0.0449 Epoch 97/100 1/1 [===============================] - 0s 172ms/step - loss: 0.0448 - mean_squared_error:0.0091 - mean_absolute_error:0.0448 Epoch 98/100 1/1 [==============================] - 0s 166ms/步 - 损失:0.0447 - mean_squared_error:0.0091 - mean_absolute_error:0.0447 Epoch 99/100 1/1 [==============================] - 0s 170ms/步 - 损失:0.0447 - mean_squared_error: 0.0091 - mean_absolute_error: 0.0447
MAE 不应与 RMSE 相同。 另一个奇怪的事情是,我预计 RMSE 是 sqrt(MSE),但从上面看到的数字来看,它不是。
虽然它没有添加更多信息,但这是我的编译行:
model.compile(optimizer = Adam(lr = 1e-4), loss = root_mean_squared_error, metrics=['mse', 'mae'])
编辑: 我的训练数据和目标数据是1通道的单色图像(所以张量形状是(None, 256, 256, 1)
【问题讨论】:
标签: tensorflow keras loss-function