tf.keras.losses.SparseCategoricalCrossentropy 学习总结

SparseCategoricalCrossentropy是一个用于多类别分类的损失函数,它允许预期结果不使用onehot编码。from_logits参数决定是否在计算前对预测概率应用softmax。如果为False,会先做归一化;如果为True,则会执行softmax。reduction参数控制损失如何减少,可以选择none、sum或sum_over_batch_size。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此方法就是计算结果的交叉熵的,Sparse的含义就是指期望的结果不需要是onehot结果,只需要记录对应的准确记过位置即可,对应概率值是1不变。

例如:

y_true = [1, 2]
y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]]
#表示有三类结果(label0,lable1,label2),y_true的意思表示,期望的结果中索引下标为1的label的概率为1,下表为2的label的概率为1。此为稀疏表示法

SparseCategoricalCrossentropy有两个参数,分别为from_logits和reduction分别介绍:

from_logits参数:
  1. from_logits为False时,表示在计算交叉熵之前,此方法会对y_pred进行求和归一化操作,操作过程为:

y_pred=tf.math.divide(y_pred,tf.math.reduce_sum(y_pred,axis=-1,keepdims=True))

  1. from_logits为True时,表示在计算交叉熵之前,此方法会对y_pred进行softmax操作,操作过程为:

y_pred=tf.exp(y_pred) / tf.reduce_sum(tf.exp(y_pred), axis, keepdims=True)
#或则 y_pred=tf.math.softmax(y_pred)
reduction参数,参考(14条消息) keras.losses中 reduction=‘none‘的用法_muyuu的博客-优快云博客_reduction='none
  1. ‘none’:每个step位置的损失都单独保留。返回值的形状为:(batch_size, num_steps)其中,num_steps有可能不存在,对于RNN的往往存在

  1. ‘sum’:返回值 = 上述 batch_size*num_steps 个step位置的损失的和

  1. ‘sum_over_batch_size’:返回值 = 上述 batch_size× \times×num_steps 个step位置的损失的平均值,即 ‘sum’ 返回值 除以 batch_size× \times×num_steps

  1. ‘auto’:一般相当于 ‘sum_over_batch_size’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值