【发布时间】:2020-01-27 14:35:16
【问题描述】:
我已经定义了一个自定义的 RMSE 函数:
def rmse(y_pred, y_true):
return K.sqrt(K.mean(K.square(y_pred - y_true)))
我正在根据 Keras 提供的均方误差对其进行评估:
keras.losses.mean_squared_error(y_true, y_pred)
对于某些(相同的)预测,我分别获得的 MSE 和 RMSE 指标值是:
mse: 115.7218 - rmse: 8.0966
现在,当我取 MSE 的根时,我得到10.7574,这显然高于自定义 RMSE 函数输出的 RMSE。我无法弄清楚为什么会这样,也没有找到关于这个特定主题的任何相关帖子。 RMSE 函数中是否存在我根本没有看到的错误?还是与 Keras 如何在 MSE 函数中定义 axis=-1 有某种关系(我还没有完全理解其用途)?
这里是我调用 RMSE 和 MSE 的地方:
model.compile(loss="mae", optimizer="adam", metrics=["mse", rmse])
所以我希望 MSE 的根与 RMSE 相同。
我最初在 Cross Validated 上问过这个问题,但因为离题而被搁置。
【问题讨论】:
-
您的结果
mse: 115.7218 - rmse: 8.0966来自哪里? model.evaluate 或 model.fit 还是什么?请提供尽可能多的信息 -
它们是来自 model.fit 的验证结果,在一个 epoch 完成后。以下是 model.evaluate 的一些预测结果:
mse 60.0054 - rmse 6.8625。 MSE 的根是7.7463。 -
问题,为什么要一样?
-
你是怎么做这个比较的?也许发布该代码将有助于解决问题。
-
@mka 你能解决这个问题吗?
标签: python machine-learning keras