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

时间:2017-10-27 14:51:22

标签: machine-learning deep-learning keras

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

1 个答案:

答案 0 :(得分:3)

  

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

  • 使用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图像都标有一个且只有一个标签:图像可以是狗或卡车,但不能同时使用两者。