keras中逐像素二进制分类的最佳损失函数



我建立了一个深度学习模型,该模型接受大小为250*250*3的图像,并输出62500(250*250)二进制矢量,该矢量包含代表背景的0像素和代表ROI的1像素。我的模型是基于DenseNet121的,但当我使用softmax作为最后一层的激活函数和分类交叉熵损失函数时,损失是nan。我可以在我的模型中使用的最佳损失和激活函数是什么?二进制交叉熵和分类交叉熵损失函数之间的区别是什么?提前谢谢。

我可以在模型中使用的最佳损失和激活函数是什么?

  • 使用binary_crossentropy,因为每个输出都是独立的,而不是互斥的,并且可以取值0或1,在最后一层使用sigmoid

查看这个有趣的问题/答案

二进制交叉熵和分类交叉熵损失函数之间的区别是什么?

这是这个问题的一组很好的答案。

编辑1:我的坏,使用binary_crossentropy

快速查看代码后(再次),我可以看到keras使用:

  • 对于binary_crossentropy->tf.nn.sigmoid_cross_entropy_with_logits

    (来自tf-docs):测量离散分类任务中的概率误差,其中每个类是独立的,而不是互斥的。例如,可以执行多标签分类,其中图片可以同时包含大象和狗。

  • 对于categorical_crossentropy->tf.nn.softmax_cross_entropy_with_logits

    (来自tf-docs):测量类互斥的离散分类任务中的概率误差(每个条目正好在一个类中)。例如,每个CIFAR-10图像都有一个且只有一个标签:图像可以是狗或卡车,但不能同时是狗和卡车。

最新更新