Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
深度学习框架编程:如何完成张量的初等运算(pytorch),希望能够帮助你!!!。
相加+或者add
import torch
import numpy as np
a=torch.rand(16,3,28,28)
b=torch.rand(1,3,28,28)
print(a+b)
import torch
import numpy as np
a=torch.rand(16,3,28,28)
b=torch.rand(1,3,28,28)
print(torch.add(a,b))
相减sub -
相乘mul * 对位相乘
除div /
矩阵的真实相乘
torch.matmul
以上是2维矩阵相乘,高维矩阵相乘是这样的:
这是四维矩阵的相乘,需要注意的是,即使是四维矩阵相乘,其实质也是最后两个维度相乘,也就是(4,784)*(784,8)=(4,8),而前面两个维度不动,注意前两个维度必须要一样
转置
二维的t()
高维的transpose
在pytorch中参数w的维度是(输出维度,输入维度)
也就是说输入x*w的转置=输出维度
这个表示将全连接层的4*784的输入降维到4*512,那么需要一个参数矩阵
(4,784)*(784,512)=(4,512)
那么参数矩阵就是(784,512),但是有一点需要注意pytorch中参数矩阵w的输入维度和输出维度相反,也就是w我们定义为(512们84),所以需要转置
import torch
import numpy as np
a= torch.full([3,3],3)
print(a.pow(2))
print(a**2)
print(a**(0.5))
print(a.sqrt())
print(a.rsqrt())
torch.full([3,3],3)表示建立一个3*3的矩阵,元素全是3
a.pow(2)表示对a进行2次方等价于a**2
a**(0.5)表示对a进行开根号等价于a.sqrt()
rsqrt表示对a进行开根号并求倒数
e次方根
import torch
import numpy as np
a=torch.exp(torch.ones(2,2))
取以e为底的对数
import torch
import numpy as np
a=torch.exp(torch.ones(2,2))
print(torch.log(a))
取以2为底的log2,取以10为底的log10
import torch
import numpy as np
a=torch.tensor(3.14)
print(a.floor()) 向下取整
print(a.ceil()) 向上取整
print(a.trunc())获取a的整数部分
print(a.frac())获取a的小数部分
print(a.round())四舍五入
逐元素操作,此类操作的输入与输出形状一致
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章