Pytorch之view及view_as使用详解


Posted in Python onDecember 31, 2019

view()函数是在torch.Tensor.view()下的一个函数,可以有tensor调用,也可以有variable调用。

其作用在于返回和原tensor数据个数相同,但size不同的tensor

【Numpy中的size是元素个数,但是在Pytorch中size等价为Numpy中的shape】

view函数的-1参数的作用在于基于另一参数,自动计算该维度的大小

很重要的一点

view函数只能由于contiguous的张量上,具体而言,就是在内存中连续存储的张量。

具体而言,可以参看 https://3water.com/article/177564.htm

所以,当tensor之前调用了transpose, permute函数就会是tensor内存中变得不再连续,就不能调用view函数。

所以,应该提前做tensor.contiguous()的操作

view函数与Pytorch0.4中新增的reshape的区别

reshape函数调用是不依赖于tensor在内存中是不是连续的。

reshape ≈ tensor.contiguous().view

代码

import numpy as np
import torch
from torch.autograd import Variable
 
x = torch.Tensor(2,2,2)
print(x)
 
y = x.view(1,8)
print(y)
 
z = x.view(-1,4) # the size -1 is inferred from other dimensions
print(z)
 
t = x.view(8)
print(t)

输出

tensor([[[1.3712e-14, 6.4069e+02],
   [4.3066e+21, 1.1824e+22]],

  [[4.3066e+21, 6.3828e+28],
   [3.8016e-39, 0.0000e+00]]])

#x.view(1,8)生成的是[1,8]的张量
tensor([[1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22, 4.3066e+21, 6.3828e+28,
   3.8016e-39, 0.0000e+00]])

#x.view(-1,4)其中-1是在4下的另一个维度的大小,也就是8/4=2,所以生成的是[2,4]的张量
tensor([[1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22],
  [4.3066e+21, 6.3828e+28, 3.8016e-39, 0.0000e+00]])

x.view(8)生成的是[8,]的张量,是个数组
tensor([1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22, 4.3066e+21, 6.3828e+28,
  3.8016e-39, 0.0000e+00])

view_as

返回被视作与给定的tensor相同大小的原tensor。 等效于:

self.view(tensor.size())

具体用法为:

代码

a = torch.Tensor(2, 4)
b = a.view_as(torch.Tensor(4, 2))
print (b)

输出

tensor([[1.3712e-14, 6.4069e+02],
  [4.3066e+21, 1.1824e+22],
  [4.3066e+21, 6.3828e+28],
  [3.8016e-39, 0.0000e+00]])

以上这篇Pytorch之view及view_as使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
python获取目录下所有文件的方法
Jun 01 Python
python编码最佳实践之总结
Feb 14 Python
Python正则表达式知识汇总
Sep 22 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
Python实现AI换脸功能
Apr 10 Python
Python实现微信表情包炸群功能
Jan 28 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 #Python
如何基于Python创建目录文件夹
Dec 31 #Python
Pytorch之contiguous的用法
Dec 31 #Python
python实现将json多行数据传入到mysql中使用
Dec 31 #Python
Pytorch之Variable的用法
Dec 31 #Python
Pytorch 多块GPU的使用详解
Dec 31 #Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 #Python
You might like
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
python文件操作相关知识点总结整理
2016/02/22 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
大学军训感想
2014/02/12 职场文书
团队拓展活动方案
2014/08/28 职场文书
组工干部演讲稿
2014/09/02 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android