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)
但是内存效率非常低。有没有办法更有效地计算这个矩阵
谢谢