【Pytorch】unsqueeze()与squeeze()详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Pytorch】unsqueeze()与squeeze()详解相关的知识,希望对你有一定的参考价值。

参考技术A

squeeze()主要用于对数据的维度进行压缩或者解压的

官方文档

注意:

输入的张量和返回的张量共用一段内存空间,改变了其中一个,其余的都会被改变

参数:

多维张量本质上就是一个变换,如果维度是 1 ,那么,1 仅仅起到扩充维度的作用,而没有其他用途,因而,在进行降维操作时,为了加快计算,是可以去掉这些 1 的维度。

总结: 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。squeeze(a)就是将a中所有为1的维度删掉。不为1的维度没有影响。a.squeeze(N) 就是去掉a中指定的维数为一的维度。还有一种形式就是b=torch.squeeze(a,N) a中去掉指定的定的维数为一的维度。

总结: 给指定位置加上维数为一的维度,比如原本有个三行的数据(3),在0的位置加了一维就变成一行三列(1,3)。a.unsqueeze(N) 就是在a中指定位置N加上一个维数为1的维度。

参考: https://zhuanlan.zhihu.com/p/86763381

PyTorch中使用 Noneunsqueeze()squeeze() 改变 tensor 的维度

1、使用 None 增加 tensor 的维度

在维度中使用 None 可以在所在维度中增加一维。

2、使用 unsqueeze() 增加 tensor 的维度

torch.unsqueeze(input, dim) → Tensor
torch.Tensor.unsqueeze(dim) → Tensor

  • 参数:
  • input:input tensor.
  • dim:在 dim 所在的索引位置插入一个新的维度,索引范围在 [-input.dim() - 1, input.dim() + 1) 之间。

3、使用 squeeze() 压缩 tensor 的维度

torch.squeeze(input, dim=None) → Tensor
torch.Tensor.squeeze(dim=None) → Tensor

  • 参数:
  • input:input tensor.
  • dim:要压缩的维度索引,如果 dim 为 None,则压缩 input tensor 中所有维度为 1 的维度,如果 dim 指定,则当 dim 索引所在的维度为1时,只压缩该维度,当 dim 索引所在的维度不为1时,不做压缩。

以上是关于【Pytorch】unsqueeze()与squeeze()详解的主要内容,如果未能解决你的问题,请参考以下文章

pytorch中squeeze()和unsqueeze()函数介绍

Pytorch中的squeeze()和unsqueeze()函数

Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()

pytorch转onnx转ncnn问题Unsqueeze not supported yet!

[ Pytorch ] torch.squeeze() 和torch.unsqueeze()的用法

Pytorch中torch.unsqueeze()和torch.squeeze()函数解析