Pytorch学习(一)—— 自动求导机制
现在对 CNN 有了一定的了解,同时在 GitHub 上找了几个 examples 来学习,对网络的搭建有了笼统地认识,但是发现有好多基础 pytorch 的知识需要补习,所以慢慢从官网 API 进行学习吧。
AUTOGRAD MECHANICS(自动求导机制)
这一部分做了解处理,不需要完全理解的明明白白的。
Excluding subgraphs from backward
每一个 Tensor 变量都可以设置一个属性:requires_grad(默认参数 False),可以设置此参数排除向后梯度求导时排除子图,提高运行效率。
1 import torch 2 x = torch.randn(3, 3) # requires_grad=False by default 3 y = torch.randn(3, 3) 4 z = torch.randn(3, 3, requires_grad= True) 5 6 a = x + y 7 print(a.requires_grad) # False 8 9 b = z + a 10 print(b.requires_grad) # True
这个设置在如下情况很好用:你提前知道你不需要某个参数的梯度。例如,你需要微调网络的时候,你只需要在最后一层将变量的 requires_grad 属性切换一下,因为仿射装换需要使用通过梯度调整的权重,而且输出结果也需要它。
1 model = torchvision.models.resnet18(pretrained=True) 2 for param in model.parameters(): 3 param.requires_grad = False # 切换模式 4 # Replace the last fully-connected layer 5 # Parameters of newly constructed modules have requires_grad=True by default 6 model.fc = nn.Linear(512, 100) 7 8 # Optimize only the classifier 9 optimizer = optim.SGD(model.fc.parameters(), lr=1e-2, momentum=0.9)
How autograd encodes the history(自动求导如何编码历史信息)
Autograd is reverse automatic (反向自动) differentiation system.....(这段话有点难翻译)。
个人觉得关键是:When computing the forwards pass, autograd simultaneously performs the requested computations and builds up a graph representing the function that computes the gradient (the .grad_fn
attribute of each torch.Tensor
is an entry point into this graph)
In-place operations with autograd(自动求导中使用 in-place)
在自动求导中支持 in-place 是件困难的事,在多数场合下我们并不鼓励你使用。
In-place correctness checks(in-place 的正确性检擦)
每一个 tensor 变量都拥有版本计数器,每次被调用都会加一,当一个 Function 保留 tensor 用来向后计算时,也会保存这个版本计数器。当你访问 self.saved_tensors 的时候,就会检查版本计数器的值,如果大于计数器的值,就会报错。
转载于:https://www.cnblogs.com/KongHuZi/p/10960998.html
Pytorch学习(一)—— 自动求导机制相关推荐
- pytorch教程之自动求导机制(AUTOGRAD)-从梯度和Jacobian矩阵讲起
文章目录 1. 梯度和Jacobian矩阵 2. pytorch求变量导数的过程 1. 梯度和Jacobian矩阵 设f(x)∈R1f(x)\in R^1f(x)∈R1是关于向量x∈Rnx\in R^ ...
- Pytorch Autograd (自动求导机制)
Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logistic回归模型来介绍Pytorch的自动求导机制.首先, ...
- 【PyTorch学习(三)】Aurograd自动求导机制总结
Aurograd自动求导机制总结 PyTorch中,所有神经网络的核心是 autograd 包.autograd 包为tensor上的所有操作提供了自动求导机制.它是一个在运行时定义(define- ...
- PyTorch的计算图和自动求导机制
文章目录 PyTorch的计算图和自动求导机制 自动求导机制简介 自动求导机制实例 梯度函数的使用 计算图构建的启用和禁用 总结 PyTorch的计算图和自动求导机制 自动求导机制简介 PyTorch ...
- 深度学习修炼(三)——自动求导机制
文章目录 致谢 3 自动求导机制 3.1 传播机制与计算图 3.1.1 前向传播 3.1.2 反向传播 3.2 自动求导 3.3 再来做一次 3.4 线性回归 3.4.1 回归 3.4.2 线性回归的 ...
- 【PyTorch基础教程2】自动求导机制(学不会来打我啊)
文章目录 第一部分:深度学习和机器学习 一.机器学习任务 二.ML和DL区别 (1)数据加载 (2)模型实现 (3)训练过程 第二部分:Pytorch部分 一.学习资源 二.自动求导机制 2.1 to ...
- PyTorch 笔记Ⅱ——PyTorch 自动求导机制
文章目录 Autograd: 自动求导机制 张量(Tensor) 梯度 使用PyTorch计算梯度数值 Autograd 简单的自动求导 复杂的自动求导 Autograd 过程解析 扩展Autogra ...
- 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...
- Pytorch教程入门系列4----Autograd自动求导机制
系列文章目录 文章目录 系列文章目录 前言 一.Autograd是什么? 二.Autograd的使用方法 1.在tensor中指定 2.重要属性 三.Autograd的进阶知识 1.动态计算图 2.梯 ...
最新文章
- mysql中主从_MySQL的主从
- 数据结构-----图的拓扑排序和关键路径算法
- 第三方软件源_手机上的天气软件哪个更准确?
- 一台计算机连入计算机网络后通过该计算机,一台计算机连入计算机网络后,该计算机( )。...
- 萝卜源码前后端源码 附打包APP的教程
- python如何定义i_如何在Python中使用自定义消息引发相同的Exception?
- Rust : 独一无二的Some
- android 的layout
- 如何使用hMailServer+云服务器搭建个人邮箱
- java 反射 protected_通过Java反射机制访问private,protected变量和方法
- day3-转自金角大王
- 风蚀侵蚀力计算在python上的实现
- 学习Transformer:自注意力与多头自注意力的原理及实现
- android第三方上传文件,安卓和苹果终于打通!互传文件无需借助第三方,一碰就能传...
- DWG文件怎么转成PDF格式?介绍两种方式
- Linux下退出vi编辑模式
- 毕业设计 STM32单片机的蓝牙智能计步器手环
- 配置tensorflow-gpu,大过年的头秃啊
- linux系统 ubuntu20.04 qq安装 闪退解决办法
- 计算机未来的发展的畅想英语作文,畅想关于未来的交通工具英语作文