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散度值为负数的情况。

浙公网安备 33010602011771号