pytorch的变量variable
什么是变量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相关推荐
- Pytorch中的variable, tensor与numpy相互转化的方法
来源:https://blog.csdn.net/pengge0433/article/details/79459679 在使用pytorch作为深度学习的框架时,经常会遇到变量variable.张量 ...
- PyTorch中的Variable类型
1 前言 今天在学习PyTorch~ 之前在莫烦的教程中看到了Variable类型的变量,后来看PyTorch的<Deep Learning with PyTorch: A 60 Minute ...
- Pytorch中的Variable
Pytorch中的Variable pytorch两个基本对象:Tensor(张量)和Variable(变量) 其中,tensor不能反向传播,variable可以反向传播. Varibale包含三个 ...
- Qmake变量variable
Qmake变量variable Qmake变量variable ANDROID_ABI ANDROID_ABIS ANDROID_API_VERSION ANDROID_BUNDLED_JAR_DEP ...
- c语言带variable的作用,C语言讲义——变量(variable)
变量(variable) 变量用于存放数据 变量是供程序操作的存储区的名字 变量有类型,该类型决定了变量占用内存的大小 字节→ C语言有以下6种简单变量类型: 类型细分: 变量在内存中需要占据空间,内 ...
- Java for Selenium | Java中的变量variable、常量constant、字面量Literal
Java中的变量.常量与字面量 什么是变量(variable)? 程序语言大多数时候都是在处理不同的数据,比如整型数据int,字符 ...
- Pytorch中的variable, tensor与numpy相互转化
来源:https://blog.csdn.net/m0_37592397/article/details/88327248 1.将numpy矩阵转换为Tensor张量 sub_ts = torch.f ...
- Pytorch之认识Variable
Tensor是Pytorch的一个完美组件(可以生成高维数组),但是要构建神经网络还是远远不够的,我们需要能够计算图的Tensor,那就是Variable.Variable是对Tensor的一个封装, ...
- cuda pytorch 环境变量_Windows10+CUDA 10.1.0+pytorch安装过程
写这篇文章的主要目的是记录和分享一下自己成功安装的过程,如果有小伙伴正在被这个问题困扰的话,也可以看看是否能从这里找到解决的办法. 话不多说,先梳理一下我的大概流程安装CUDA 安装cuDNN 安装p ...
- pytorch中的Variable()
参考链接:https://www.cnblogs.com/hellcat/p/8439055.html 函数简介 torch.autograd.Variable是Autograd的核心类,它封装了Te ...
最新文章
- 华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角
- windows中使用git和开源中国
- QSS为Qt程序添加不一样的样式
- python大量数据折线图-Python数据可视化练习:各种折线图的用法
- STM32的ADC通道间干扰的问题
- 二、配置数据源、SessionFactory、domain对象
- linux学习之运维篇
- java多线程之Executor框架
- Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享
- 精通python工资高吗-软件测试,如何工资过万?
- micropython常用模块-Python时间模块之datetime
- java中希腊字母表_希腊字母,希腊字母
- 2018永洪科技大数据技术上海峰会-唤醒数据.遇见未来
- java语音识别毕业设计,HMM的语音识别技术的毕业设计
- “海大学舍”Scrum Meeting(第十周会议记录)
- Windows 上安装 Bugzilla 详解
- syslog配置及测试
- 电子束光刻胶(HSQXR-1541-006,mr-I 9000M)
- SQL Server、MySQL知识点
- 他预言过Uber的成功、预言过川普的当选,但却预言不了这个!
热门文章
- TFIDF之python实现
- windows7所有版本迅雷地址下载集合(含32位和64位)
- 计算机主板纽扣电池缺电,主板的纽扣电池没电了怎么更换
- Eviews10 如何将季度数据转为月度数据(低频转高频)
- 阿里巴巴大数据之路-数据整合管理体系
- c4d安装没有出现语言文字,关于C4D以及渲染器插件安装时遇到的问题以及解决方法...
- shell题库选择题_linux题库选择及答案
- 金蝶kis专业版公网访问_金蝶KIS系统专业版客户端连接不上服务器处理方法
- java事务 深入Java事务的原理与应用
- android rxbus封装,Android RxBus的使用