Pytorch 如何将火炬[N,1]和火炬[1,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 我想快速计算一下。你有什么想法吗? 谢谢你的帮助 如果我理解正确,你

我想用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
我想快速计算一下。你有什么想法吗?
谢谢你的帮助

如果我理解正确,你可以这样做:

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]])

非常感谢您!!!这正是我想做的。它运行良好,运行良好。非常感谢。没问题。那么请接受这个作为答案,把这个问题标记为已解决。很抱歉我迟到了。谢谢你的帮助!它非常简单,而且运行良好。