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图片验证码生成代码
Jul 02 Python
python实现决策树分类算法
Dec 21 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
python 列表推导式使用详解
Aug 29 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
python hashlib加密实现代码
Oct 17 Python
为什么称python为胶水语言
Jun 16 Python
Python gevent协程切换实现详解
Sep 14 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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比较两个绝对时间的大小
2014/01/31 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
js实现点赞效果
2020/03/16 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python Socket编程入门教程
2014/07/11 Python
Python压缩和解压缩zip文件
2015/02/14 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
python根据日期返回星期几的方法
2015/07/06 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
python之pandas用法大全
2018/03/13 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
python将数组n等分的实例
2019/12/02 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
酒店行政人事部经理职务说明书
2014/02/26 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
团委工作总结2015
2015/04/02 职场文书
感恩父母主题班会
2015/08/12 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers
Oracle中日期的使用方法实例
2022/07/07 Oracle