【Pytorch】unsqueeze()与squeeze()详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Pytorch】unsqueeze()与squeeze()详解相关的知识,希望对你有一定的参考价值。
参考技术Asqueeze()主要用于对数据的维度进行压缩或者解压的
官方文档
注意:
输入的张量和返回的张量共用一段内存空间,改变了其中一个,其余的都会被改变
参数:
多维张量本质上就是一个变换,如果维度是 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!