KLDivLoss学习

参照pytorch官网教程,了解了一下KL散度的调用方法,做个记录。
https://pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html

计算公式:
在这里插入图片描述
而调用代码时torch.nn.KLDivLossF.kl_div是一样的,前者是一个类,在实现方法里调用了后者方法。

To avoid underflow issues when computing this quantity, this loss
expects the argument input in the log-space. The argument target may
also be provided in the log-space if log_target= True

需要传两个参数KLDivLoss(input,target)。这里是用targlet指导input。上面说明了input在传进去之前,需要做一个log处理,很关键。传了log之后,就不再是softmax的概率和为1了,相当于log softmax都成了负数。而target传与不传log后的都可以,有个target_log参数,默认为False。然后执行下述计算。
在这里插入图片描述
计算方法严格按照公式来,只是target是否是log,导致计算方式不同。

官方例子很清楚:
在这里插入图片描述
默认就是将input处理为log softmax型,而target保持原softmax概率分布,用target指导input(虽然变为了log,但只是为了计算,指导的还是变之前的概率分布)。或者target也变为了log,需要用log_target声明。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值