【笔记】unsqueeze

unsqueeze是 PyTorch 中的一个方法,用于在指定位置插入一个维度为 1 的新维度。这个操作对于调整张量的形状非常有用,尤其是在需要匹配特定维度要求(例如模型输入或 `torchvision.utils.make_grid` 函数的要求)时。

理解 unsqueeze

假设你有一个形状为 2, 3 的二维张量:

python 复制代码
tensor = torch.randn(2, 3)
print(tensor.shape)  # 输出: torch.Size([2, 3])

如果你想要把这个张量变成三维的,比如形状变为 1, 2, 3,就可以使用 unsqueeze方法。你可以指定在哪一个维度上增加新的维度(从0开始计数)。

  • 在第0维增加新维度:tensor.unsqueeze(0)

  • 在第1维增加新维度:tensor.unsqueeze(1)

例如:

python 复制代码
# 在第0维增加新维度
new_tensor_0 = tensor.unsqueeze(0)
print(new_tensor_0.shape)  # 输出: torch.Size([1, 2, 3])

# 在第1维增加新维度
new_tensor_1 = tensor.unsqueeze(1)
print(new_tensor_1.shape)  # 输出: torch.Size([2, 1, 3])

应用场景

在我的代码上下文中,unsqueeze主要用于确保传入 `make_grid` 的张量具有正确的维度make_grid 需要输入是一个四维张量 (B, C, H, W),其中:

  • B表示批量大小(Batch Size)

  • C表示通道数(Channels)

  • H表示高度(Height)

  • W表示宽度(Width)

例如,如果有一个形状为 7, 224, 224的 mask 张量(即它只有三个维度),而你需要将其转换为四个维度的形式以满足 make_grid 的要求,你可以使用 unsqueeze(1)来在第二个维度(通道维度)上增加一个新的维度:

python 复制代码
masks = masks.unsqueeze(1)  # 将 [7, 224, 224] 转换为 [7, 1, 224, 224]

这样,mask 的形状就变成了 7, 1, 224, 224,符合 make_grid的输入要求。

相关推荐
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
深圳老胡1 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
彧azz1 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
陈卫军老师1 天前
陈卫军:把口味写在一张纸上,店才稳得住
经验分享·笔记·流量运营
`流年づ1 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
qeen871 天前
【Linux】操作系统之进程介绍(二)
linux·笔记·学习·进程
从零开始的嵌入式之旅1 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
陈年老古董1 天前
MediaPipe 姿态检测与脸部关键点检测
笔记·python·opencv·学习·dlib
彧azz1 天前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构