pytorch中的高效内存批处理成对KL发散

pytorch中的高效内存批处理成对KL发散,pytorch,tensor,information-theory,Pytorch,Tensor,Information Theory,给定一个批量张量S的维度BxD,其中每一行都是D维度上的概率分布,我想计算批量成对KL散度矩阵KL(维度BxB),使得KL[I,j]=KL-散度(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) 但是内存效率非常低。有没有办法更有

给定一个批量张量
S
的维度
BxD
,其中每一行都是
D
维度上的概率分布,我想计算批量成对KL散度矩阵
KL
(维度
BxB
),使得
KL[I,j]=KL-散度(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)
但是内存效率非常低。有没有办法更有效地计算这个矩阵

谢谢