pytorch

动漫资讯时间:2024-04-29 11:21:19点击:2244
是一个针对深度学习,并且使用GPU和CPU来优化的张量库教程英文:://.org/docs//.html中文:官方教程中文版-官方教程中文版·中文文档中文网-端到端深度学习框架平台://-cn..io/zh//http://www..com/中文文档-/Dive-into-DL-:本项目将《动手学深度学习》(DiveintoDeep)原书中的实现改为实现。
Dive-into-DL-
://zh-v2.d2l.ai/d2l-zh-pytorch.pdf
《动手学深度学习》-动手学深度学习2.0.0-官网上也给出了相应的中文文档链接。其它个人笔记CSDN-专业IT技术社区-登录
笔记(02)-常用创建方法(.ones、eye、rand、new)资源列表://.com//Aw--list下载安装想使用第一步当然要进行下载安装的啦在官网提示的命令安装即可如果需要安装之前版本的只需要点击of进入相应的页面选择相应的版本按照相应的命令进行安装即可,比如想安装1.8.1版本的
#CUDA11.3==1.8.1==0.9.1==0.8.1=11.3-c-c-
如何保存加载模型及.pt,.pth,.pkl的区别保存模型
#方法一.save(.(),'.pth')#只保存模型参数,不保存模型#方法二.save(,'.pth')#保存模型参数以及模型
加载模型
#方法一.(.load('.pth'))#需要先进行网络模型的类定义#方法二=.load('.pth')
.pt,.pth,.pkl的区别常见保存模型的后缀名为.pt,.pth.pkl文件,其实这些文件没什么不同,在官方的文档代码里,有用.pt的,也有用.pth的。一般惯例是使用.pth,我的理解是这个只是一个后缀名,用其它的也都行,比如.等等。现在也可以保存相应的.pth.tar文件,这样.load的时候需要load个.pth.tar模型当然也可以直接改一下后缀名为.pth只导入部分模型参数
path='xxx.pth'=Net()=t.load(path)=.()={k:vfork,vin.()ifkin.keys()}(.keys())#(['w','.','.bias','.','.bias']).().()
中和type的区别是,如.和.,而type是一个的type如.,.,所以可以有下面两种形式
x=.([[1],[2],[3]],=.)x=.([[1],[2],[3]]).type(.)
中和的区别【】和的区别_玄云飘风的博客-CSDN博客和如何使用搭建一个简单的模型未完成中使用和工作流程:实例讲解具体工作流程_缦旋律的博客-程序员信息网-程序员信息网
:中的迭代器和生成器应用详解_简帛阁同时加载多个:
fromin():foridx,datain(zip((),))(data)
使用同时加载多个.的博客-CSDN博客多个
:【】多个数据集结合读取2、模型相互转换使用,存储模型中字典中的key值不一样,转换成新模型
=.()=.load('.pth')=.load('.pth')=list(.keys())i=0forkey,in.():[key]=[[i]]i=i+1.save(,'.pth')
3、进行多GPU并行训练
=.('cuda'if.cuda.()else'cpu')=(=True,=)=nn.(,=[0,1])=.to().()#训练的时候=0,1-u..log21
将并行后的网络打印出来就会发现的的key值加上了“”4、中状态字典及模型参数5、模型参数赋值保存加载模型中实现只导入部分模型参数的方式/张生荣
:加载预训练模型中的部分参数,并固定该部分参数(真实有效)
没头脑:[日常]预训练模型,保存,读取和更新模型参数以及多GPU训练模型
Mark保存模型与加载模型

加载多GPU模型和单GPU模型的博客-CSDN博客6、的可重复性问题如果需要复现相应的网络精度,那么就需要进行设置相应的随机种子。
def(seed=2018).seed(seed)os.['']=str(seed)np..seed(seed).(seed).cuda.(seed)...=(seed).(seed)os.['']=str(seed).cuda.(seed).cuda.(seed)np..seed(seed).seed(seed)...=...=...=(20)
7、小技巧的一些总结8、数据预处理、正则化9、使用实现切换cuda、版本10、中的学习率调整函数中的学习率调整函数-慢行厚积-博客园
..:调整学习率的博客-CSDN博客
中的学习率衰减及其用法1、使用余弦退火()学习率的好处:使用余弦退火学习率逃离局部最优点--快照集成()在上的应用
学习率衰减之余弦退火()_我就是超级帅的博客-CSDN博客_余弦退火2、+余弦退火:学习率+余弦退火11、下载旧版本的下载旧版本兴趣教员的博客-CSDN博客老版本各个版本下载地址大全-Y的博客-CSDN博客下载12、中默认数据类型是,中默认是,而如果通过直接进行转换的话就是可以在数据后面加上.(np.)13、混合精度训练-混合精度训练_周先森爱吃素的博客-CSDN博客混合精度
半精度和全精度训练_鸡啄米的时光机的博客-CSDN博客半精度训练
:【】唯快不破:基于Apex的混合精度加速
amp混合精度训练相关
训练提速60%!只需5行代码,1.6即将原生支持自动混合精度训练
14、减小显存开销有什么节省显存的小技巧
减小显存消耗,优化显存使用,避免outof
有什么节省内存(显存)的小技巧
【问题探究】如何解决训练时的显存占用递增(导致outof)
有哪些坑/bug
15、16、中各种数据类型相互转换17、
18、.((h,w))中分别是高和宽不和cv2.一样图像读进来是(H,W,C)通过可以直接变成(C,H,W)19、.函数人在旅途中.()函数
.()的官方解释,详解以及例子的博客-CSDN博20、多进程分布式训练多进程分布式训练最简单最好用的实施办法_我的博客有点东西-CSDN博客
多进程在单卡上测试
多进程分布式训练实战21、模型转onnx龟壳分类模型转onnx以及onnx模型推理
模型转ONNX模型_不忘初心~-CSDN博客模型转onnx
模型转onnx遇到的问题记录.
onnx中的动态输入和动态输出问题:ONNX动态输入和动态输出问题|码农家园
如何将模型转ONNX格式并使用推理:
如何将模型转ONNX格式并使用推理-云社区-华为云22、卷积与反卷积卷积卷积的公式为:=(+2*-\)/+1
如果在加上相应的空洞卷积公式就是=(+2*-(\-1)-1)/+1,这里的空洞的值可以理解成卷积核中每个元素被使用(近似与步长的定义),比如为2时:
如果高和宽不一样的话,可以参考一下官方文档-1.10.0中的计算公式反卷积反卷积在中为.nn.,又叫转置卷积反卷积的公式为:=(-1)*-2*+\
如果加上空洞卷积以及公式就是=(-1)*-2*+*(\-1)+1+\卷积=2,=1,=4:反卷积=1,=3,=2:反卷积=0,=3,=2:关于更多可视化卷积和反卷积的请参考:://.com//co/blob//.md
反卷积论文:://www..com//.pdf关于反卷积我的理解是:原始输入中间插入的空格数为-1,边上的新的值为--1,如果加上的话就是*(-1)-颠末实际验证在反卷积过程中卷积核做了一次逆序然后又进行了相应的卷积
([[[[1.,2.],[3.,4.]]]])([[[[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]]]])Y=F.(X,C,=2,=0)([[[[1.,2.,5.,4.,6.],[4.,5.,14.,10.,12.],[10.,14.,36.,24.,30.],[12.,15.,34.,20.,24.],[21.,24.,55.,32.,36.]]]])
中.nn.函数详解的博客-CSDN博客
中反卷积.nn.()的使用的博客-CSDN博客
双线性插值法和nn..()_关于背包问题动态规划代码的理解和应用---CSDN博客
绿三丁:手推反卷积
中的卷积与反卷积详解(和)的专栏-CSDN博客反卷积23、计算图像梯度并作为图像梯度损失训练网络计算图像梯度并作为图像梯度损失训练网络的博客-CSDN博客24、nn.(*)容器的博客-CSDN博客25、中的动态图和自动微分DL-:一文详解的“动态图”与“自动微分”技术26、中view、函数使用进行转置的时候可以进行多维度的转置而只能够进行两个维度的转置。使用view的时候要求的()即内存地址必须要是连续的,而不用,因为等价于先()再view()。虽然以上四个函数都能够改变的的维度大小但是,和只是改变了观察的视角就是进行了真正的转置比如行变成了列,列变行啥的,但是view和是按照相应的顺序进行变化的,按照数据从头到尾排列然后按照你想的维度进行输出出来。胡孟之函数两大转置函数()和(),以及:2:viewsizeisnot布局函数.view()和.(),以及()为何存在的博客-CSDN博客27、.常用操作.exp.log.log2.()向下取整.ceil()向上取整.()取整数部分.frac()取小数部分.()四舍五入部分.mul和*操作符号是一致的,都是点乘。.mm是矩阵乘法,比如m*k与k*n矩阵相乘,成果是m*n,只能是两维.是.mm的版本,可以处理第一维度为的乘法,可以是多维推荐使用28、的作用一般是将网络中的参数保存成形式的,这里的参数一共两种,一种是模型中各种含的参数,即nn.,我们当然可以在网络中定义其他的nn.参数,另一种就是,前者每次.step会得到更新,而不会更新后者。其实也就是向模块添加持久缓冲区例如的不是一个参数,而是持久状态的一部分,缓冲区可以使用给定的名称作为属性访问。参考:模型中的与
中()29、中的各种归一化常用函数-慢行厚积-博客园
四种归一化方法BN,LN,IN,GN的比较的博客-CSDN博客
深度学习中的五种归一化(BN、LN、IN、GN和SN)方法简介_修行之路-CSDN博客_gn是什么意思
,,和总结
学习之归一化层()敏-CSDN博客不看必进坑~不论是训练还是部署都会让你踩坑的-极市社区
的个人解读和中BN的源码解析_我的博客有点东西-CSDN博客_bn源码30、和的区别和使用方法文档:withData996黄金一代:[原创][深度][]DDP系列第一篇:入门教程
996黄金一代:[原创][深度][]DDP系列第二篇:实现原理与源代码解析
996黄金一代:[原创][深度][]DDP系列第三篇:实战与技巧
深度学习:实战与粗通
运行第一个DDP多机多卡代码:-/:分布式训练,支持多机多卡,单机多卡。
[源码解析]分布式(5)------总述如何使用DDP及其在中应用的专栏-CSDN博客_ddp
多卡分布式训练-
源码解读之:模型并行和分布式训练解析
没信号DDP分布式训练学习笔记
link-web多gpu并行训练
会飞的闲鱼分布式训练
花花:「新生手册」分布式训练
:【分布式训练】单机多卡的正确打开方式(一):理论基础
分布式训练-单机多卡(DP和DDP)
并行训练(DP,DDP)的原理和应用熊勒个猫:和nn.说再见
和的区别和使用方法
小小将分布式训练简明教程
分布式训练分布式计算你们都遇到过哪些坑/bug
分布式多卡训练踩坑记多机多卡:多gpu训练,单机多卡,多机多卡的博客-程序员信息网单机多卡
谜一样的男子多机多卡分布式训练
吴文灏多机多卡分布式训练报错:oneoftheforhasbeenbyan:[.cuda.[512]]isat3;2.Hint:tofindthethattoits,with..(True).
解决::【踩坑】一个排查了一下午的坑
在分布式训练中,如果对同一模型进行多次调用则会触发以上报错,即nn..方法封装的模型,()函数和()函数必须交替执行,如果执行多个(次)()然后执行一次()则会报错。那么就需要
-:如果模型的输出有不需要进行反向传播的,此参数需要设置为True;若你的代码运行后卡住不动,基本上就是该参数的问题。-:该参数默认为True,设置为True时,在模型执行之前,gpu0会把中的参数值全部覆盖到别的gpu上。所以是因为参数被覆盖就会报上面的错误,解决方法:=nn..(,=[args.],=,=True)
--基于单机多GPU并行之的博客-CSDN博客31、判断并替换nan.函数的用法()函数有三个输入值,第一个是判断条件,第二个是符合条件的设置值,第三个是不符合条件的设置值。
.(,x,y)→
#判断是否有nan#.any(.(a))#如何有nan则进行相应替换as=.([[0,1,np.nan],[2,np.nan,3],[4,4,4]])a=.(.(a),.(a,0),a)#输出([[0.,1.,0.],[2.,0.,3.],[4.,4.,4.]])
进行翻转使用.flip(,dim)对输入的dim维度进行翻转,如果dim=[2,3]就是对第二维和第三维同时进行翻转,有多少个维度就翻转多少个维度
C=.([[[[1,2,3],[4,5,6],[7,8,9]]]],=.)(.flip(C,[3]))#输出([[[[3.,2.,1.],[6.,5.,4.],[9.,8.,7.]]]])C=.([[[[1,2,3],[4,5,6],[7,8,9]]]],=.)(.flip(C,[2,3]))#输出([[[[9.,8.,7.],[6.,5.,4.],[3.,2.,1.]]]])
中和的区别.函数返回张量在某一个维度扩展之后的张量,就是将张量广播到新形状。函数对返回的张量不会分配新内存,即在原始张量上返回只读视图,返回的张量内存是不连续的。近似于中的函数的作用。如果希望张量内存连续,可以调用函数。
x=.([[1],[2],[3]]).type(.)(x.size())x=x.(3,4)(x)x=x.(-1,4)(x)a=.([[1,2,3],[4,5,6]]).type(.)a=a.(4,3)(a).Size([3,1])([[1.,1.,1.,1.],[2.,2.,2.,2.],[3.,3.,3.,3.]])([[1.,1.,1.,1.],[2.,2.,2.,2.],[3.,3.,3.,3.]])(mostcalllast):File"test.py",line95,ina=a.(4,3):Thesizeofthe(4)mustthesize(2)atnon-0.:[4,3].:[2,3]
.文档:..-1.10.0.用法近似np.tile,就是将原矩阵横向、纵向地复制。与.不同的是.返回的张量在内存中是连续的。
x=.([[1],[2],[3]]).type(.)x=x.(4,2)(x)a=.([[1,2,3],[4,5,6]]).type(.)(a)(a.)a=a.(4,2)(a)(a.size())([[1.,2.,3.],[4.,5.,6.]]).Size([2,3])([[1.,2.,3.,1.,2.,3.],[4.,5.,6.,4.,5.,6.],[1.,2.,3.,1.,2.,3.],[4.,5.,6.,4.,5.,6.],[1.,2.,3.,1.,2.,3.],[4.,5.,6.,4.,5.,6.],[1.,2.,3.,1.,2.,3.],[4.,5.,6.,4.,5.,6.]]).Size([8,6])
中增加某个维度以及索引后的维度
a=.((2,2,2,2))b=a.(0)(b.)#.Size([1,2,2,2,2])c=a[0](c.)#c的维度为3维.Size([2,2,2])c=a[0:1](c.)#c的维度维4维.Size([1,2,2,2])
关于中的上采样(待整理)上采样和(转)-向前奔跑的少年-博客园
上采样()、上池化()、反卷积()与(像素重组)之间的区别简介_修行之路-CSDN博客_像素重组
学习笔记(10)--上采样和的博客-CSDN博客_nn.
CNN概念之上采样,反卷积,概念解释的博客-CSDN博客
.nn实现上采样--nn.
立夏之光:一文看懂
.nn实现上采样--nn.
上采样时设为true还是.我们在写的时候都会继承..data.这个类一个通用的数据集加载器,要求数据格式为
root/dog/xxx.pngroot/dog/xxy.pngroot/dog/xxz.pngroot/cat/123.pngroot/cat/.pngroot/cat/.png
data=..(root="rootpath",),使用后data有以下几个成员变量:
self.-用一个list保存类名self.-类名对应的索引self.imgs-保存(img-path,)的list
举例:
.as=dset.('./data/')#没有,先看看取得的原始图像数据(.)#根据分的文件夹的名字来确定的类别(.)#按顺序为这些类别定义索引为0,1...(.imgs)#返回从所有文件夹中得到的图片的路径以及其类别['cat','dog']{'cat':0,'dog':1}[('./data//cat/cat..jpg',0),('./data//cat/cat..jpg',0),('./data//cat/cat..jpg',0),('./data//cat/cat..jpg',0),('./data//dog/dog..jpg',1),('./data//dog/dog..jpg',1),('./data//dog/dog..jpg',1),('./data//dog/dog..jpg',1)]查看得到的图片数据:#从返回成果可见得到的数据仍是PIL对象([0])([0][0])([0][1])#得到的是类别0,即cat返回:(PIL..mode=RGBsize=at,0)PIL..mode=RGBsize=at
模型中的使用定义和都只需要传入即可。也不需要将其转成gpu。这是因为,当网络进行.cuda()时候,会自动将里面的层的参数,等转换成相应的GPU上。self.可以将注册成,在中使用self.,而不是self.网络存储时也会将存下,当网络load模型时,会将存储的模型的也进行赋值。的更新在中,.step只能更新nn.类型的参数。模型中需要进行更新的参数注册为,不需要进行更新的参数注册为模型保存的参数是.()返回的模型进行设备移动时,模型中注册的参数(和)会同时进行移动模型中的与
学习(十九)---模型中的使用中的乘法操作中的乘法操作
:随笔1:中矩阵乘法总结查看模型参数量和可训练参数量计算参数量和可训练参数量
def():=sum(p.()forpin.())=sum(p.()forpin.()ifp.){'':,'':}
或者是使用第三方工具
from.as=.()stat(,(3,224,224))或者pip.thop=()=.(1,3,224,224),=(,=(,))(,)
查看模型参数并计算模型参数量与可训练参数量的博客-CSDN博客_查看模型参数量
代码_两行代码统计模型参数量与,这个小工具值得一试的博客-CSDN博客实现各种深度学习中的损失loss://.com//p-loss中使用官方文档.-【】常用图像处理与数据增强方法合集(.)的博客-CSDN博客
学习笔记(三)的二十二个方法
.用法介绍的博客-CSDN博客
【图像处理】--实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)的博客-CSDN博客给图像添加噪声
://..com/2-tu-pian-chu-li-yu-shu-ju-jia-zai/2.3-er-shi-er---tu-pian-shu-ju-yu-chu-li-fang-fa数据增强方法大全-/-data-:Thisisalistofdata.和的预处理、图像增强、数据增强等方式和的预处理、图像增强、数据增强等方式读取日志数据读取日志数据_lsh呵呵的博客-CSDN博客读取
理解:-/-.mdat·/-
from..#加载日志数据ea=.('logs')#相应的文件路径ea.()(ea..Keys())=ea..('/')(len())([(i.step,i.)foriin])
topk函数使用中的topk函数详解_咆哮的阿杰的博客-CSDN博客函数损失函数交叉熵损失函数一文搞懂交叉熵损失--博客园
德川学习笔记——二分类交叉熵损失函数多标签分类的损失函数和准确率计算:多标签分类的损失函数和准确率计算_明日何其多_的博客-CSDN博客_多标签分类损失函数多标签分类以及.nn.用法月来客栈:多标签分类中的损失函数与评估指标
中多标签分类场景下的常见的模型评估指标-掘金.nn.用法.nn.用法的博客-CSDN博客_nn.中,和的区别的博客-CSDN博客和
蛐蛐xjtu二分类时,,等的选择和使用
推荐内容