参考

torch.flatten() - 云+社区 - 腾讯云

先看函数参数:

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 函数实现的。

torch.flatten()相关推荐

  1. torch.flatten()函数

    1)flatten(x,1)是按照x的第1个维度拼接(按照列来拼接,横向拼接): 2)flatten(x,0)是按照x的第0个维度拼接(按照行来拼接,纵向拼接): 3)有时候会遇到flatten里面有 ...

  2. PyTorch基础(15)-- torch.flatten()方法

    前言 最近在复现论文中一个块的时候需要使用到torch.flatten()这个方法,这个方法其实很简单,但其中有一些细节可能需要注意,且有个关键点很容易忘记,故在此记录以备查阅. 方法解析 flatt ...

  3. torch.flatten与torch.nn.flatten

    torch.nn.flatten torch.nn.flatten是一个类,作用为将连续的几个维度展平成一个tensor(将一些维度合并) 参数为合并开始的维度,合并结束的维度(维度就是索引,从 0 ...

  4. 【PyTorch】 torch.flatten()与nn.Flatten()的区别

    问题 torch.flatten()与nn.Flatten()都可以实现展开Tensor,那么二者的区别是什么呢? 方法 经过查阅相关资料,发现二者主要区别有: (1) 默认的dim不同,torch. ...

  5. torch.flatten作用是什么

    torch.flatten作用是什么 解释 例子 解释 torch.flatten 作用是改变张量的维度和维数,从指定的维度开始将后面维度的维数全部展成一个维度,新的维数就是被展开的所有维度的维数的乘 ...

  6. tensor.view()、torch.flatten()

    一.tensor.view() view()函数不改变原始数据. 例: import torchdata = torch.randn(2, 3, 3, 5, 5) #b,corps,c,h,w pri ...

  7. torch.flatten()函数详解

    自己的理解: 介绍torch.flatten()函数的具体使用方法1.首先创建一个三维张量2.调用torch.flatten()函数 import torchx = torch.randn(2, 3, ...

  8. torch.flatten、np.flatten 详解

    超链接:深度学习工作常用方法汇总,矩阵维度变化.图片.视频等操作,包含(torch.numpy.opencv等) B站视频讲解链接 1. 展平 :flatten torch版: x.flatten(n ...

  9. (超级详细)numpy与torch用法对比手册

    文章目录 前言 生成类操作 采样类 数学运算操作 判断类(布尔类)操作 矩阵形状操作 其他操作 前言 由于numpy比较基础和通用,但是GPU上跑实验必须使用tensor,故还是直接用torch里面的 ...

最新文章

  1. SAP MM Reset预留单上的Deletion Flag?
  2. 【Spark Summit East 2017】Kerberizing Spark
  3. 高通 8x12 添加 TP和按键
  4. 3 - SQL Server 2008 之 使用SQL语句删除约束条件
  5. AngularJS快速入门简介
  6. air什么意思中文_Air 的中文意思是什么?
  7. 华为愿出售5G技术渴望对手;苹果将向印度投资10亿美元;华为全联接大会首发计算战略;腾讯自研轻量级物联网操作系统正式开源……...
  8. shell中判断远程主机的某个tcp端口是否存活
  9. Redis学习总结(22)——Redis的主从复制是如何做的?复制过程中也会产生各种问题?
  10. PHP7通过yum源安装及性能测试
  11. 从武则天的故事看职场生涯规划的一个最重要方面
  12. 台式计算机的无线上网卡多少线,台式电脑可以用无线上网卡上网吗
  13. 动态面板数据模型及Eviews实现
  14. html鼠标悬停边框颜色,CSS实现鼠标悬停图片时的边框变色效果
  15. php中拼音转汉字,php 汉字拼音如何转换
  16. 解决win10笔记本电脑无法睡眠只是黑屏问题的方法
  17. 今日头条内推码URQVEYM社招,校招,实习应有尽有
  18. 王译潇20162314 实验报告四
  19. 软考证书的含金量有多高?
  20. Self Service Password部署

热门文章

  1. 空气质量模型学习笔记 ① -----(模型基本介绍)
  2. 网吧服务器用户锁怎么办,如何进行网吧安全模式的锁定与解除
  3. Java中有哪几种常见的设计模式
  4. 软件工程一位大三学生成功上大学的案例
  5. 《奇点来临》——Linked-In上“奇点临近”论坛的观点
  6. 先进后出的数据结构-栈 一
  7. java全栈系列之JavaSE-稀释数组029
  8. semi-colon expectedcss(css-semicolonexpected)报错解决
  9. 【opencv-c++】cv::inRange阈值操作选择指定值范围的像素
  10. 数据库逻辑设计之 三大范式 及 反范式化 优缺点