我建立了一个深度学习模型,该模型接受大小为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图像都有一个且只有一个标签:图像可以是狗或卡车,但不能同时是狗和卡车。