我正在尝试解决语义分段问题。根据实际约束,假阳性的标准和假阴性的标准是不同的。例如,如果像素被错误校正,则前景不太理想,而像素被错误校正为背景。如何在设置损失函数时处理这种约束。
答案 0 :(得分:5)
您可以使用model.fit
的class_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