基于PyTorch中view的用法说明


Posted in Python onMarch 03, 2021

相当于numpy中resize()的功能,但是用法可能不太一样。

我的理解是:

把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。

比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。

比如,

a=torch.Tensor([[[1,2,3],[4,5,6]]])
b=torch.Tensor([1,2,3,4,5,6])
print(a.view(1,6))
print(b.view(1,6))

得到的结果都是

tensor([[1., 2., 3., 4., 5., 6.]])

再看一个例子:

a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.view(3,2))

将会得到:

tensor([[1., 2.],
    [3., 4.],
    [5., 6.]])

相当于就是从1,2,3,4,5,6顺序的拿数组来填充需要的形状。但是如果您想得到如下的结果:

tensor([[1., 4.],
    [2., 5.],
    [3., 6.]])

就需要使用另一个函数了:permute()。用法参见我的另一篇博客:PyTorch中permute的用法

另外,参数不可为空。参数中的-1就代表这个位置由其他位置的数字来推断,只要在不致歧义的情况的下,view参数就可以推断出来,也就是人可以推断出形状的情况下,view函数也可以推断出来。

比如a tensor的数据个数是6个,如果view(1,-1),我们就可以根据tensor的元素个数推断出-1代表6。

而如果是view(-1,-1,2),人不知道怎么推断,机器也不知道。

还有一种情况是人可以推断出来,但是机器推断不出来的:view(-1,-1,6),人可以知道-1都代表1,但是机器不允许同时有两个负1。

如果没有-1,那么所有参数的乘积就要和tensor中元素的总个数一致了,否则就会出现错误。

补充:pytorch中x.view()和permute用法

pytorch中x.view()用法

在pytorch中经常会看到x.view(),它表示将Tensor的维度转变为view指定的维度,有点类似于resize函数

b=torch.Tensor([[[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]])
print(b.size())
(1, 2, 3, 3)
print(b.view(b.size(0),-1))
tensor([[1., 2., 3., 4., 5., 6., 7., 8., 9., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
print(b.view(b.size(0),-1).size())
(1, 18)

b.size(0)表示b中0维度==1,-1是按照原数据自动分配的列数。

a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.size())
(1, 2, 3)
print(a.view(6,-1))
tensor([[1.],
[2.],
[3.],
[4.],
[5.],
[6.]])
print(a.view(6,-1).size())
(6, 1)

将a转变成6行1列

print(a.view(-1,6).size())
(1, 6)

或者将a转变成1行6列

在程序里还经常见到view函数后面跟着permute()函数,这个函数是做维度换位的

print(a.view(-1,6).permute(1,0))
tensor([[1.],
[2.],
[3.],
[4.],
[5.],
[6.]])
print(a.view(-1,6).permute(1,0).size())
(6, 1)

加了permute,a就由(1,6)变成(6,1)了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
10款最好的Web开发的 Python 框架
Mar 18 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
Python SQLite3简介
Feb 22 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
Python学习笔记之For循环用法详解
Aug 14 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
实现Python与STM32通信方式
Dec 18 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
Python中with上下文管理协议的作用及用法
Mar 18 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 #Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 #Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 #Python
Pytorch 中的optimizer使用说明
Mar 03 #Python
解决pytorch 的state_dict()拷贝问题
Mar 03 #Python
解决pytorch 保存模型遇到的问题
Mar 03 #Python
解决pytorch 模型复制的一些问题
Mar 03 #Python
You might like
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
PHP与以太坊交互详解
2018/08/24 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
JS 控件事件小结
2012/10/31 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python简易远程控制单线程版
2018/06/20 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python文件路径名的操作方法
2019/10/30 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
应届生财务管理求职信
2013/11/06 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
不错的求职信范文
2014/07/20 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
加入学生会自荐书
2015/03/05 职场文书
企业战略合作意向书
2015/05/08 职场文书
公司周年庆寄语
2019/06/21 职场文书