如何使用自定义损失函数加载 Keras 模型?
Posted
技术标签:
【中文标题】如何使用自定义损失函数加载 Keras 模型?【英文标题】:How to load a Keras model with a custom loss function? 【发布时间】: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)。你得到了什么?您能否也包括模型的其余部分? 【参考方案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)
【讨论】:
以上是关于如何使用自定义损失函数加载 Keras 模型?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 keras 模型使用 tensorflow 自定义损失?
GPU 上的 Keras 模型:在自定义损失函数中使用 Pandas