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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
python实现bucket排序算法实例分析
May 04 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
Django自定义用户认证示例详解
Mar 14 Python
Python异常处理操作实例详解
Aug 28 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
Python高级property属性用法实例分析
Nov 19 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
python实现简单的购物程序代码实例
Mar 03 Python
Python排序函数的使用方法详解
Dec 11 Python
pytorch锁死在dataloader(训练时卡死)
May 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
js模拟F11页面全屏显示
2019/09/17 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python之wxPython菜单使用详解
2014/09/28 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
蜜蜂引路教学反思
2014/02/04 职场文书
公益广告宣传方案
2014/02/28 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
个人党性分析总结
2015/03/05 职场文书
2015年采购部工作总结
2015/04/23 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python