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 相关文章推荐
Python装饰器decorator用法实例
Nov 10 Python
Python计算三维矢量幅度的方法
Jun 15 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
Python进行数据提取的方法总结
Aug 22 Python
Python设计模式之门面模式简单示例
Jan 09 Python
python3读取csv和xlsx文件的实例
Jun 22 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
python 元组和列表的区别
Dec 30 Python
Python类class参数self原理解析
Nov 19 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
python实现学生信息管理系统源码
Feb 22 Python
Python 循环读取数据内存不足的解决方案
May 25 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
Angular之toDoList的实现代码示例
2017/12/02 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
Python日期操作学习笔记
2008/10/07 Python
简单介绍Python中的floor()方法
2015/05/15 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
python画图的函数用法以及技巧
2019/06/28 Python
python 日期排序的实例代码
2019/07/11 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
宣传策划类求职信范文
2014/01/31 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
关于环保的建议书
2014/05/12 职场文书
网络技术专业求职信
2014/07/13 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
vue判断按钮是否可以点击
2022/04/09 Vue.js