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异常处理总结
Aug 15 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
python实现基于SVM手写数字识别功能
May 27 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
python 把列表转化为字符串的方法
Oct 23 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
python制作图片缩略图
Apr 30 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 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
PHP也可以?成Shell Script
2006/10/09 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
简单实现python数独游戏
2018/03/30 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
Python Collatz序列实现过程解析
2019/10/12 Python
Python文件操作基础流程解析
2020/03/19 Python
浅谈Python协程
2020/06/17 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
毕业生大学生活自我总结
2014/01/31 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
邀请函怎么写
2015/01/30 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
python文件与路径操作神器 pathlib
2022/04/01 Python