You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras使用自定义损失函数报Unknown loss function错误如何解决

问题解决方案

这个报错的核心原因对应两个常见场景:

  1. 编译模型时错误地将自定义损失函数名以字符串形式传入,Keras的内置损失映射表找不到对应自定义函数
  2. 加载已保存的包含自定义损失的模型时,没有传入自定义对象映射

场景1:首次训练编译模型的修复方法

直接把model.compile步骤里的loss参数从字符串改为你定义的函数对象即可,不需要传字符串,修改后的编译代码如下:

model.compile(optimizer='rmsprop', loss=custom_loss_function, metrics=['mae'])

场景2:加载已保存的包含自定义损失的模型时的custom_objects传参方法

如果你是训练完成后保存了模型,后续重新加载模型用于推理/继续训练,需要在加载时通过custom_objects参数传入自定义损失的映射关系,映射的key是你保存模型时损失函数的名称字符串,value是你定义的损失函数对象,示例代码如下:

from keras.models import load_model

# 加载模型时传入自定义对象映射
model = load_model('你保存的模型路径.h5', custom_objects={'custom_loss_function': custom_loss_function})

额外提醒

你当前写的自定义损失函数存在两个问题:

  • 循环逻辑中变量n没有定义,运行时会触发NameError
  • 循环里每次都会覆盖l的取值,循环逻辑完全无效,当前损失等价于内置的MAE损失,可直接使用loss='mae'替代自定义函数

内容的提问来源于stack exchange,提问作者Zai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:06:07