基于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 相关文章推荐
django中send_mail功能实现详解
Feb 06 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
Python面向对象之类和实例用法分析
Jun 08 Python
python3.6生成器yield用法实例分析
Aug 23 Python
python实现的发邮件功能示例
Sep 11 Python
如何在django中实现分页功能
Apr 22 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
Pandas的Apply函数具体使用
Jul 21 Python
python实现的web监控系统
Apr 27 Python
Python中的min及返回最小值索引的操作
May 10 Python
Pytorch 如何实现LSTM时间序列预测
May 17 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
php5.x禁用eval的操作方法
2018/10/19 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
JS动画效果代码3
2008/04/03 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
浅析vue中的MVVM实现原理
2019/03/04 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
详解python读取和输出到txt
2019/03/29 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
承租经营合作者协议书
2014/10/01 职场文书
2014年信访工作总结
2014/11/17 职场文书
公司文体活动总结
2015/05/07 职场文书
董事会决议范本
2015/07/01 职场文书
学习委员竞选稿
2015/11/20 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书