使用Pytorch时遇到想要将矩阵进行自身叉乘的情况,例如输入数据size为[BS, 3]
,那么需要先将输入数据转换为[BS, 3, 1]
和[BS, 1, 3]
,这时叉乘结果size为[BS, 3, 3]
下面为二维矩阵的pytorch代码及结果:
import numpy as np
import torch
a = np.array([1, 2, 3])
a = torch.from_numpy(a)
a = a.unsqueeze(0)
a
1 2 3
[torch.IntTensor of size 1x3]
b = np.array([4, 5, 6])
b = torch.from_numpy(b)
b = b.unsqueeze(1)
b
4
5
6
[torch.IntTensor of size 3x1]
c = b*a
c
4 8 12
5 10 15
6 12 18
[torch.IntTensor of size 3x3]
下面为三维数据的叉乘:
m = np.array([[1, 2, 3], [1, 2, 3]])
m = torch.from_numpy(m)
m = m.unsqueeze(2)
m
(0 ,.,.) =
1
2
3
(1 ,.,.) =
1
2
3
[torch.IntTensor of size 2x3x1]
n = np.array([[4, 5, 6], [4, 5, 6]])
n = torch.from_numpy(n)
n = n.unsqueeze(1)
n
(0 ,.,.) =
4 5 6
(1 ,.,.) =
4 5 6
[torch.IntTensor of size 2x1x3]
res = m*n
res
(0 ,.,.) =
4 5 6
8 10 12
12 15 18
(1 ,.,.) =
4 5 6
8 10 12
12 15 18
[torch.IntTensor of size 2x3x3]