Pytorch基础操作 —— 10. 改变张量的维度(升维、降维)

本文详细介绍了PyTorch中的张量操作函数torch.squeeze和torch.unsqueeze。torch.squeeze用于移除张量中所有大小为1的维度,而torch.unsqueeze则在指定位置插入一个大小为1的维度。通过示例代码,展示了这两个函数的具体使用方法及其对张量维度的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FunctionDescriptionDetail
squeezeReturns a tensor with all the dimensions of input of size 1 removed.
unsqueezeReturns a new tensor with a dimension of size one inserted at the specified position.

torch.squeeze

维度压缩,这个函数会把张量中所有为1的维度全部删除,以此达到降维操作。如果输入的维度是 ( A × 1 × B × C × 1 × D ) (A \times 1 \times B \times C \times 1 \times D) (A×1×B×C×1×D) 函数会输出维度为 ( A × B × C × D ) (A \times B \times C \times D) (A×B×C×D)。如果定义了维度dim的参数,那么函数只会处理对应的维度。

举例来说,如果维度为 ( A × 1 × B ) (A \times 1 \times B) (A×1×B)

squeeze(input, 0)

输出的张量由于dim=0时,维度是A,所以不会发生改变,但是如果

squeeze(input, 1)

最终输出的维度就变成 ( A × B ) (A \times B) (A×B)

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

例程

>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])

>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])

>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])

>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])

torch.unsqueeze

与 torch.squeeze 正好相反,它允许用户在指定的位置扩张张量的维度。

其中,dim 的范围是 [ − i n p u t . d i m ( ) − 1 , i n p u t . d i m ( ) + 1 ) [-input.dim() - 1, input.dim() + 1) [input.dim()1,input.dim()+1) 也就是允许用户以顺序、逆序的方式插入维度。

torch.unsqueeze(input, dim) → Tensor

举例来说,如果 d i m = − 1 dim=-1 dim=1,张量的维度会从 ( A × B ) (A \times B) (A×B) 变成 ( A × B × 1 ) (A \times B \times 1) (A×B×1);如果 d i m = 0 dim=0 dim=0,维度会从 ( A × B ) (A \times B) (A×B) 变成 ( 1 × A × B ) (1 \times A \times B) (1×A×B);如果 d i m = 1 dim=1 dim=1 ,张量会从 ( A × B ) (A \times B) (A×B) 变成 ( A × 1 × B ) (A \times 1 \times B) (A×1×B)

例程

>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1,  2,  3,  4]])

>>> torch.unsqueeze(x, 1)
tensor([[ 1],
        [ 2],
        [ 3],
        [ 4]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值