Python torch.flatten()函数案例详解


Posted in Python onAugust 30, 2021

先看函数参数:

torch.flatten(input, start_dim=0, end_dim=-1)

input: 一个 tensor,即要被“推平”的 tensor。

start_dim: “推平”的起始维度。

end_dim: “推平”的结束维度。

首先如果按照 start_dim 和 end_dim 的默认值,那么这个函数会把 input 推平成一个 shape 为 [n][n] 的tensor,其中 nn 即 input 中元素个数。

如果我们要自己设定起始维度和结束维度呢?

我们要先来看一下 tensor 中的 shape 是怎么样的:

t = torch.tensor([[[1, 2, 2, 1],
                   [3, 4, 4, 3],
                   [1, 2, 3, 4]],
                  [[5, 6, 6, 5],
                   [7, 8, 8, 7],
                   [5, 6, 7, 8]]])
print(t, t.shape)
 
运行结果:
 
tensor([[[1, 2, 2, 1],
         [3, 4, 4, 3],
         [1, 2, 3, 4]],
 
        [[5, 6, 6, 5],
         [7, 8, 8, 7],
         [5, 6, 7, 8]]])
torch.Size([2, 3, 4])

我们可以看到,最外层的方括号内含两个元素,因此 shape 的第一个值是 2;类似地,第二层方括号里面含三个元素,shape 的第二个值就是 3;最内层方括号里含四个元素,shape 的第二个值就是 4。

示例代码:

x = torch.flatten(t, start_dim=1)
print(x, x.shape)
 
y = torch.flatten(t, start_dim=0, end_dim=1)
print(y, y.shape)
 
 
运行结果:
 
tensor([[1, 2, 2, 1, 3, 4, 4, 3, 1, 2, 3, 4],
        [5, 6, 6, 5, 7, 8, 8, 7, 5, 6, 7, 8]]) 
torch.Size([2, 12])
 
tensor([[1, 2, 2, 1],
        [3, 4, 4, 3],
        [1, 2, 3, 4],
        [5, 6, 6, 5],
        [7, 8, 8, 7],
        [5, 6, 7, 8]]) 
torch.Size([6, 4])

可以看到,当 start_dim = 11 而 end_dim = −1−1 时,它把第 11 个维度到最后一个维度全部推平合并了。而当 start_dim = 00 而 end_dim = 11 时,它把第 00 个维度到第 11 个维度全部推平合并了。pytorch中的 torch.nn.Flatten 类和 torch.Tensor.flatten 方法其实都是基于上面的 torch.flatten 函数实现的。

到此这篇关于Python torch.flatten()函数案例详解的文章就介绍到这了,更多相关Python torch.flatten()函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
Django入门使用示例
Dec 12 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
windows下python安装小白入门教程
Sep 18 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
Python之基础函数案例详解
Aug 30 #Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 #Python
python使用matplotlib绘制图片时x轴的刻度处理
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 #Python
OpenCV绘制圆端矩形的示例代码
Aug 30 #Python
python中super()函数的理解与基本使用
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 #Python
You might like
聊天室php&mysql(二)
2006/10/09 PHP
PHP安装攻略:常见问题解答(一)
2006/10/09 PHP
PHP产生随机字符串函数
2006/12/06 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Python BS4库的安装与使用详解
2018/08/08 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python opencv如何实现图片绘制
2020/01/19 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
python实现xml转json文件的示例代码
2020/12/30 Python
简单叙述一下MYSQL的优化
2016/05/09 面试题
应届大学生求职信
2013/12/01 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
2014年关工委工作总结
2014/11/17 职场文书
鸟的天堂导游词
2015/01/31 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技