Как загрузить модель Keras с пользовательской функцией потерь? - PullRequest
0 голосов
/ 10 марта 2020

Я создал следующую пользовательскую функцию потери:

RMSE = function(y_true,y_pred) {
    k_sqrt(k_mean(k_square(y_pred - y_true))) 
}

И она отлично работает, когда я сохраняю модель. Однако, когда я загружаю модель обратно, используя:

load_model_hdf5(filepath= "modelpath") 

, я получаю следующую ошибку:

Error in py_call_impl(callable, dots$args, dots$keywords):
    valueError: Unknown loss function:RMSE

Возможно, этот вопрос имеет что-то общее с этим one Я сделал раньше. Как избежать получения этой ошибки?

1 Ответ

1 голос
/ 11 апреля 2020

Поскольку в вашей модели используется настраиваемая функция потери , функция потери не будет сохранена при сохранении модели на диске, а вместо этого в файл модели будет включено только ее имя. Затем, когда вы захотите загрузить модель позднее, вам необходимо сообщить модели соответствующую функцию потерь для сохраненного имени. Чтобы обеспечить это отображение, вы можете использовать custom_objects аргумент функции load_model_hdf5:

load_model_hdf5(filepath = "modelpath", custom_objects = list(RMSE = RMSE))

В качестве альтернативы, после окончания обучения, если вы просто хотите использовать модель для прогнозирования, вы можете просто передать compile = FALSE аргумент load_model_hdf5 функции (следовательно, функция потерь не будет нужна и загружена):

load_model_hdf5(filepath = "modelpath", compile = FALSE)
...