71513


torch形式のベクトルA(サイズ[N,1])とB=A'(サイズ[1,N])を掛け合わせてサイズ[N,N]の行列を算出したいと考えています。  
しかし`torch.matmul`や`torch.mm`ではエラーが出てきてしまうか、A'A(サイズ[1,1])が出てきてしまいます。

`A = [a_1, a_2, ..., a_N]'`とすれば算出したい行列Cの(i,j)成分は

[code]

    for i in range(N):
         for j in range(N):
           C(i,j) = a_i * a_j
    
[/code]

となりますが、できれば高速にこの計算を行いたいです。何か良い方法はないでしょうか。  
よろしくお願い致します。


CC BY-SA 4.0
2020-10-26T01:00:33.190
71505
2020-10-26T05:33:43.660
30785
question
python python3 pytorch
torchにおけるサイズ[N,1]と[1,N]の掛け合わせ方


torch 1.6.0で`matmul`も`mm`も動作しているように思います。

[code]

    >>> import torch
    >>> a = torch.randn(3, 1)
    >>> b = torch.randn(1, 3)
    >>> a.size()
    torch.Size([3, 1])
    >>> b.size()
    torch.Size([1, 3])
    >>> torch.matmul(a, b)
    tensor([[ 0.0096,  0.3664,  0.2490],
            [-0.0145, -0.5553, -0.3773],
            [ 0.0282,  1.0820,  0.7353]])
    >>> torch.mm(a, b)
    tensor([[ 0.0096,  0.3664,  0.2490],
            [-0.0145, -0.5553, -0.3773],
            [ 0.0282,  1.0820,  0.7353]])
    >>> torch.matmul(b, a)
    tensor([[0.1896]])
    
[/code]


CC BY-SA 4.0
2020-10-26T05:33:43.660
71513
2020-10-26T05:33:43.660
241
71505
answer