SparseCategoricalCrossentropy的from_logits参数探究

 

先看官方解释:

也就是说,

from_logits = False 表示输入进来的y_pred已符合某种分布, 系统只会帮你把概率归一化。比如把[ 0.2 , 0.6 ]变成[0.25, 0.75]

from_logits = True 表示是原始数据,系统会帮你做softmax后再进行计算

 

 

实验代码:

import tensorflow as tf
import math

y_true = [1, 1]
y_pred = [[0.05, 0.15, 0], [0.1, 0.8, 0.1]]
res1 = tf.keras.losses.SparseCategoricalCrossentropy(
        from_logits=False,
        reduction=tf.keras.losses.Reduction.SUM
        )(y_true,y_pred).numpy()

print('res1',res1) # res1 = 0.5108261   equas to  -(math.log(0.75)+math.log(0.8) )
 
###############################################

res2 = tf.keras.losses.SparseCategoricalCrossentropy(
        from_logits=True,
        reduction=tf.keras.losses.Reduction.SUM
        )(y_true,y_pred).numpy()

softmax = tf.nn.softmax(y_pred,axis=1)
print('softmax ',softmax.numpy())  # [[0.32718226 0.36159232 0.3112254 ]
                                   #  [0.24914338 0.50171316 0.24914338]]

print('res2',res2) # res2 = 1.7069646    equas to  -(math.log(0.36159232)+math.log(0.50171316) )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值