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中使用不同编码读写txt文件详解
May 28 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
用pycharm开发django项目示例代码
Oct 24 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
Python发展史及网络爬虫
Jun 19 Python
学习Python列表的基础知识汇总
Mar 10 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
python创建字典及相关管理操作
Apr 13 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
js如何打印object对象
2015/10/16 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
js数组去重的hash方法
2016/12/22 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Python3常见函数range()用法详解
2019/12/30 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
在职研究生自我鉴定
2013/10/16 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
海洋天堂观后感
2015/06/05 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
vue实现Toast组件轻提示
2022/04/10 Vue.js
Linux中sftp常用命令整理
2022/06/28 Servers