Variable(变量)

autograd.Variable 是包的核心类. 它包装了张量, 并且支持几乎所有的操作. 一旦你完成了你的计算, 你就可以调用 .backward() 方法, 然后所有的梯度计算会自动进行.

你还可以通过 .data 属性来访问原始的张量, 而关于该 variable(变量)的梯度会被累计到 .grad上去.

Variable

还有一个针对自动求导实现来说非常重要的类 - Function.

Variable 和 Function 是相互联系的, 并且它们构建了一个非循环的图, 编码了一个完整的计算历史信息. 每一个 variable(变量)都有一个 .grad_fn 属性, 它引用了一个已经创建了 Variable 的 Function (除了用户创建的 Variable `` 之外 - 它们的 ``grad_fn is None ).

如果你想计算导数, 你可以在 Variable 上调用 .backward() 方法. 如果 Variable 是标量的形式(例如, 它包含一个元素数据), 你不必指定任何参数给 backward(), 但是, 如果它有更多的元素. 你需要去指定一个 grad_output 参数, 该参数是一个匹配 shape(形状)的张量.

import torch
from torch.autograd import Variable

创建 variable(变量):

x = Variable(torch.ones(2, 2), requires_grad = True)
print(x)

variable(变量)的操作:

y = x + 2
print(y)

y 由操作创建,所以它有 grad_fn 属性.

print(y.grad_fn)

y 的更多操作

z = y * y * 3
out = z.mean()print(z, out)

梯度

我们现在开始了解反向传播, out.backward() 与 out.backward(torch.Tensor([1.0])) 这样的方式一样

out.backward()

但因 d(out)/dx 的梯度

print(x.grad)

你应该得到一个 4.5 的矩阵. 让我们推导出 out Variable “oo”. 我们有 o=14∑izio=14∑izi, zi=3(xi+2)2zi=3(xi+2)2和 zi∣∣xi=1=27zi|xi=1=27. 因此, ∂o∂xi=32(xi+2)∂o∂xi=32(xi+2), 所以 ∂o∂xi∣∣xi=1=92=4.5∂o∂xi|xi=1=92=4.5.

你可以使用自动求导来做很多有趣的事情

x = torch.randn(3)
x = Variable(x, requires_grad = True)y = x * 2
while y.data.norm() < 1000:y = y * 2print(y)
gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)print(x.grad)

pytorch学习入门 (二) Variable(变量)相关推荐

  1. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  2. ES6学习(二)—变量的解构赋值

    ES6学习(二)-变量的解构赋值 文章只列举了一部分 完整版请看阮一峰ES6入门教程 点我查看阮一峰ES6入门教程 一.数组的解构赋值 二.对象解构赋值 三.函数参数的解构赋值

  3. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  4. 迪文屏幕T5UID3平台学习笔记二:变量图标显示和按键返回值按钮学习

    需要实现一个功能:当点击某个按钮时候,要求能够改变按钮的字体和颜色,比如: 点击strat按钮后,显示stop,这样再点击就实现Stop逻辑,同时显示变成Start,也 就是说把Start和Stop按 ...

  5. Pytorch学习(二)

    一.Pycharm查看函数参数和用法 1. 使用右键查看函数信息 1.1. 详细参数 鼠标放置在函数上:右键->Go To->Declaration or Usages 便会跳转到函数的源 ...

  6. Tensorflow 学习入门(二) 初级图像识别——手写数字识别

    初级图像识别--手写数字识别 背景知识储备 Softmax Regression MNIST 矩阵相乘 One Hot 编码 Cross Entropy(交叉熵) 代码实现 引入数据 设计数据结构 完 ...

  7. pytorch学习 入门篇(一)

    PyTorch 是什么? 它是一个基于 Python 的科学计算包, 其主要是为了解决两类场景: NumPy 的替代品, 以使用 GPU 的强大加速功能 一个深度学习研究平台, 提供最大的灵活性和速度 ...

  8. python定义变量字符串_Python学习笔记二(变量和字符串)

    2017年年终确定的从2018年开始学习一门新的语言.随着机器学习人工智能的日渐深入,是时候有必要掌握以下Python了.博客今天更新第二篇学习记录,关于Python的变量和变量中字符串的使用,所有学 ...

  9. MATLAB基础学习(二)-变量类型与赋值

    matlab解决问题的最基本思路是建立脚本文件,那么脚本文件的第一段就是定义一些变量,这和C语言等编程思想是一样的.matlab提供的变量类型很多,最基础的是三种:数值变量.符号变量.字符串,其他的类 ...

最新文章

  1. 结构型模式—外观模式
  2. 继承thread类创建线程
  3. vc2017 linux printf,C/C++中自定义信息输出——printf与宏的配合使用
  4. 看到这个我冷汗直冒,还好不是指我……
  5. jbod ugood 磁盘驱动状态_NTFS磁盘读写工具Mounty免费版
  6. NetworkManagementService 解读
  7. 关于嵌入式学习随笔-2《GPIO基础知识》
  8. 软件设计方案说明书模板
  9. python前端开发工具篇
  10. 广播前置放大器的作用_IP网络广播前置放大器
  11. proof-carrying data from accumulation schemes学习笔记
  12. Python爬取动态加载的网站图片
  13. QQ20岁:20年版本迭代只做一件事情!
  14. 细菌(disease)解题报告 - 搜索与回朔
  15. 混合波束成形|重叠子阵结构下的HBF探讨
  16. java 浮雕效果_android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜)...
  17. 职场写作(一)怎么让写作促成结果
  18. nginx 学习 --->>> nginx 实现动静分离
  19. [PTA]实验7-3-5 输出大写英文字母
  20. python中拼音怎么用_实用小技巧,Python一秒将汉字转为拼音

热门文章

  1. A5D2 GPIO测试
  2. bbb sd6 无e2 修改
  3. java 参数 string_java(String和StringBuffer分别作为参数传递)
  4. linux tao环境 安装_Linux安装jdk8及环境变量配置
  5. android远程linux命令,测试可用的Android远程语音识别实例
  6. 第一学期《计算机网络》作业一_新学期学习计划合集5篇-其他范文
  7. 【转】wpf从我炫系列2----布局控件的使用(下)
  8. 【转】TCP/IP协议到底在讲什么?【乐搏TestPro】
  9. 第一节: Timer的定时任务的复习、Quartz.Net的入门使用、Aop思想的体现
  10. loadrunner linux 端口,Linux下loadrunner generator的安装