Я определил пользовательскую функцию 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 есть ошибка, которую я просто не вижу?Или это как-то связано с тем, как Керас определяет axis=-1
в функции MSE (цель, которую я еще не полностью понял)?
Вот где я вызываю RMSE и MSE:
model.compile(loss="mae", optimizer="adam", metrics=["mse", rmse])
Так что я ожидаю, что корень MSE будет таким же, как RMSE.
Первоначально я задавал этот вопрос на Cross Validated, но он был отложен как не по теме.