使用自定义损失函数编译 Keras 模型时出现 TypeError

Posted

技术标签:

【中文标题】使用自定义损失函数编译 Keras 模型时出现 TypeError【英文标题】:TypeError while compiling Keras model with custom loss function 【发布时间】:2020-09-07 09:32:32 【问题描述】:

我已经训练了一个具有自定义损失函数 BinaryCrossEntropy 的模型,使用 Jaccard,使用分段模型库,当我尝试加载和编译模型以开始预测时,我得到了这个错误: model = compile(optimizer='adam', loss=bce_jaccard_loss, metrics=['iou_score']) TypeError: compile() missing required argument 'source' (pos 1)

请问我该如何解决?

import keras
import segmentation_models as sm
from segmentation_models.losses import bce_jaccard_loss
from segmentation_models.metrics import iou_score

model = keras.models.load_model("ResNet_34_Aug.h5", compile = False)
model = compile(optimizer='adam', loss=bce_jaccard_loss, metrics=['iou_score'])

【问题讨论】:

【参考方案1】:

整个问题出在代码的最后一行,缺少的必需参数“源”(位置 1)是模型本身,所以我已将其修复为:

model.compile(optimizer='adam', loss=bce_jaccard_loss, metrics=['iou_score'])

【讨论】:

以上是关于使用自定义损失函数编译 Keras 模型时出现 TypeError的主要内容,如果未能解决你的问题,请参考以下文章

如何在 keras 模型中实现汉明损失作为自定义指标

Keras 自定义损失(chi2)线性回归

如何为 keras 模型使用 tensorflow 自定义损失?

如何使用自定义损失函数加载 Keras 模型?

GPU 上的 Keras 模型:在自定义损失函数中使用 Pandas

如何在 Keras 自定义损失函数中使用张量?