搭建基础网络结构
调参方法及技巧
动态图:编好程序即可执行
静态图:先搭建好计算图,后运行,允许编译器进行优化;代码编程复杂,调试不直观
pytorch基于动态图,编程简单,但是部署起来比较麻烦
张量
张量就是多个矩阵的复合拼接,多个矩阵的组合,样本就是Tensor
类型、创建、属性、运算、操作、numpy的相互转换
九种数据类型:float(int)64[double long]\32[float int]\16[half short]、uint8、int8、bool
创建方式:
特殊常用Tensor:zeros(ones,eyes)_like(),rand(*size),normal()进行参数的初始化,torch.Tensor(2,3).uniform(-1,1) 先定义好尺寸,再定义范围;生成序列torch.arange(0,11,1);拿到等间隔n个序列torch.linspace(0,10,4)
属性:torch.dtype(device\layout–>内存布局的对象)三种属性
稠密张量定义:
torch.tensor([1,2,3],dtype=torch.float32,device=torch.device('cpu'))
稀疏张量的定义:
表示数据中非零元素的个数,使模型变得简单,传入的是非零元素的坐标值,减少内存,采用torch.sparse_coo_tensor来定义,coo类型表示了非零元素的坐标形式
indices=torch.tensor([[0,1,1],[2,0,2]])
value=torch.tensor([3,4,5],dtype=torch.float32)
x=torch.sparse_coo_tensor(i,v,[2,3])
Tensor的算数运算
c=a+b
c=torch.add(a,b)
a.add(b)
a.add_(b)#会对a的值进行修改
#哈达玛积:对应元素相乘
c=a*b
c=torch.mul(a,b)
a.mul(b)
a.mul_(b)
c=a/b
c=torch.div(a,b)
a.div(b)
a.div_(b)
#二维矩阵运算torch.mm() torch.matmul()、@
a=torch.ones(2,1)
b=torch.ones(1,2)
print(torch.mm(a,b))
torch.matmul(a,b)
a@b
a.matmul(b)
a.mm(b)
#高维矩阵运算
a.matmul(b)
torch.matmul(a,b)
#幂运算
torch.pow(a,2)
a**2
a.pow_(2)
torch.exp(a)
a.exp_()
#开方运算
a.sqrt()
a.sqrt_()
#对数运算
torch.log2(a)
torch.log(a)
torch.log_(a)
in-place操作
就地操作,即不允许使用临时变量,也称原位操作
x=x+y
add_、sub_、mul_等等
广播机制:张量参数可以自动扩展为相同大小
广播机制需要满足两个条件:
1)每个张量至少有一个维度
2)满足右对齐
3)torch.rand(2,1,1)+torch.rand(3)
()这个详细
.floor() 向下取整
.ceil() 向上取整
.round()四舍五入
.trunc() 保留整数部分
.frac() 保留小数部分
% 取余
Tensor的比较运算
torch.eq(input,other,out=None)#按成员进行等式操作,相同返回True
.equal(tensor1,tensor2)#如果两个有相同的size和elements,则为true
.ge()
.gt()
.le()
.lt()
.ne()
.sort(input,dim=None,descending=False,out=None)#对目标input进行排序
.topk(input,k,dim=None,largest=True,sorted=True,out=None)#沿着指定维度返回最大k个数值及其索引值,loss的时候会用到,维度就是shape的代表值,dim=0代表列排序,dim=1是行排序
.kthvalue(input,k,dim=None,out=None)#沿着指定维度返回第k个最小值及其索引值
.isfinite(tensor)/.isinf()/.isnan()#分别判断是否为finite、inf、nan,返回的是一个mask张量
Tensor的三角函数
Tensor中的其他数学函数
.abs()\.sign()\.erf()\.lerp()\.erfinv()\.addcdiv\.sigmoid()\.addcmul()\.neg()\.cumprod()\.reciprocal\.cumsum()\.rsqrt()
Tensor中统计学相关函数
.mean()\.sum()\.prod-->计算所有元素的积\torch.max()\torch.min\torch.argmax()-->返回排序中最大值的索引\torch.argmin()
#可以添加维度
torch.std(a,dim=)#返回标准差
torch.val()#返回方差
torch.median()#返回中间值
torch.mode()#返回众数值
torch.histc()#计算input的直方图
torch.bincount()#返回每个值的频数,只针对一维的tensor