目录

  • 第1关:Variable
  • 第2关:Variable 属性
  • 第3关:梯度初探
  • 第4关:梯度进阶

第1关:Variable

本关任务:

本关提供了一个张量变量tensor ,根据所给的张量创建 Variable 变量v,同时要求同学们掌握 Variable 的相关属性,例如如何获得 Variable 的 data 属性。

import torch
from torch.autograd import Variable
tensor = torch.FloatTensor([[1,4,2],[3,1,4]])#/********** Begin *********/
v = Variable(tensor,requires_grad=True)
#/********** End *********/
print(v)

第2关:Variable 属性

本关要求掌握Variable 的基本属性及其意义,如requires_grad属性标记着该Variable 是否需要求导。

本关任务:

本关提供了一个32位浮点型的张量 x,要求同学们根据 x创建一个Variable类型的变量 y, y是由 x 的平方计算得到,并输出y的Requires Gradiet属性和Gradient属性。

import torch
from torch.autograd import Variablex = torch.FloatTensor([1,2,3])
x = Variable(x, requires_grad=True)#/********** Begin *********/
#创建一个变量 y,由 x 的平方计算得到
y = x * x
#按照要求输出y相应的属性
print(y[0:3])
print('Requires Gradient : %s ' % (y.requires_grad))
print('Gradient : %s ' % (y.grad))
#/********** End *********/

第3关:梯度初探

结合上一关卡所介绍的Variable属性,我们将进一步学习Variable的反向传播函数backward,从而计算出其梯度的大小。

本关任务:

本关提供了一个 Variable 类型的变量x,并将x的 requires_grad设置为True,以便后续的求导操作。在 x 基础上进行相应的运算得到y ,在 y的基础上进行运算得到z,令变量out为 z 的平均值,计算out 的梯度并输出x的梯度值。求导计算的步骤如下所示:

import torch
from torch.autograd import Variable x = Variable(torch.Tensor(range(4)), requires_grad=True)
#/********** Begin *********/
#在 x 基础上进行运算, y = x + 2
y = x + 2
#y.backward(retain_graph=True)
#在 y 基础上进行运算, z = y * y * 3
z = y * y * 3
#令变量 out 为 z 的平均值并输出
#z.backward(retain_graph=True)
out=torch.sum(z)/len(z)
#计算 out 的梯度并输出x的梯度值
out.backward(retain_graph=True)
print("output:\n",out.view(1))
print(x.grad)
#/********** End *********/

第4关:梯度进阶

本关任务:

本关提供了Variable 类型的变量x和Variable 类型的变量y,并将x 和y的requires_grad设置为True以便后续的求导操作。在 x和y的基础上进行运算得到z,利用torch.autograd.grad方法求梯度 dz_dx和dz_dy。

import torch
from torch.autograd import Variablex = Variable(torch.unsqueeze(torch.linspace(1, 6, 6), dim = 1).view(2, 3), requires_grad=True)y = Variable(torch.Tensor(2, 3).uniform_(-1, 1), requires_grad=True)#/********** Begin *********/
#计算 z = x*x + 3*y
z = x*x + 3*y#求dz_dx和dz_dy 并输出
dz_dx = torch.autograd.grad(z,x,grad_outputs=torch.ones(1,3))
dz_dy = torch.autograd.grad(z,y,grad_outputs=torch.ones(2,3))
print("dz_dx: \n",dz_dx)
print("dz_dy: \n",dz_dy)
#/********** End *********/

Pytorch 之autograd相关推荐

  1. PyTorch 的 Autograd详解

    ↑ 点击蓝字 关注视学算法 作者丨xiaopl@知乎 来源丨https://zhuanlan.zhihu.com/p/69294347 编辑丨极市平台 PyTorch 作为一个深度学习平台,在深度学习 ...

  2. 04_Pytorch生态、PyTorch能做什么、PyTorch之Autograd、autograd案例、GPU加速案例

    1.4.初见PyTorch 1.4.1.PyTorch生态 1.4.2.PyTorch能做什么? GPU加速 自动求导 常用网络层 nn.Linear nn.Conv2d nn.LSTMnn.R ...

  3. PyTorch 的 Autograd

    PyTorch 的 Autograd 原创 AlanBupt 发布于2019-06-15 22:16:21 阅读数 1175 收藏 更新于2019-06-15 22:16:21 分类专栏: Pytho ...

  4. PyTorch入门——autograd(二)

    点击关注我哦 神经网络与反向传播 从数学角度上来说,神经网络就是经过训练得到所需结果的一个复杂的数学函数.反向传播是神经网络的重要概念,主要根据链式法则计算损失Loss对输入权重w的梯度(偏导数),然 ...

  5. PyTorch入门 — — autograd(一)

    在阅读PyTorch入门后,我们可以理解:训练一个模型实际上就是寻找一组能够使得损失函数取值最小的参数值.在寻找该参数值时,我们需要计算该损失函数关于当前参数的梯度,因此如何求得梯度值至关重要. 一般 ...

  6. PyTorch 的 Autograd、计算图、叶子张量、inplace 操作、动态图,静态图(来自知乎)

    本博文来自:https://zhuanlan.zhihu.com/p/69294347 非常感谢此博主! PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢 ...

  7. pytorch笔记——autograd和Variable

    1 autograd 1.1 requires_grad tensor中会有一个属性requires_grad 来记录之前的操作(为之后计算梯度用). 1.2 调整tensor的requires_gr ...

  8. pytorch Tensor autograd functions

    属性 方法 grad 默认为None,当调用backward()方法后,会保存gradient梯度 requires_grad True时,表示该tensor需要计算gradients,添加到grap ...

  9. Pytorch闪电战——autograd

    基本概念 autograd是pytorch中所有神经网络的核心 torch.tensor是程序包的中心类 其存在一个属性:.requires_grad 如果.requires_grad为True,那么 ...

  10. pytorch 中 Autograd(四)

    用Tensor训练网络很方便,但是反向传播过程需要手动实现.这对于像线性回归等较为简单的模型来说,还可以应付,但实际使用中经常出现非常复杂的网络结构,此时如果手动实现反向传播,不仅费时费力,而且容易出 ...

最新文章

  1. 社区发现算法 - Fast Unfolding(Louvian)算法初探
  2. 处理JS异常的一个想法
  3. python软件如何安装方法_【新手必看】Python软件下载及安装教程
  4. 题解 P1091 【合唱队形】
  5. 软件无法连接oracle数据库,全面解析Oracle无法连接本地数据库问题
  6. dell t40 固态系统盘_天元戴尔(DELL)T40配置教程
  7. 使用cdn和npm引入的区别_中央空调和新风系统有什么区别?有必要一起装吗?
  8. 网络广告假流量盛行,查处有妙招
  9. Julia : Set or Array ?
  10. win11壁纸|windows11桌面壁纸
  11. POJO类中布尔类型的变量都不要加is前缀详解
  12. 影像自动解译_遥感影像的解译-分类
  13. h5php大转盘抽奖,Vue.js实现大转盘抽奖总结及实现思路
  14. excel表格打印每页都有表头_分享|1分钟学会,让打印的表格每页自带标题行
  15. JS中的BOM、正则表达式、定时器
  16. Java开发中常见的危险信号
  17. 【深度首发】死磕“2D转3D”的聚力维度,能否成为影视人工智能行业的独角兽?丨Xtecher 封面
  18. 检测到u盘但是计算机没有反应,u盘插上电脑没反应,教您修复无法识别u盘问题...
  19. background-position,有逗号和没逗号:截然不同的结果
  20. Python创建excel,并写入数据

热门文章

  1. 内存还剩余很多,却使用 swap 分区
  2. Serverless实战 —— 使用 Wintersmith + Serverless Framework 快速创建个人站点
  3. Postgres-XL数据库集群在RedHat/Fedora/Oracle/CentOS平台上的搭建
  4. Git如何进行减少提交历史数量以及修改自己的commit中的邮箱
  5. SpringBoot 计划任务
  6. docker-compose.yml配置文件详解
  7. C语言,椰果数量问题,计算最少的椰果数
  8. java 自定义编译注解 进行代码检查
  9. 04737 c++ 自学考试2019版 第二章课后程序设计题 2
  10. 【Python】Python第三方库安装