关于数学运算
2022/1/31 23:17:33
本文主要是介绍关于数学运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
加、减、乘、除
这里直接用 符号 + - * / 就可以运算,结果和用函数是一样的,不过都要满足能运算的条件,满足broadcasting,
a = torch.rand(3,4) b = torch.rand(4) c1 = a + b c2 = torch.add(a,b) d = torch.all(torch.eq(a-b,torch.sub(a,b))) #判断两种方法是否殊途同归 e = torch.all(torch.eq(a*b,torch.mul(a,b))) f = torch.all(torch.eq(a/b,torch.div(a,b))) print(c1,'\n',c2),print(d),print(e),print(f)
矩阵相乘
三种方法:
torch.mm : 只适用于二D的 tensor
torch.matmul :适合所有的 tensor
@ :和上一个一样,只不过更简洁,直接乘
a = torch.tensor([[3.,3.],[3.,3.]]) b = torch.ones(2,2) o = torch.mm(a,b) p = torch.matmul(a,b) q = a @ b print(a,'\n',b,'\n',o,'\n',p,'\n',q)
关于降维
x = torch.rand(4,784) w = torch.rand(512,784) #要降维,pytorch中,第一个是output,第二个是input, z = ( x @ w.t() ) #所以要转置在相乘降维->(4,512) print(z.shape) #.t只适用于二D,以上要用transpose转换
关于matmul 的矩阵相乘
a = torch.rand(4,3,28,64) b1 = torch.rand(4,3,64,32) b2 = torch.rand(3,64,32) #matmul矩阵相乘是后两个维度乘,其他不变,能使用broadcasting c1 = torch.matmul(a,b1) #其实就是支持多个矩阵对并行相乘 c2 = torch.matmul(a,b2) print(c1.shape),print(c2.shape)
pow 、sqrt、rsqrt
三种方法对应
pow:指定tensor的次方,两种方式,
1、a.pow(次方 )
2、pow(a, 次方)
sqrt:开方,a.sqrt()
rsqrt:开方后的倒数
使用**也可以达到三种方法任意一种的效果
a = torch.full([2,2],3) b = pow(a,2) c = a.pow(2) aa = a**2 #乘方 o1 = aa.sqrt() o2 = aa**(1/2) #开方 p1 = aa.rsqrt() p2 = aa**(-1/2) #开方倒数 print(b,'\n',c,'\n',aa),print(o1,'\n',o2) print(p1,'\n',p2)
exp、log
exp表示对tensor进行e的次方
log默认底数为e,可以选择log2,log10
a = torch.exp(torch.tensor([[0,1],[2,3]])) b = torch.log(a) c = torch.tensor([4,8,16]) c1 = torch.log2(c) print(a),print(b),print(c1)
近似取值方法
a.floor()表示对a向下取整
a.ceil()表示对a向上取整
a.trunc()表示对a 取整数部分
a.frac()表示对a 取小数部分
a.round()表示对a 四舍五入
a = torch.tensor(3.14) a1 = a.floor() a2 = a.ceil() a3 = a.trunc() a4 = a.frac() b = torch.tensor(3.4999) b1 = b.round() #四舍五入 c = torch.tensor(3.5) c1 = c.round() print(a1,'\n',a2,'\n',a3,'\n',a4) print(b1,'\n',c1)
梯度裁剪
a.calmp( )
如果只给出一个值,相当于是最小值,a 中所有小于这个值的都变为这个值,其他不变
如果给两个值,表示限定在这个区间内,小于小的都变成小的,大于大的都变为大的 >-<
grad = torch.rand(2,3)*15 a = grad.max() #表示grad中最大值 b = grad.median() #表示中间值 c = grad.clamp(5,11) print(a),print(b),print(c)
这篇关于关于数学运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?