Pytorch教程(十三):reshape、squeeze、flatten

reshape

首先我们创建一个tensor,shape: 3 × 4 3 \times 4 3×4,是一个两个轴的二阶张量。第一个轴的长度是3,第二个轴的长度是4,第一个轴的元素是数组,第二个轴的元素是数字
Pytorch教程(十三):reshape、squeeze、flatten_第1张图片
我们可以用torch.size()或者torch.shape来获取形状
Pytorch教程(十三):reshape、squeeze、flatten_第2张图片
张量形状给出的另一个重要特征是张量中包含的元素的个数,也可以通过获取shape中各分量的值乘积来推导出来:
Pytorch教程(十三):reshape、squeeze、flatten_第3张图片
因为我们的元素有12个,因此任何reshape操作都必须考虑这12个元素。
Pytorch教程(十三):reshape、squeeze、flatten_第4张图片

squeeze压缩

Pytorch教程(十三):reshape、squeeze、flatten_第5张图片
squeeze()压缩一个张量可以移除所有长度为1的轴axis,而解压一个张量则会增加一个长度为1的维度。因此squeezeunsqueeze可以扩大或缩小张量的秩。

flatten

通过构建一个flatten来压缩一个张量,当我们把一个张量拉平时,意味着我们把张量变成了更低秩的张量。所以flatten,本质上就是压缩张量,压缩一个张量意味着除去所有的轴,只保留一个,他创造了一个单轴的张量,它包含了张量元素。

一个flatten操作,是当我们从一个卷积层过渡到一个全连接层时必须在神经网络中发生的操作。传递给全连接层的卷积层输出必须在进入全连接层之前进行flatten。

flatten是一种特殊的reshape,即将所有的轴都被积压在一起。

Pytorch教程(十三):reshape、squeeze、flatten_第6张图片
Pytorch教程(十三):reshape、squeeze、flatten_第7张图片

cat拼接

你可能感兴趣的:(pytorch教程,pytorch,深度学习,神经网络)