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

Wae*_*Eid 4 machine-learning deep-learning keras

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

Jul*_*yes 5

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

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