什么是变量Variable

在torch中的variable就是一个存放会变化的值的地理位置,里面的值会不停的变化。就像一个装鸡蛋的篮子,鸡蛋数量会不停变动,谁是里面的鸡蛋呢?自然就是torch的tensor了。如果用一个variable进行计算,那返回的也是一个同类型的variable。

例子

import torch
from torch.autograd import Variable # torch 中 Variable 模块# 先生鸡蛋
tensor = torch.FloatTensor([[1,2],[3,4]])
# 把鸡蛋放到篮子里, requires_grad是参不参与误差反向传播, 要不要计算梯度
variable = Variable(tensor, requires_grad=True)print(tensor)
"""1  23  4
[torch.FloatTensor of size 2x2]
"""print(variable)
"""
Variable containing:1  23  4
[torch.FloatTensor of size 2x2]
"""

variable计算,梯度

我们再对比一下tensor的计算和variable的计算

t_out = torch.mean(tensor*tensor)       # x^2
v_out = torch.mean(variable*variable)   # x^2
print(t_out)
print(v_out)    # 7.5

到目前为止,我们看不出什么不同,但是记住,variable计算的时候,它在背景幕布后面一步步默默地搭建着一个庞大的系统,叫做计算图,computaional graph。这个图是用来做什么的?原来是将所有的计算步骤(节点)都连接起来,最后进行误差反向传递的时候,一次性将所有variable里面的修改幅度(梯度)都计算出来,而tensor就没有这个能力了。

v_out = torch.mean(variable*variable) 就是在计算图中添加的一个计算步骤,计算误差反向传递的时候有他的一份功劳,我们就来举个例子

v_out.backward()    # 模拟 v_out 的误差反向传递# 下面两步看不懂没关系, 只要知道 Variable 是计算图的一部分, 可以用来传递误差就好.
# v_out = 1/4 * sum(variable*variable) 这是计算图中的 v_out 计算步骤
# 针对于 v_out 的梯度就是, d(v_out)/d(variable) = 1/4*2*variable = variable/2print(variable.grad)    # 初始 Variable 的梯度
'''0.5000  1.00001.5000  2.0000
'''

获取variable里面的数据

直接print(variable)只会输出variable形式的数据,在很多时候是用不了的(比如用plt画图),所以我们要转换一下,将它变成tensor形式

print(variable)     #  Variable 形式
"""
Variable containing:1  23  4
[torch.FloatTensor of size 2x2]
"""print(variable.data)    # tensor 形式
"""1  23  4
[torch.FloatTensor of size 2x2]
"""print(variable.data.numpy())    # numpy 形式
"""
[[ 1.  2.][ 3.  4.]]
"""

pytorch的变量variable相关推荐

  1. Pytorch中的variable, tensor与numpy相互转化的方法

    来源:https://blog.csdn.net/pengge0433/article/details/79459679 在使用pytorch作为深度学习的框架时,经常会遇到变量variable.张量 ...

  2. PyTorch中的Variable类型

    1 前言 今天在学习PyTorch~ 之前在莫烦的教程中看到了Variable类型的变量,后来看PyTorch的<Deep Learning with PyTorch: A 60 Minute ...

  3. Pytorch中的Variable

    Pytorch中的Variable pytorch两个基本对象:Tensor(张量)和Variable(变量) 其中,tensor不能反向传播,variable可以反向传播. Varibale包含三个 ...

  4. Qmake变量variable

    Qmake变量variable Qmake变量variable ANDROID_ABI ANDROID_ABIS ANDROID_API_VERSION ANDROID_BUNDLED_JAR_DEP ...

  5. c语言带variable的作用,C语言讲义——变量(variable)

    变量(variable) 变量用于存放数据 变量是供程序操作的存储区的名字 变量有类型,该类型决定了变量占用内存的大小 字节→ C语言有以下6种简单变量类型: 类型细分: 变量在内存中需要占据空间,内 ...

  6. Java for Selenium | Java中的变量variable、常量constant、字面量Literal

                                       Java中的变量.常量与字面量 什么是变量(variable)? 程序语言大多数时候都是在处理不同的数据,比如整型数据int,字符 ...

  7. Pytorch中的variable, tensor与numpy相互转化

    来源:https://blog.csdn.net/m0_37592397/article/details/88327248 1.将numpy矩阵转换为Tensor张量 sub_ts = torch.f ...

  8. Pytorch之认识Variable

    Tensor是Pytorch的一个完美组件(可以生成高维数组),但是要构建神经网络还是远远不够的,我们需要能够计算图的Tensor,那就是Variable.Variable是对Tensor的一个封装, ...

  9. cuda pytorch 环境变量_Windows10+CUDA 10.1.0+pytorch安装过程

    写这篇文章的主要目的是记录和分享一下自己成功安装的过程,如果有小伙伴正在被这个问题困扰的话,也可以看看是否能从这里找到解决的办法. 话不多说,先梳理一下我的大概流程安装CUDA 安装cuDNN 安装p ...

  10. pytorch中的Variable()

    参考链接:https://www.cnblogs.com/hellcat/p/8439055.html 函数简介 torch.autograd.Variable是Autograd的核心类,它封装了Te ...

最新文章

  1. 华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角
  2. windows中使用git和开源中国
  3. QSS为Qt程序添加不一样的样式
  4. python大量数据折线图-Python数据可视化练习:各种折线图的用法
  5. STM32的ADC通道间干扰的问题
  6. 二、配置数据源、SessionFactory、domain对象
  7. linux学习之运维篇
  8. java多线程之Executor框架
  9. Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享
  10. 精通python工资高吗-软件测试,如何工资过万?
  11. micropython常用模块-Python时间模块之datetime
  12. java中希腊字母表_希腊字母,希腊字母
  13. 2018永洪科技大数据技术上海峰会-唤醒数据.遇见未来
  14. java语音识别毕业设计,HMM的语音识别技术的毕业设计
  15. “海大学舍”Scrum Meeting(第十周会议记录)
  16. Windows 上安装 Bugzilla 详解
  17. syslog配置及测试
  18. 电子束光刻胶(HSQXR-1541-006,mr-I 9000M)
  19. SQL Server、MySQL知识点
  20. 他预言过Uber的成功、预言过川普的当选,但却预言不了这个!

热门文章

  1. TFIDF之python实现
  2. windows7所有版本迅雷地址下载集合(含32位和64位)
  3. 计算机主板纽扣电池缺电,主板的纽扣电池没电了怎么更换
  4. Eviews10 如何将季度数据转为月度数据(低频转高频)
  5. 阿里巴巴大数据之路-数据整合管理体系
  6. c4d安装没有出现语言文字,关于C4D以及渲染器插件安装时遇到的问题以及解决方法...
  7. shell题库选择题_linux题库选择及答案
  8. 金蝶kis专业版公网访问_金蝶KIS系统专业版客户端连接不上服务器处理方法
  9. java事务 深入Java事务的原理与应用
  10. android rxbus封装,Android RxBus的使用