torch.matmul:
广播机制:
什么是广播呢?其实就是在运算中,Pytorch将较小的数组拉伸成较大数组的形状(shape),然后进行加减乘除不同矩阵的加减乘除运算。
就是说维度必须是那三种情况中的一种。
* :
a与b做*乘法,原则是如果a与b的size不同,则以某种方式将a或b进行复制,使得复制后的a和b的size相同,然后再将a和b做element-wise(对应元素相乘)的乘法。
* 高维张量:
import torch
a = torch.tensor([[1,2,3],[4,5,6]]).float()
b = torch.tensor([[0.5],[0.6]]).float()
print(a.size())
print(b.size())
print(a*b)
torch.Size([2, 3])
torch.Size([2, 1])
tensor([[0.5000, 1.0000, 1.5000],
[2.4000, 3.0000, 3.6000]])
@ 乘法:
import torch
a = torch.tensor([[1,2],[3,4]])
b = torch.tensor([1,1])
print(a@b)
a = torch.tensor([[[1,2],[3,4]]])
b = torch.tensor([1,1])
print(a@b)
tensor([3, 7])
tensor([[3, 7]])