最近在利用卷积神经网络跑模型的时候,总会出现一些奇奇怪怪的问题,而其中出现次数最多的就是loss值计算方式选择错误问题。在tensorflow中封装的loss值的计算方式有三种:BinaryCrossentropy,SparseCategoricalCrossentropy,CategoricalCrossentropy。下面简单说一下这三种计算方式适用于什么场合?
1.BinaryCrossentropy
常用于二分类问题,当然也可以用于多分类问题,通常需要在网络的最后一层添加sigmoid进行配合使用,其期望输出值(target)需要进行one-hot编码。
2.SparseCategoricalCrossentropy
tf.keras.losses.SparseCategoricalCrossentropy(
from_logits=False, reduction=losses_utils.ReductionV2.AUTO,
name='sparse_categorical_crossentropy'
)
如果目标是数字编码 ,比如多分类0,1, 2, 3,损失函数用 sparse_categorical_crossentropy。
3.CategoricalCrossentropy
tf.keras.losses.CategoricalCrossentropy(
from_logits=False, reduction=losses_utils.ReductionV2.AUTO,
name='categorical_crossentropy'
)
如果目标是one-hot 编码,比如二分类【0,1】【1,0】,损失函数用 categorical_crossentropy。这一点与BinaryCrossentropy方法类似。
努力加油a啊