损失函数设计,以适用于假阳性和假阴性的不同重量

时间:2017-02-12 18:15:45

标签: tensorflow computer-vision deep-learning keras image-segmentation

我正在尝试解决语义分段问题。根据实际约束,假阳性的标准和假阴性的标准是不同的。例如,如果像素被错误校正,则前景不太理想,而像素被错误校正为背景。如何在设置损失函数时处理这种约束。

2 个答案:

答案 0 :(得分:5)

您可以使用model.fitclass_weight参数来衡量您的课程,因此,根据课程的不同,惩罚错误分类。

  

class_weight:可选字典将类索引(整数)映射到权重(浮点数),以便在训练期间应用于此类样本的模型损失。这可以用来告诉模型“更多地关注”来自代表性不足的类的样本。

例如:

out = Dense(2, activation='softmax')
model = Model(input=..., output=out)
model.fit(X, Y, class_weight={0: 1, 1: 0.5})

这会比第一类惩罚第二类。

答案 1 :(得分:0)

查看keras-contrib中的jaccard距离(或IOU)丢失功能:

  

当图像中的像素数量不平衡时,此损失非常有用       因为它赋予所有班级相等的权重。但是,这不是事实       图像分割的标准。       例如,假设您要尝试预测每个像素是猫,狗还是背景。       您的背景像素为80%,狗为10%,猫为10%。如果模型预测背景为100%       是正确的80%(与分类交叉熵一样)还是30%(有这种损失)?

来源: https://github.com/keras-team/keras-contrib/blob/master/keras_contrib/losses/jaccard.py