Pytorch——数学运算

加减乘除

      • /以外:
torch.add(a,b)
sub
mul
div

matmul

*号只是矩阵对应位置元素相乘
matmul是matrix mull
三种方法实现

Torch.mm

only for 2d

Torch.matmul

torch.matmul(a,b)
还是只有最后两维进行运算,前面的使用broadcasting进行扩展,但是size大小得一样

a=torch.rand(4,3,28,64)
b=torch.rand(4,1,64,32)
torch.matmul(a,b).shape

c=torch.rand(4,64,32)
torch.matmul(a,c).shape
---------------------------------------------------------------------------

RuntimeError                              Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_27688/2168653215.py in <module>
      4 
      5 c=torch.rand(4,64,32)
----> 6 torch.matmul(a,c).shape

RuntimeError: The size of tensor a (3) must match the size of tensor

@

a@b

次方运算

a=torch.full([2,2],3)
a.pow(n)
a**(n) # n次方

sqrt() # 平方根
rsqrt() # 平方根的倒数

exp log

a=torch.exp(torch.ones(2,2))
print(a)

torch.log(a)  
tensor([[2.7183, 2.7183],
        [2.7183, 2.7183]])

tensor([[1., 1.],
        [1., 1.]])

log2():以2为底
log10()

近似值

floor():下取整
ceil():上取整
trunc():取整数
frac():取小数

round():四舍五入

clamp

clamp(n):小于n的都取n
clamp(n,m):取n~m之间的,小于n取n,大于m取m