700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 各种损失损失函数的使用场景和使用方法:KL散度

各种损失损失函数的使用场景和使用方法:KL散度

时间:2018-12-02 04:22:34

相关推荐

各种损失损失函数的使用场景和使用方法:KL散度

KL 散度的使用场景

KL散度( Kullback–Leibler divergence),又称相对熵,是描述两个概率分布 P 和 Q 差异的一种方法

torch.nn.functional.kl_div(input, target, size_average=None, reduce=None, reduction='mean')torch.nn.KLDivLoss(input, target, size_average=None, reduce=None, reduction='mean')

第一个参数传入的是一个对数概率矩阵,第二个参数传入的是概率矩阵。并且因为kl散度具有不对称性,存在一个指导和被指导的关系,因此这连个矩阵输入的顺序需要确定一下。如果现在想用Y指导X,第一个参数要传X,第二个要传Y。就是被指导的放在前面,然后求相应的概率和对数概率就可以了。

所以,一随机初始化一个tensor为例,对于第一个输入,我们需要先对这个tensor进行softmax(确保各维度和为1),然后再取log;对于第二个输入,我们需要对这个tensor进行softmax。

import torchimport torch.nn.functional as Fa = torch.tensor([[0,0,1.1,2,0,10,0],[0,0,1,2,0,10,0]])log_a =F.log_softmax(a)b = torch.tensor([[0,0,1.1,2,0,7,0],[0,0,1,2,0,10,0]])softmax_b =F.softmax(b,dim=-1)kl_mean = F.kl_div(log_a, softmax_b, reduction='mean')print(kl_mean)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。