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 相关文章推荐
在Django中创建动态视图的教程
Jul 15 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
python获取url的返回信息方法
Dec 17 Python
Python函数装饰器实现方法详解
Dec 22 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
python中常见错误及解决方法
Jun 21 Python
Django解决frame拒绝问题的方法
Dec 18 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
Elasticsearch 批量操作
Apr 19 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的可变变量名的使用方法分享
2012/02/05 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
python使用mysqldb连接数据库操作方法示例详解
2013/12/03 Python
深入理解Python中的内置常量
2017/05/20 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
班队活动设计方案
2014/01/30 职场文书
专家推荐信模板
2014/05/09 职场文书
监督检查工作方案
2014/05/28 职场文书
平遥古城导游词
2015/02/03 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
python基础详解之if循环语句
2021/04/24 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Mysql 设置boolean类型的操作
2021/06/04 MySQL