现在对 CNN 有了一定的了解,同时在 GitHub 上找了几个 examples 来学习,对网络的搭建有了笼统地认识,但是发现有好多基础 pytorch 的知识需要补习,所以慢慢从官网 API进行学习吧。

AUTOGRAD MECHANICS(自动求导机制)

  这一部分做了解处理,不需要完全理解的明明白白的。

Excluding subgraphs from backward

  每一个 Tensor 变量都可以设置一个属性:requires_grad(默认参数 False),可以设置此参数排除向后梯度求导时排除子图,提高运行效率。

 import torch
x = torch.randn(3, 3) # requires_grad=False by default
y = torch.randn(3, 3)
z = torch.randn(3, 3, requires_grad= True) a = x + y
print(a.requires_grad) # False b = z + a
print(b.requires_grad) # True

  这个设置在如下情况很好用:你提前知道你不需要某个参数的梯度。例如,你需要微调网络的时候,你只需要在最后一层将变量的 requires_grad 属性切换一下,因为仿射装换需要使用通过梯度调整的权重,而且输出结果也需要它。

 model = torchvision.models.resnet18(pretrained=True)
for param in model.parameters():
param.requires_grad = False # 切换模式
# Replace the last fully-connected layer
# Parameters of newly constructed modules have requires_grad=True by default
model.fc = nn.Linear(512, 100) # Optimize only the classifier
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 的时候,就会检查版本计数器的值,如果大于计数器的值,就会报错。

  

Pytorch学习(一)—— 自动求导机制的更多相关文章

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

    Pytorch Autograd (自动求导机制) Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logisti ...

  2. PyTorch官方中文文档:自动求导机制

    自动求导机制 本说明将概述Autograd如何工作并记录操作.了解这些并不是绝对必要的,但我们建议您熟悉它,因为它将帮助您编写更高效,更简洁的程序,并可帮助您进行调试. 从后向中排除子图 每个变量都有 ...

  3. Pytorch中的自动求梯度机制和Variable类

    自动求导机制是每一个深度学习框架中重要的性质,免去了手动计算导数,下面用代码介绍并举例说明Pytorch的自动求导机制. 首先介绍Variable,Variable是对Tensor的一个封装,操作和T ...

  4. pytorch的自动求导机制 - 计算图的建立

    一.计算图简介 在pytorch的官网上,可以看到一个简单的计算图示意图, 如下. import torchfrom torch.autograd import Variable x = Variab ...

  5. 什么是pytorch(2Autograd:自动求导)(翻译)

    Autograd: 自动求导 pyTorch里神经网络能够训练就是靠autograd包.我们来看下这个包,然后我们使用它来训练我们的第一个神经网络. autograd 包提供了对张量的所有运算自动求导 ...

  6. Pytorch Tensor, Variable, 自动求导

    2018.4.25,Facebook 推出了 PyTorch 0.4.0 版本,在该版本及之后的版本中,torch.autograd.Variable 和 torch.Tensor 同属一类.更确切地 ...

  7. 『PyTorch x TensorFlow』第六弹_从最小二乘法看自动求导

    TensoFlow自动求导机制 『TensorFlow』第二弹_线性拟合&神经网络拟合_恰是故人归 下面做了三个简单尝试, 利用包含gradients.assign等tf函数直接构建图进行自动 ...

  8. Pytorch之Variable求导机制

    自动求导机制是pytorch中非常重要的性质,免去了手动计算导数,为构建模型节省了时间.下面介绍自动求导机制的基本用法. #自动求导机制 import torch from torch.autogra ...

  9. [深度学习] pytorch学习笔记(1)(数据类型、基础使用、自动求导、矩阵操作、维度变换、广播、拼接拆分、基本运算、范数、argmax、矩阵比较、where、gather)

    一.Pytorch安装 安装cuda和cudnn,例如cuda10,cudnn7.5 官网下载torch:https://pytorch.org/ 选择下载相应版本的torch 和torchvisio ...

随机推荐

  1. QDU-GZS and String

    Description GZS has two strings s and t. In each step, GZS can select arbitrary character c of s and ...

  2. yii2.0下,JqPaginator与Pjax实现无刷新翻页

    控制器部分 <?php namespace backend\controllers; use common\models\Common; use Yii; use yii\base\Contro ...

  3. 关于eclipse安装maven之后,maven找不到JDK问题

    问题: 最近在Eclipse里面装了maven之后,启动或者在运行项目时存在如下的警告: Eclipse is rinning in a JRE,but a JDK is require, Some ...

  4. 如何更改Linux yum源?

    centos下可以通过yum很方便快捷的安装所需的软件和库,如果yum的源不好,安装速度会非常慢,centos默认官方源似乎都是国外的,所以速度无法保证,我一直使用163的源,感觉速度不错.下面就说说 ...

  5. 传纸条(scrip)

    传纸条(scrip) 题目背景 Awson是某国际学校信竞组的一只菜鸡.每次竞赛考试都只能垫底.终于有一天,他决定不再苟活,发挥他的人脉优势,准备在一次竞赛考试时传纸条作弊. 题目描述 他预先知道了考 ...

  6. h5复制粘贴板,打开APP功能

    <div class="container"> <img src="../themes/mall/img/i_red_ad4.jpg"> ...

  7. VS 解决方案文件结构分析

    VS2013 解决方案文件结构分析 Visual Studio 的解决方案文件是一个文本文件,其中的内容不是太复杂,有些时候 Visual Studio 会把这个文件搞乱,理解一下这个文件的结构,对我 ...

  8. zk实现服务选举

    非公平选举算法1)首先通过zk创建一个 /server 的PERSISTENT节点 2)多台机器同时创建 /server/leader EPHEMERAL子节点 3)子节点只能创建一个,后创建的会失败 ...

  9. filter配置多个url-pattern和排除个别servlet

    转载自:https://blog.csdn.net/hanghangde/article/details/51298221 侵删 最近做项目遇到一个Filter需要配置多个url-pattern,上网 ...

  10. Redis string(字符串)

    1.getset key newValue   //给key设置value,并返回旧的value,如果没有旧的value,返回nil. 示例: getset age      //age 的值被设置为 ...