参考   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. 神器推荐,可视化 Python 打包 exe,牛逼
  2. java什么是稳定排序,这可能是你听说过最快的稳定排序算法
  3. Python中提示:no module named 'PIL'
  4. codeblock在linux中安装 出错
  5. Android插件化开发基础之静态代理模式
  6. q7goodies事例_Java 8 Friday Goodies:本地交易范围
  7. python 地址_python 解析地址 | 学步园
  8. 项目管理中的沟通管理(转)
  9. 【转载】LinkedHashMap和HashMap区别
  10. 服务器ip直接访问php怎么写,php - 如何实现用公网ip访问到服务器上的网页?
  11. Maven的基本应用
  12. PYTHON——多线程:同步条件(Event)
  13. services.xml应该放在项目的哪里_新轮胎应该放在前轮还是后轮?
  14. android之mipmap文件夹
  15. 上网行为管理软件的功能
  16. 关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事
  17. Oracle学习(八)——————————————子查询
  18. css实现长英文字母自动换行
  19. GLES2.0中文API-glBlendFuncSeparate
  20. VUE 前端PDF分页预览、下载

热门文章

  1. 《Cortex-M3 权威指南 笔记》
  2. 联想小新 14、联想小新16 2023 标压版评测
  3. 8、HDFS内存存储策略支持和“冷热温”存储
  4. 如何在spring官网下载jar包
  5. 在线书法培训迎来新风口
  6. 深入理解观察者模式与发布订阅模式
  7. HttpClient调用WebService接口
  8. 开有多个门店的小老板如何记账和给员工发工资?
  9. 【 免费域名 】免费域名与阿里云服务器绑定
  10. 和别人共享网络,老有人用讯雷什么的,上网卡死了,自己写了局域网流量控制工具,开源出来大家共享