PyTorch中Variable变量
一、了解Variable
顾名思义,Variable就是 变量 的意思。实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这正好就符合了反向传播,参数更新的属性。
具体来说,在pytorch中的Variable就是一个存放会变化值的地理位置,里面的值会不停发生片花,就像一个装鸡蛋的篮子,鸡蛋数会不断发生变化。那谁是里面的鸡蛋呢,自然就是pytorch中的tensor了。(也就是说,pytorch都是有tensor计算的,而tensor里面的参数都是Variable的形式)。如果用Variable计算的话,那返回的也是一个同类型的Variable。
【tensor 是一个多维矩阵】
用一个例子说明,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]
"""
注:tensor不能反向传播,variable可以反向传播。
二、Variable求梯度
Variable计算时,它会逐渐地生成计算图。这个图就是将所有的计算节点都连接起来,最后进行误差反向传递的时候,一次性将所有Variable里面的梯度都计算出来,而tensor就没有这个能力。
v_out.backward() # 模拟 v_out 的误差反向传递print(variable.grad) # 初始 Variable 的梯度
'''0.5000 1.00001.5000 2.0000
'''
三、获取Variable里面的数据
直接print(Variable) 只会输出Variable形式的数据,在很多时候是用不了的。所以需要转换一下,将其变成tensor形式。
print(variable) # Variable 形式
"""
Variable containing:1 23 4
[torch.FloatTensor of size 2x2]
"""print(variable.data) # 将variable形式转为tensor 形式
"""1 23 4
[torch.FloatTensor of size 2x2]
"""print(variable.data.numpy()) # numpy 形式
"""
[[ 1. 2.][ 3. 4.]]
"""
扩展
在PyTorch中计算图的特点总结如下:
autograd根据用户对Variable的操作来构建其计算图。
- requires_grad
variable默认是不需要被求导的,即requires_grad属性默认为False,如果某一个节点的requires_grad为True,那么所有依赖它的节点requires_grad都为True。 - volatile
variable的volatile属性默认为False,如果某一个variable的volatile属性被设为True,那么所有依赖它的节点volatile属性都为True。volatile属性为True的节点不会求导,volatile的优先级比requires_grad高。 - retain_graph
多次反向传播(多层监督)时,梯度是累加的。一般来说,单次反向传播后,计算图会free掉,也就是反向传播的中间缓存会被清空【这就是动态度的特点】。为进行多次反向传播需指定retain_graph=True来保存这些缓存。 - .backward()
反向传播,求解Variable的梯度。放在中间缓存中。
主要参考:
[1] https://blog.csdn.net/liuhongkai111/article/details/81291003
[2] https://zm10.sm-tc.cn/?src=l4uLj4zF0NCIiIjRnJGdk5CYjNGckJLQl5qTk5yei9CejYuWnJOajNDHy8vGz8zO0ZeLkpM%3D&uid=f3737415e9557099fc449754849c7d19&hid=a1e29e2ae407bbcbd5945b3277d7f9e2&pos=5&cid=9&time=1544919030860&from=click&restype=1&pagetype=0020000002000408&bu=web&query=Pytorch中Variable的作用&mode=&v=1&force=true&wap=false&province=辽宁省&city=大连市&uc_param_str=dnntnwvepffrgibijbprsvdsdichei
PyTorch中Variable变量相关推荐
- PyTorch中Variable变量与torch.autograd.Variable
一.了解Variable 顾名思义,Variable就是 变量 的意思.实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这正好就符合了反向传播,参数更新的属性. 具体来说,在pyt ...
- 神经网路:pytorch中Variable和view参数解析
在PyTorch中计算图的特点总结如下: autograd根据用户对Variable的操作来构建其计算图. requires_grad variable默认是不需要被求导的,即requires_gra ...
- python中list函数中variables变量_如何在Python中使用变量,浅谈,Pytorch,的,Variable,方法...
Variable的基本概念 autograd.Variable 是包的核心类.它包装了张量,并且支持几乎所有的操作.一旦你完成了你的计算, 就可以调用 .backward() 方法 来 自动计算所有的 ...
- Pytorch中的variable, tensor与numpy相互转化
来源:https://blog.csdn.net/m0_37592397/article/details/88327248 1.将numpy矩阵转换为Tensor张量 sub_ts = torch.f ...
- python variable_PyTorch中的Variable变量详解
一.了解Variable 顾名思义,Variable就是 变量 的意思.实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这正好就符合了反向传播,参数更新的属性. 具体来说,在pyt ...
- Pytorch:variable中grad属性和backward函数grad_variables参数的含义
In [51]: x = t.arange(0,3, requires_grad=True,dtype=t.float) y = x**2 + x*2 z = y.sum() z.backward() ...
- PyTorch中的Variable类型
1 前言 今天在学习PyTorch~ 之前在莫烦的教程中看到了Variable类型的变量,后来看PyTorch的<Deep Learning with PyTorch: A 60 Minute ...
- Pytorch中的Variable
Pytorch中的Variable pytorch两个基本对象:Tensor(张量)和Variable(变量) 其中,tensor不能反向传播,variable可以反向传播. Varibale包含三个 ...
- R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format)、如果没有指定行标识符号,则所有的字段都会放入variable变量中
R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format).如果没有指定行标识符号,则所有的字段都会放入variable变量中 目录
最新文章
- 从存储区提供程序的数据读取器中进行读取时出错_三菱伺服控制程序写法破析...
- datetimepicker 基础使用/select2 基础使用
- iwrite提交不了作业_在云端,我们把花样作业pick起来!
- 西湖大学最年轻博导来了丨93年出生的他,想创造属于中国的“追光”纪录
- hypermesh安装包百度云_HYPERMESH11.0 64bt软件
- OPPO 实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移
- 苹果绕过ID_苹果iphone绕ID教程
- w ndows10备份,Win10备份工具哪个最好?轻松备份会让你知道
- jenkins如何清缓存_Maven本地缓存清理小工具
- CodeIgniter 源码解读之模型
- 让发展中国家展示清洁能源领导力
- python软件是免费的吗-python免费吗
- php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识
度量声音强度,大 - phpStudy...
- 人机猜拳代码python_python 实现人和电脑猜拳的示例代码
- 自学Python:按照日期自动分类照片
- ChemOffice Suite 2018 18.1.2.18
- 二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历
- java date 操作_java日期操作-java Date-java Calendar-嗨客网
- EasyRecovery15专业电脑数据恢复黑科技软件
- Word中样式与样式集