행렬로 곱셈을 하는 방법은 크게 두 가지가 있다.
바로 행렬 곱셈(.matmul)과 원소 별 곱셈 (element-wise 곱셈) (.mul)입니다.
행렬 곱셈
m1 = torch.FloatTensor([[1, 2], [3, 4]])
m2 = torch.FloatTensor([[1], [2]])
print(m1.matmul(m2)) # 2 x 1
결과
tensor([[ 5.],
[11.]])
원소 별 곱셈 (element-wise 곱셈)
서로 다른 크기의 행렬이 브로드캐스팅이 된 후에 element-wise 곱셈이 수행
이는 * 또는 mul()을 통해 수행
m1 = torch.FloatTensor([[1, 2], [3, 4]])
m2 = torch.FloatTensor([[1], [2]])
print(m1 * m2) # 2 x 2
print(m1.mul(m2))
결과
tensor([[1., 2.],
[6., 8.]])
tensor([[1., 2.],
[6., 8.]])
평균
t.mean(dim=0)
=> 다시 말해 행렬에서 '열' 개념만을 남기겠다는 의미
[[1., 2.],
[3., 4.]]