【问题标题】:How to load a Keras model with a custom loss function?如何使用自定义损失函数加载 Keras 模型?
【发布时间】:2020-06-21 21:13:10
【问题描述】:

我创建了以下自定义损失函数:

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 有一些共同点。我应该怎么做才能停止收到此错误?

【问题讨论】:

  • 尝试使用 load_model_hdf5(filepath= "modelpath", compile=False)。你得到了什么?您能否也包括模型的其余部分?

标签: r tensorflow keras loss-function


【解决方案1】:

由于您在模型中使用了 自定义 损失函数,因此在将模型保存在磁盘上时不会保存损失函数,而只会将其名称包含在模型文件中。然后,当您想稍后加载模型时,您需要通知模型存储名称对应的损失函数。要提供该映射,您可以使用 load_model_hdf5 函数的 custom_objects 参数:

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

或者,在训练完成后,如果您只想使用模型进行预测,您可以将compile = False 参数传递给load_model_hdf5 函数(因此,不需要和加载损失函数):

load_model_hdf5(filepath = "modelpath", compile = False)

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 2023-03-14
    • 1970-01-01
    • 2020-10-08
    • 2019-07-06
    • 2020-11-26
    • 2020-12-19
    • 2017-12-18
    • 2020-03-27
    相关资源
    最近更新 更多