参考   Variable变量 - 云+社区 - 腾讯云

Variable和Tensor本质上没有区别,不过Variable会被放入一个计算图中,然后进行前向传播,反向传播,自动求导。首先Variable是在torch.autograd.Variable中,要将一个tensor变成Variable也非常简单,比如想让一个tensor a变成Variable,只需要Variable(a)就可以了。Variable有三个比较重要的组成属性:data、grad和grad_fn。通过data可以取出Variable里面的tensor数值,grad_fn表示的是得到这个Variable的操作,比如通过加减还是乘除得到,最后grad是这个Variable的反向传播梯度,下面通过例子来具体说明一下。

# Creat Variable
x = Variable(torch.Tensor([1]), required_grad=True)
w = Variable(torch.Tensor([2]), required_grad=True)
b = Variable(torch.Tensor([3]), required_grad=True)# Build a computational graph.
y = w * x * b   # y = 2 * x + 3# Compute gradient
y.backward()          # same as y.backward(torch.FloatTensor([i]))# Print out the gradient.
print(x.grad)     # x.grad = 2
print(w.grad)     # x.grad = 1
print(b.grad)     # x.grad = 1

构建Variable,要注意得传入一个参数required_grad=True,这个参数表示是否对这个变量求梯度,默认的是False,也就是不对这个变量求梯度,这里我们希望得到这些变量的梯度,所以需要传入这个参数。从上面的代码中,我们注意到一行y.backward(),这行代码就是所谓的自动求导,这其实等价于y.backward(torch.FloatTensor([i])),只不过对于标量求导里面的参数就可以不写了,自动求导不需要你再去明确地写明对哪个函数求导,直接通过这行代码就能对所有的需要梯度的变量进行求导,得到它们的梯度,然后通过x.grad可以得到x的梯度。

上面是标量求导,同时也可以做矩阵求导,比如:

x = torch.randn(3)
x = Variable(x, required_grad=True)y = x * 2
print(y)y.backward(torch.FloatTensor([1, 0.1, 0.01]))
print(x.grad)

相当于给出了一个三维向量去做运算,这时候得到的结果y就是一个向量,这里对这个向量求导就不能直接写成y.backward(),这样程序是会报错的。这个时候需要传入参数声明,比如y.backward(torch.FloatTensor([1, 1, 1])),这样得到的结果就是它们每个分量的梯度,或者可以传入y.backward(torch.FloatTensor[1, 0.1, 0.01]),这样得到的梯度就是它们原本的梯度分别乘上1,0.1和1。

Variable变量相关推荐

  1. R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format)、如果没有指定行标识符号,则所有的字段都会放入variable变量中

    R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format).如果没有指定行标识符号,则所有的字段都会放入variable变量中 目录

  2. python variable_PyTorch中的Variable变量详解

    一.了解Variable 顾名思义,Variable就是 变量 的意思.实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这正好就符合了反向传播,参数更新的属性. 具体来说,在pyt ...

  3. Variable(变量)、Constant(常量)

    Variable(变量).Constant(常量) 参考代码 变量 public class Variable {// 属性:变量// 类变量 staticstatic double salary = ...

  4. WF4.0 基础篇 (五) 数据的传递 Variable变量

    本节主要介绍如何在WF4.0中使用变量,以及为变量赋值 本文例子下载: http://files.cnblogs.com/foundation/VariablesSample.rar http://f ...

  5. TensorFlow学习笔记(六)Variable变量

    tf.Variable 一个变量通过调用run() 方法维持图的状态.你通过构造variable 类的实例来添加一个变量到图中. Variable() 构造器需要一个初始值,可以是任意类型和shape ...

  6. php class variable,解决关于PHP“Undefined variable”变量未定义

    php中变量可以不定义的但是我们如果不对错误进行一些处理在使用未定义的变量时会提示Undefined variable错误了,下面我给大家举几个实例. PHP错误提示"Undefined v ...

  7. Tensorflow——Variable变量(打印数字小实例)

    1.前言 在 Tensorflow 中,定义了某字符串是变量,它才是变量,这一点是与 Python 所不同的. 定义语法: state = tf.Variable() 2.打印数字小实例 import ...

  8. Terraform 语法 variable变量 local本地变量的使用

    变量分为两种类型,一种为输入变量,另外一种为输出变量. 之前在写tf的模板文件的时候用了很多变量,比如在写认证信息的时候,定义的变量存放了阿里云的ak和sk,最后就是region的信息. 变量的使用都 ...

  9. PyTorch中Variable变量与torch.autograd.Variable

    一.了解Variable 顾名思义,Variable就是 变量 的意思.实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这正好就符合了反向传播,参数更新的属性. 具体来说,在pyt ...

最新文章

  1. day3 python 学习随笔
  2. java 字符串 基础介绍
  3. Python实训day06pm【网络爬虫(爬取接口)-爬取图片与数据】
  4. 转:Zookeeper快速入门
  5. Yii2系列教程三:Database And Gii
  6. Hyperreal number
  7. JAVA笔记--数组和字符串常用方法
  8. 2021年中国电动辅助电动机市场趋势报告、技术动态创新及2027年市场预测
  9. 如何在Eclipse配置Tomcat
  10. js常用处理请求到的数据的方法(即map,filter,find,findIndex,some,every一些常用方法的使用)
  11. JavaScript数组你都掰扯不明白,简历上你敢写精通JavaScript?
  12. windows2008 FTP下载“当前的安全设置不允许”的解决方法
  13. PTA L1-087(C++) 机工士姆斯塔迪奥
  14. Tivoli Workload Scheduler (TWS)
  15. 基于python的-正则中的函数
  16. php中如何插入图片,php如何添加图片
  17. 移动APP测试用例设计实践经验(转载)
  18. astype函数的使用
  19. 计算机技巧资讯,玩转电脑需知技巧
  20. 生产者与消费者问题------legend050709

热门文章

  1. 认识Cuckoo Sandbox
  2. 独立模式(Standone Mode)启动Spark
  3. 微信小程序 相同appid项目名称重复解决办法
  4. 第四届中国软件开源创新大赛“代码评注赛”季度评审结果出炉
  5. Spring 官网阅读指南
  6. java的actionlistener_Java swing: 实现ActionListener监听器的三种途径
  7. Java后台做 短信验证码、短信通知,阿里云短信服务
  8. vue 手机移动端预览pdf
  9. 用php的for循环实现金字塔
  10. MINTEL-重启零售:线上加实体——附下载链接