Moj*_*ili 8 machine-learning pytorch
我有两个概率分布。如何在PyTorch中找到它们之间的KL差异?常规互熵仅接受整数标签。
jdh*_*hao 12
是的,PyTorch有一个名为方法kl_div下torch.nn.functional到张量之间的直接计算KL-devergence。假设您有张量a并且b形状相同。您可以使用以下代码:
import torch.nn.functional as F
out = F.kl_div(a, b)
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参见上面的方法文档。
小智 11
functionkl_div与wiki的解释不同。
我使用以下内容:
# this is the same example in wiki
P = torch.Tensor([0.36, 0.48, 0.16])
Q = torch.Tensor([0.333, 0.333, 0.333])
(P * (P / Q).log()).sum()
# tensor(0.0863), 10.2 µs ± 508
F.kl_div(Q.log(), P, None, None, 'sum')
# tensor(0.0863), 14.1 µs ± 408 ns
Run Code Online (Sandbox Code Playgroud)
相比kl_div,甚至更快
如果你有两个pytorch distributionobject形式的概率分布。那么您最好使用该功能torch.distributions.kl.kl_divergence(p, q)。有关文档,请点击链接
| 归档时间: |
|
| 查看次数: |
9333 次 |
| 最近记录: |