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 相关文章推荐
详解Django中的过滤器
Jul 16 Python
python实现感知器算法详解
Dec 19 Python
Numpy中的mask的使用
Jul 21 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
python实现扫描ip地址的小程序
Apr 16 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
使用Python将语音转换为文本的方法
Aug 10 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
python访问纯真IP数据库的代码
2011/05/19 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python中IPYTHON入门实例
2015/05/11 Python
python基础教程之匿名函数lambda
2017/01/17 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
计算机实训报告总结
2014/11/05 职场文书
学生犯错保证书
2015/05/09 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
postgresql中如何执行sql文件
2023/05/08 PostgreSQL