使用自定义损失函数编译 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 模型使用 tensorflow 自定义损失?