![PyTorch自动微分_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/6bc38241-142b-424b-aec6-2d1549399745/6bc38241-142b-424b-aec6-2d15493997451.gif)
![PyTorch自动微分_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/6bc38241-142b-424b-aec6-2d1549399745/6bc38241-142b-424b-aec6-2d15493997452.gif)
![PyTorch自动微分_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/6bc38241-142b-424b-aec6-2d1549399745/6bc38241-142b-424b-aec6-2d15493997453.gif)
![PyTorch自动微分_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/6bc38241-142b-424b-aec6-2d1549399745/6bc38241-142b-424b-aec6-2d15493997454.gif)
![PyTorch自动微分_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/6bc38241-142b-424b-aec6-2d1549399745/6bc38241-142b-424b-aec6-2d15493997455.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、autograd 包是 PyTorch 中所有神经网络的核心。首先让我们简要地介绍它,然后我们将会去训练我们的第一个神经网络。该 autograd 软件包为 Tensors 上的所有操作提供自动微分。它是一个由运行定义的框架,这意味着以代码运行方式定义你的后向传播,并且每次迭代都可以不同。我们从tensor 和 gradients 来举一些例子。1 、 TENSORtorch.Tensor是包的核心类。如果将其属性.requires_grad设置为True,则 会开始跟踪针对tensor的所有操作。完成计算后,您可以调用.backward。来自 动计算所有梯度。该张量的梯度将累积到.grad属
2、性中。要停止tensor历史记录的跟踪,您可以调用.detach(),它将其与计算历史 记录分离,并防止将来的计算被跟踪。要停止跟踪历史记录(和使用内存),您还可以将代码块使用 with torch.no_grad():包装起来。在评估模型时,这是特别有用,因为模型在训练阶段 具有 requires_grad = True 的可训练参数有利于调参,但在评估阶段我们不需要 梯度。还有一个类对于 autograd 实现非常重要那就是Function 。 Tensor 和Function 互相连接并构建一个非循环图,它保存整个完整的计算过程的历史信息。每个张量都有一个.grad_fn属性保存着创建了
3、张量的Function的引用,(如果用户自己创建张量,则 g rad_fn 是 None )。如果你想计算导数,你可以调用Tensor.backward()o如果Tensor是标量(即它包含一个元素数据),则不需要指定任何参数backward。,但是如果它有更多元素,则需要指定一个gradient 参数来指定张量的形状。import torch创建一个张量,设置requires_grad=True 来跟踪与它相关的计算x = torch.ones(2, 2, requires_grad=True)print(x)输出:tensor(1., 1.,1., 1., requires_grad=Tr
4、ue)针对 xx 做一个操作y = x + 2print(y)输出:tensor(3., 3.,3., 3., grad_fn=<AddBackward0>)y 作为操作的结果被创建,所以它有grad_fnprint(y.grad_fn)输出:<AddBackward0 object at 0x7fe1db427470>针对 y 做更多的操作:z = y * y * 3out = z.mean()print(z, out)输出:tensor(27., 27.,27., 27., grad_fn=<MulBackward0>)tensor(27., grad_
5、fn=<MeanBackward0>).requires_grad_( . )会改变张量的requires_grad 标记。输入的标记默认为False ,如果没有提供相应的参数。a = torch.randn(2, 2)a = (a * 3) / (a - 1)print(a.requires_grad)a.requires_grad_(True)print(a.requires_grad)b = (a * a).sum()print(b.grad_fn)输出:FalseTrue<SumBackward0 object at 0x7fe1db427dd8>梯度:我们现在
6、后向传播,因为输出包含了一个标量,out.backward()等同于out.backward(torch.tensor(1.) 。out.backward()打印梯度 d(out)/dxprint(x.grad)输出:tensor(4.5000, 4.5000,4.5000, 4.5000)现在让我们看一个xx 可比向量积的例子:x = torch.randn(3, requires_grad=True)y = x * 2while y.data.norm() < 1000:y = y * 2print(y)输出:tensor( -444.6791,762.9810, -1690.094
7、1, grad_fn=<MulBackward0>)现在在这种情况下, y 不再是一个标量。 torch.autograd 不能够直接计算整个雅可比,但是如果我们只想要雅可比向量积,只需要简单的传递向量给backward 作为参数。v = torch.tensor(0.1, 1.0, 0.0001, dtype=torch.float)y.backward(v)print(x.grad)输出:tensor(1.0240e+02, 1.0240e+03, 1.0240e-01)你可以通过将代码包裹在with torch.no_grad() ,来停止对从跟踪历史中的 .requires_grad=True 的张量自动求导。print(x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学三年级口算题500道
- 2025年和田道路运输从业资格证考哪些项目
- 企业成长与融资选择
- 2024-2025学年高中英语阅读理解五练习含解析新人教版必修2
- 2024年高中化学第三章有机化合物第二节第1课时乙烯精练含解析新人教版必修2
- 中药与医院合作协议
- 上学期学校工作计划
- 公司出纳人员个人工作计划
- 村民纠纷协议书
- 腾讯广告合作协议
- 客服百问百答
- GB/T 22133-2008流体流量测量流量计性能表述方法
- GB/T 19181-2018生咖啡分级方法导则
- GA/T 766-2020人精液PSA检测金标试剂条法
- 胃食管反流病优质课件
- 格力GMV多联机安装及维修手册
- 农产品质量安全控制课件
- 尿失禁健康讲座(SUI)
- lovo操作手册中文翻译版-professorgong
- 南网5S管理、四步法、八步骤
- 管道工程污水管网监理规划(共44)
评论
0/150
提交评论