PyTorch - unsqueeze和squeeze

博客主要提及了PyTorch中的unsqueeze和squeeze,这两个是PyTorch里的操作,在深度学习数据处理等方面有重要作用。

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

PyTorch - unsqueeze和squeeze

flyfish

import torch
import torch.nn as nn
import torch.nn.functional as F


#a=torch.randn(3,2)
a=torch.randn(3,1)

b0=a.unsqueeze(-2)
b1=a.unsqueeze(-1)
b2=a.unsqueeze(0)
b3=a.unsqueeze(1)
b4=a.unsqueeze(2)

e0=a.squeeze(-2)
e1=a.squeeze(-1)
e2=a.squeeze(0)
e3=a.squeeze(1)


print(a.shape)
print(b0.shape)
print(b1.shape)
print(b2.shape)
print(b3.shape)


print(e0.shape)
print(e1.shape)
print(e2.shape)
print(e3.shape)

#函数说明
#torch.unsqueeze(input, dim, out=None) 维度扩充
#返回一个新的张量,对输入的指定位置插入维度 1
#如果dim为负,则将会被转化dim+input.dim()+1


#torch.squeeze(input, dim=None, out=None)维度压缩
#将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D)
#,那么输出形状就为: (A×B×C×D)
#当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A×1×B)
#, squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)。

#注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
# result a=torch.randn(3,1)

# torch.Size([3, 1])
# 
# torch.Size([3, 1, 1])
# torch.Size([3, 1, 1])
# torch.Size([1, 3, 1])
# torch.Size([3, 1, 1])
# torch.Size([3, 1, 1])
# 
# torch.Size([3, 1])
# torch.Size([3])
# torch.Size([3, 1])
# torch.Size([3])


# result a=torch.randn(3,2)
# torch.Size([3, 2])
# torch.Size([3, 1, 2])
# torch.Size([3, 2, 1])
# torch.Size([1, 3, 2])
# torch.Size([3, 1, 2])
# torch.Size([3, 2, 1])

# torch.Size([3, 2])
# torch.Size([3, 2])
# torch.Size([3, 2])
# torch.Size([3, 2])
# =============================================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二分掌柜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值