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用list或dict字段模式读取文件的方法
Jan 10 Python
Django实现组合搜索的方法示例
Jan 23 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
Django web框架使用url path name详解
Apr 29 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
python的re模块使用方法详解
Jul 26 Python
Python tcp传输代码实例解析
Mar 18 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
Python数据可视化之绘制柱状图和条形图
May 25 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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技巧与注意事项分析
2011/02/03 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php常用数学函数汇总
2014/11/21 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
js解决movebox移动问题
2016/03/29 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python提取频域特征知识点浅析
2019/03/04 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
中职三好学生事迹材料
2014/08/24 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers