keras 中像素级二进制分类的最佳损失函数
Posted
技术标签:
【中文标题】keras 中像素级二进制分类的最佳损失函数【英文标题】:The best loss function for pixelwise binary classification in keras 【发布时间】:2018-04-09 05:24:23 【问题描述】:我建立了一个深度学习模型,它接受大小为 250*250*3 的图像并输出 62500(250*250) 二进制向量,其中包含代表背景的像素中的 0 和代表 ROI 的像素中的 1。 我的模型基于 DenseNet121,但是当我在最后一层使用 softmax 作为激活函数和分类交叉熵损失函数时,损失为 nan。 我可以在模型中使用的最佳损失和激活函数是什么? 二元交叉熵和分类交叉熵损失函数有什么区别? 提前致谢。
【问题讨论】:
【参考方案1】:使用我可以在我的模型中使用的最佳损失和激活函数是什么?
binary_crossentropy
,因为每个输出都是独立的,不互斥并且可以取值0或1,在最后一层使用sigmoid
。
查看这个有趣的question/answer
二元交叉熵和分类交叉熵损失函数有什么区别?
Here 是该问题的一组很好的答案。
编辑1:我的错,使用binary_crossentropy
。
在快速查看code(再次)后,我可以看到 keras 使用:
为binary_crossentropy
-> tf.nn.sigmoid_cross_entropy_with_logits
为(From tf docs):测量离散分类任务中的概率误差,其中每个类独立且不互斥。例如,可以执行多标签分类,其中一张图片可以同时包含大象和狗。
categorical_crossentropy
-> tf.nn.softmax_cross_entropy_with_logits
(From tf docs):测量类别互斥的离散分类任务中的概率误差(每个条目恰好属于一个类别)。例如,每张 CIFAR-10 图像都标有一个且只有一个标签:图像可以是狗或卡车,但不能同时是两者。
【讨论】:
因为他的输出只有一个通道,Bachground x Foreground,应该是binary_crossentropy
。以上是关于keras 中像素级二进制分类的最佳损失函数的主要内容,如果未能解决你的问题,请参考以下文章