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创建一个最简单http webserver服务器的方法
May 08 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
如何基于python操作excel并获取内容
Dec 24 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 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程序的方法
2015/06/13 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python常见数制转换实例分析
2015/05/09 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
TensorFlow的权值更新方法
2018/06/14 Python
django缓存配置的几种方法详解
2018/07/16 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Python魔法方法详解
2019/02/13 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
办公室文秘自我评价
2013/09/21 职场文书
业务主管岗位职责
2013/11/20 职场文书
煤矿班组长的职责
2013/12/25 职场文书
技能竞赛活动方案
2014/02/21 职场文书
中学校庆方案
2014/03/17 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
2019暑假学生安全口号
2019/06/27 职场文书