Pytorch 如何将火炬[N,1]和火炬[1,N]相乘?
我想用2个火炬向量a(形状[N,1])和B=a'(形状[1,N])相乘来计算一个矩阵(形状[N,N]) 当我使用Pytorch 如何将火炬[N,1]和火炬[1,N]相乘?,pytorch,torch,Pytorch,Torch,我想用2个火炬向量a(形状[N,1])和B=a'(形状[1,N])相乘来计算一个矩阵(形状[N,N]) 当我使用torch.matmul或torch.mm时,我得到了错误或A'A(形状[1,1]) 如果A表示为 A=[A_1,A_2,…,A_N]',我想计算一个矩阵C,它的(I,j)元素是 for i in range(N): for j in range(N): C(i,j) = a_i * a_j 我想快速计算一下。你有什么想法吗? 谢谢你的帮助 如果我理解正确,你
torch.matmul
或torch.mm
时,我得到了错误或A'A(形状[1,1])
如果A表示为
A=[A_1,A_2,…,A_N]'
,我想计算一个矩阵C,它的(I,j)元素是
for i in range(N):
for j in range(N):
C(i,j) = a_i * a_j
我想快速计算一下。你有什么想法吗?
谢谢你的帮助 如果我理解正确,你可以这样做:
A=torch.randint(0,5,5)
C=(A.view(1,-1)*A.view(-1,1)).to(torch.float)
它产生:
tensor([[ 1., 4., 3., 3., 0.],
[ 4., 16., 12., 12., 0.],
[ 3., 12., 9., 9., 0.],
[ 3., 12., 9., 9., 0.],
[ 0., 0., 0., 0., 0.]])
这相当于写:
D=火炬零点((5,5))
对于范围(5)中的i:
对于范围(5)内的j:
D[i][j]=A[i]*A[j]
其结果是:
张量([1,4,3,3,0.],
[ 4., 16., 12., 12., 0.],
[ 3., 12., 9., 9., 0.],
[ 3., 12., 9., 9., 0.],
[ 0., 0., 0., 0., 0.]])
您可以简单地执行以下操作:
导入火炬
A=火炬的随机数(0,5,3,2))
B=火炬的随机数(0,5,2,3))
A:
张量([[1,3],
[2, 1],
[1, 3]])
B:
张量([[1,0,3],
[3, 4, 1]])
C=A@B#python 3.5+
C:
张量([[10,12,6],
[ 5, 4, 7],
[10, 12, 6]])
非常感谢您!!!这正是我想做的。它运行良好,运行良好。非常感谢。没问题。那么请接受这个作为答案,把这个问题标记为已解决。很抱歉我迟到了。谢谢你的帮助!它非常简单,而且运行良好。