网站设计广州,做网站天津,做网站找谁,怎么利用互联网推广KL 散度的使用场景
KL散度( Kullback–Leibler divergence)#xff0c;又称相对熵#xff0c;是描述两个概率分布 P 和 Q 差异的一种方法
torch.nn.functional.kl_div(input, target, size_averageNone, reduceNone, reductionmean)
torch.nn.KLDivLoss(input, target, si…KL 散度的使用场景
KL散度( Kullback–Leibler divergence)又称相对熵是描述两个概率分布 P 和 Q 差异的一种方法
torch.nn.functional.kl_div(input, target, size_averageNone, reduceNone, reductionmean)
torch.nn.KLDivLoss(input, target, size_averageNone, reduceNone, reductionmean)第一个参数传入的是一个对数概率矩阵第二个参数传入的是概率矩阵。并且因为kl散度具有不对称性存在一个指导和被指导的关系因此这连个矩阵输入的顺序需要确定一下。如果现在想用Y指导X第一个参数要传X第二个要传Y。就是被指导的放在前面然后求相应的概率和对数概率就可以了。
所以一随机初始化一个tensor为例对于第一个输入我们需要先对这个tensor进行softmax确保各维度和为1然后再取log对于第二个输入我们需要对这个tensor进行softmax。
import torch
import 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, reductionmean)
print(kl_mean)