Pytorch详细教程——10.Flatten, Reshape, And Squeeze Explained

10. Flatten, Reshape, And Squeeze Explained - Tensors For Deep Learning With PyTorch

我们开始用tensor进行简单操作

对于tensor的操作主要有四种

  1. 重塑操作
  2. 元素操作
  3. 元素还原操作
  4. 元素访问操作

在这里插入图片描述

最后这个len(t.shape)代表知道t的秩
在这里插入图片描述

先把t.shape变成tensor类,再用prod求tensor 的数量,也就是包含12个分量
在这里插入图片描述
或者用这个特定 的函数方法,这个numel就是number element的缩写在这里插入图片描述

张量的重塑操作:只改变形状,不会变张量的数量,只要重塑的形状乘积是12就可以了。

在下面这些例子中我们用两个因子使秩保持在2,但是如果我们使用三个元素,我们可以改变秩
在这里插入图片描述
在这里插入图片描述
我们可以通过squeezing(压缩)和unsqueezing(解压缩)它们

squeezing是压缩一个向量可以移除所有长度为1的轴,而解压缩一个张量则是增加一个长度为1的维度,这些函数允许我们扩大或者缩小张量的秩

在这里插入图片描述

flatten一个tensor意味着除去所有的轴,只保留一个,它创造了一个单轴的张量,它包含了张量的元素,所以本质上是把一个张量拉平,我们创建了一个一维数组,它包含了张量的所有标量分量。

一个flatten操作是当我们从一个卷积层过度到一个全连接层时必须在神经网络中发生的操作,我们从卷积层获得输出,它以输出通道的形式给我们在这里插入图片描述
我们把这些通道变平成一个单一的一维数组在这里插入图片描述
当我们建立 CNN的时候,我们会看到这一点

因为输入的张量是任何形状的,我们通过-1来表示重塑函数的第二个参数,在pytorch中-1会告诉reshape函数,根据一个张量中的包含的其他值和元素的个数来求出值应该是多少(可以理解为占位符?),因为t有12个元素,这个被重塑的函数能够计算出第二个轴的长度是12个,以确保一个张量中的元素空间足够大
在这里插入图片描述
这个flatten后的结果


实际上可以通过重塑方法可以实现flatten操作的另一种方法,就是t.reshape(-1)

张量的拼接操作

我们可以使用Pytorch的cat函数来组合两个张量来做到这一点,就两个张量的形状而言,我们计算他们的方式会影响输出张量结果的形状。

在这里插入图片描述
dim=0是按照轴为0,也就是横着排列
在这里插入图片描述
dim=1是按照轴为1,也就是竖着排列
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值