Pytorch使用KL散度

import torch.nn as nn

x = F.log_softmax(x)
y = F.softmax(y, dim=1)
criterion = nn.KLDivLoss()
klloss = criterion(x, y)

 

输入x :(自己生成的标签)需要经过log_softmax层,把概率分布变换到log上
输入y: (想要拟合到的目标分布)需要经过softmax层计算;

可能的错误:若输入的x或y的分布的概率之和不为1,则会出现KL散度值为负数的情况。

posted @ 2022-03-23 12:39  zxcayumi  阅读(636)  评论(0)    收藏  举报