Pytorch文档部分说明

1:关于冻结网络的部分参数的方法;Pl:此时可以让提取特征的卷积层进行冻结权重参数,使用已经训练好的参数 ; 而对于自定义的全连接层,仍然需要更新权重参数 ;
在这里插入图片描述

2:pytorch的广播运算:
一:先判断是否可以进行广播:
如果 pytorch 张量满足以下条件,那么就可以广播:
每个张量至少有一个维度。
在遍历维度大小时, 从尾部低维度开始遍历, 进行广播的tensor二者维度要么相同,要么其中一个为1,要么其中一个维度不存在 ; 违背以上原理不可进行广播;
在这里插入图片描述
二:可广播后计算的形式为:
在这里插入图片描述

3:有关torch的运算 ;

一:torch.eye(m , n )
生成一个m行n列的tensor,其中对角线为1,其他位置元素均为0 ;

二:torch.linspace(start , end , step)
返回一个从start->end 的step个数,其中是均匀生成 ;
在这里插入图片描述

三:torch.randperm(int n):
生成一个长度为n的随机数,范围是0-n-1的排列数 ;

插入“一个知识点,关于网络参数的说明”:
只有卷积层和全连接层包含参数,其他层次都不含有参数,且两个的参数名字分别是weight, biase ;其中参数名weight和biase对应的参数值是个多维度的tensor ;在全连接层中,参数名weight对应的参数值的维度是【输入数据的特征变量个数(影响因子个数),输出数据的特征变量个数】

四:torch.range(start , end , step);
生成从start ->end的,以start为开始的,步长为step的一维度tensor ; 默认步长是1 ;
在这里插入图片描述

五:torch.nonzero(input) ;
输入input是个多维度tensor
输出是tensor中每个非0元素的索引位置,一行输出一个索引位置;共两列
pl:
在这里插入图片描述

六:torch.mutinomial(intput , num_samples , replacement = ):
从输入的input张量中随机按列抽取num_samples的数,其中replacement是true时候代表可重复抽取 ;

七:torch.normal(mean , std)的用法:
输入: mean 和 std 分别是均值和方差的tensor , 两个tensor之间维度可以不一样,但必须保证个数一致 ; 此时,可以让mean或者std的tensor为一个数,这样就是共享方差或者均值 ;
输出:返回均值和方差对生成 的数 ;有多少均值和方差对,就有多少行数
pl:
在这里插入图片描述

八:torch.add(intput , value=‘实数’)
返回的tensor是input+value的值 ;
torch.add(input , value , other):
other和input的维度可以不保持一致,但是数量必须保持一致
返回的数据是:input+ value*other ;

torch,addcdiv(input , value , t1 , t2)的用法:
运算公式为: input + value*(t1/t2)
在这里插入图片描述

torch.ceil(input)
操作:对每个元素进行向上取整,即大于该元素的最小整数 ; torch.floor(input )则与之相反 ;

torch.frac(input_tensor):取tensor的小数部分 ;

torch.lerp(start , end , weight):
输入:start , end 是两个维度相同的tensor ,
输出:对两个tensor做线性插值 ;运算公式是:ouput = start_i+weight*(end_i – start_i)
Pl:在这里插入图片描述

torch.mul(input_tensor , value):
输入:value是个实数或者是个维度和输入一样的tensor ;
进行乘法运算,运算公式是 output = input*value ;

torch.reciprocal(input):
作用:将输入的tensor进行倒数 ;

torch.cumprob(input ,dim ):
输出:沿着dim指定的维度进行从头到尾的累积 ;
格式为:ouput_i = input_0 * input_1 *… *input_i
pl:在这里插入图片描述

torch.prod(input , dim )
返回:返回的是沿着指定维度的所有数的乘积 ;

torch.cumsum(input , dim ):
运算:是沿着指定的维度进行从头到下累加 ;

torch.dist(input , other , p)
输入:input 和 other是个维度相同的tensor , P是指定计算第几范数 ;
输出:返回的是 input - other的第P范数 ;

torch.norm(input , ord , dim)
输出:返回input的沿着指定维度的ord范数 ;

torch.median(input , dim):
输出:返回的一共有两个tensor ; 一个是指定维度的中位数 ,另一个是该中位数在该维度的索引; 在这里插入图片描述

torch.mode(input , dim)
返回的是指定维度的众数的还有该众数的索引;和上述一样,都是返回两个tensor ;

方法带有_ , 就是在原tensor上直接进行运算,运算结果直接保存在原有的tensor上,而不需要赋值给新的tensor ;
pl ; a = torch.addcdiv(input , weight , t1 , t2);此时直接是将运算的新结果保留在新的tensor a中 ;
input.addcdiv_(weight , t1 , t2):此时的结果是将运算结果将保留在原来的input_tensor中中 ;

tensor.index_fill_(dim , index , value):
输入:index是索引tensor , value是实数值 ;
运算操作:沿着指定的维度,在index索引上,将tensor的值代替为value的值 ;

tensor.index_select(dim , index)
输入:index是Longtensor类型的数据 ;
运算操作:沿着指定的维度,在index索引上选取数据 ;

tensor.narrow(dim , start , length缩小为多长)
运算操作:沿着指定的维度,缩小tensor , 将tensor在指定的维度缩小为start - > start+length ;
PL:
在这里插入图片描述

tensor.sacatter(dim , index , src_tensor)
输入:dim是指定的维度, index是位置,其行数与列数一定与src_tensor的维度保持一致 ;
运算操作:将src_tensor 中的数据按照dim 和 index限制,散列赋值到tensor 中 ;
PL:在这里插入图片描述

tensor.unfold(dim , size , step)
输入:tensor是源tensor , dim是沿指定的维度操作 ; size是沿指定的维度取数的个数, step是步长 ;
运算操作:从tensor 中,按照指定的维度方向,每次取size个数,这些数放在一行,然后再跨过step个数,继续重复此操作 , 最后剩余不够的数,不取 ;
PL:在这里插入图片描述

四:神经网络中部分函数的说明:
model.name_moudule()
返回该模型的名字还有该名字对应的组件 ;
PL:_1 = torch.nn.sequential(torch.nn.Conv2d(2,2,1))
则调用此函数返回的name就是0 , moudule就是 conv(2,2,1)

model.name_parameters()
返回该模型的参数名(卷积层以及连接层的参数名都有两个,weight和bias)和模型的参数名对应的参数值 ;
而调用此函数,输出的name应该是0.weight , 0.bias ; parameters是多维tensor ;

关于上采样和下采样的说明:
上采样就是利用转置卷积层对数据进行还原尺寸!不改变通道!可以用双线性差值法初始化权重参数 ;
下采样就是正常的卷积操作 ;

torch.AdaptiveAvgPool2(size_h_w):
自适应平均池化操作,输入自己定义的宽高的数据 ;即 batch_size channel h w ;

五:
关于更改参数模块的学习率的说明: 当达到里程碑为30,80次的训练的时候,优化器参数模块的学习率就衰减为原来的0.1 ;
在这里插入图片描述

torch.utils.data.Dataset
说明:这个类是实现 封装数据集 的类,实现该类的时候一定要实现方法
len 和 _getitem_方法 ; 其中_len_是实现定义数据集的大小 , _getitem(index)_是实现按照索引整取len的数据 ; 返回的是一个元组,包含图片数据和标签 ;

os.path.join(path1, path2 , path3)
作用:自动连接该目录,若该目录不存在,则自动创建该目录;
连接后的目录为:path1/path2/path3 ;

保存训练好模型的方法(主要就是保存该模型经过训练后的参数名还有参数值)
torch.save(model.state_dict() , ‘.pth’) 语句进行保存模型,保存后的形式为pth文件 ;model.statate_dict()主要就是将模型变成一个字典,字典的key是模型的参数名,value是模型的参数名对应的参数值 ; 当我们保存好模型后,用load(.pth)文件来加载该模型,将该pth文件变成一个字典,该字典的Key仍然是参数名,value仍然是参数名对应的参数值 ;

关于tensor的说明:tensor共有两种类别的tensor,需要计算梯度的tensor,和不需要计算梯度的tensor,中间用.detach()来进行转换;只有转化后才能将普通的tensor变成一个numpy’

注意:组件也有名字,容器也有名字,组件的名字默认为01234… 容器的名字是自己定义的
self.name = torch.nn.Sequential(各种组件) ;
name 就是该容器的名称; 组件的名字就默认为01234…
model.容器名,可以获得该容器中的所以组件 ;
pl: model = torchvision.models.vgg16()
model = model.feature
此时就可以获得Model中容器名字为feature所对应的所有组件 ;

关于transforms.Totensor和transforms.ToPilimage()的说明:
from Pil import Image
此时用Image.open(‘png,jpg等图片路径’)打开的图片都是PIL类型的;
然后可以用Totensor将其转换为tensor处理;处理后在将其变成PIL类型的图片 ; 此时可以用plt.imshow(pil或者numpy),plt.show()显示该图片;
关于plt.imshow(PIL / numpy) 的说明;其中传入的numpy维度必须是h,w,c ; 要么直接传入一个PIL类型的数据 ;

numpy.linalg.norm(input_numpy , ord , dim)
若ord = none的时候就求第二范数;
若dim = none的时候,就求所有组成的一个范数 ;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值