现在对 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学习(一)—— 自动求导机制相关推荐

  1. pytorch教程之自动求导机制(AUTOGRAD)-从梯度和Jacobian矩阵讲起

    文章目录 1. 梯度和Jacobian矩阵 2. pytorch求变量导数的过程 1. 梯度和Jacobian矩阵 设f(x)∈R1f(x)\in R^1f(x)∈R1是关于向量x∈Rnx\in R^ ...

  2. Pytorch Autograd (自动求导机制)

    Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logistic回归模型来介绍Pytorch的自动求导机制.首先, ...

  3. 【PyTorch学习(三)】Aurograd自动求导机制总结

    ​Aurograd自动求导机制总结 PyTorch中,所有神经网络的核心是 autograd 包.autograd 包为tensor上的所有操作提供了自动求导机制.它是一个在运行时定义(define- ...

  4. PyTorch的计算图和自动求导机制

    文章目录 PyTorch的计算图和自动求导机制 自动求导机制简介 自动求导机制实例 梯度函数的使用 计算图构建的启用和禁用 总结 PyTorch的计算图和自动求导机制 自动求导机制简介 PyTorch ...

  5. 深度学习修炼(三)——自动求导机制

    文章目录 致谢 3 自动求导机制 3.1 传播机制与计算图 3.1.1 前向传播 3.1.2 反向传播 3.2 自动求导 3.3 再来做一次 3.4 线性回归 3.4.1 回归 3.4.2 线性回归的 ...

  6. 【PyTorch基础教程2】自动求导机制(学不会来打我啊)

    文章目录 第一部分:深度学习和机器学习 一.机器学习任务 二.ML和DL区别 (1)数据加载 (2)模型实现 (3)训练过程 第二部分:Pytorch部分 一.学习资源 二.自动求导机制 2.1 to ...

  7. PyTorch 笔记Ⅱ——PyTorch 自动求导机制

    文章目录 Autograd: 自动求导机制 张量(Tensor) 梯度 使用PyTorch计算梯度数值 Autograd 简单的自动求导 复杂的自动求导 Autograd 过程解析 扩展Autogra ...

  8. 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...

  9. Pytorch教程入门系列4----Autograd自动求导机制

    系列文章目录 文章目录 系列文章目录 前言 一.Autograd是什么? 二.Autograd的使用方法 1.在tensor中指定 2.重要属性 三.Autograd的进阶知识 1.动态计算图 2.梯 ...

最新文章

  1. mysql中主从_MySQL的主从
  2. 数据结构-----图的拓扑排序和关键路径算法
  3. 第三方软件源_手机上的天气软件哪个更准确?
  4. 一台计算机连入计算机网络后通过该计算机,一台计算机连入计算机网络后,该计算机( )。...
  5. 萝卜源码前后端源码 附打包APP的教程
  6. python如何定义i_如何在Python中使用自定义消息引发相同的Exception?
  7. Rust : 独一无二的Some
  8. android 的layout
  9. 如何使用hMailServer+云服务器搭建个人邮箱
  10. java 反射 protected_通过Java反射机制访问private,protected变量和方法
  11. day3-转自金角大王
  12. 风蚀侵蚀力计算在python上的实现
  13. 学习Transformer:自注意力与多头自注意力的原理及实现
  14. android第三方上传文件,安卓和苹果终于打通!互传文件无需借助第三方,一碰就能传...
  15. DWG文件怎么转成PDF格式?介绍两种方式
  16. Linux下退出vi编辑模式
  17. 毕业设计 STM32单片机的蓝牙智能计步器手环
  18. 配置tensorflow-gpu,大过年的头秃啊
  19. linux系统 ubuntu20.04 qq安装 闪退解决办法
  20. 计算机未来的发展的畅想英语作文,畅想关于未来的交通工具英语作文

热门文章

  1. 细说双 11 直播背后的压测保障技术
  2. 阿里云知位停车:让车主好停、车场好管
  3. 走近Quick Audience,了解消费者运营产品的发展和演变
  4. “低代码”开发管理应用,这家大型连锁企业也说好
  5. 世界人工智能发展究竟到了什么水平 ?
  6. 《怪物猎人》战斗核心设计分析
  7. Python编程专属骚技巧9
  8. 第一章 SDN介绍 (附件2)【SDNNFV基础、云计算】
  9. 如何优化 Linux系统
  10. AIX 7.1 使用installp安装python的方法