reshape
首先我们创建一个tensor,shape:
3
×
4
3 \times 4
3×4,是一个两个轴的二阶张量。第一个轴的长度是3,第二个轴的长度是4,第一个轴的元素是数组,第二个轴的元素是数字
我们可以用torch.size()
或者torch.shape
来获取形状
张量形状给出的另一个重要特征是张量中包含的元素的个数,也可以通过获取shape中各分量的值乘积来推导出来:
因为我们的元素有12个,因此任何reshape操作都必须考虑这12个元素。
squeeze压缩
squeeze()
压缩一个张量可以移除所有长度为1的轴axis
,而解压一个张量则会增加一个长度为1的维度。因此squeeze
和unsqueeze
可以扩大或缩小张量的秩。
flatten
通过构建一个flatten来压缩一个张量,当我们把一个张量拉平时,意味着我们把张量变成了更低秩的张量。所以flatten,本质上就是压缩张量,压缩一个张量意味着除去所有的轴,只保留一个,他创造了一个单轴的张量,它包含了张量元素。
一个flatten操作,是当我们从一个卷积层过渡到一个全连接层时必须在神经网络中发生的操作。传递给全连接层的卷积层输出必须在进入全连接层之前进行flatten。
flatten是一种特殊的reshape,即将所有的轴都被积压在一起。