pytorch - pytorch中的内存高效批量成对KL散度
问题描述
给定一个 Batch 张量S
维度BxD
,其中每一行都是维度上的概率分布D
,我想计算成对的 KL 散度矩阵KL
(维度BxB
),使得KL[i,j] = KL-DIVERGENCE(S[i],S[j])
.
这有效:
softmax = torch.nn.Softmax(dim = 1)
B,D = 100, 1000
S = softmax(torch.rand(B,D))
KL = torch.mean(S[:,None,:] * (S[:,None,:]/S).log(),dim = 2)
但是内存效率很低。有没有办法更有效地计算这个矩阵?
谢谢。
解决方案
推荐阅读
- excel - 如何在 Excel 公式中使用 Excel 文本框中的输入值
- sql - Firebird 程序中的错误
- voltdb - VoltDB 支持 SELECT FOR UPDATE 吗?
- python - 带有 __aexit__ 的键盘中断
- makefile - openSUSE 15:无法使用 Makefile 进行链接
- python-3.x - 使用 nginx 扭曲的代理破折号导致“加载布局错误”
- android - 当我使用已弃用的 api 时,Android Studio 3.1.3 不显示任何错误
- java - 使用 slf4j + log4j 和 dropwizard
- python - python:无法打开文件“帮助”:[Errno 2]没有这样的文件或目录
- audio-processing - librosa中音频样本的单位是什么?