【pytorch】keepdim参数解析

keepdim 是 PyTorch 中的一个参数,常用于各种归约操作(如求和、求均值、求最大值等)。当我们对张量进行归约时,通常会减少该维度的大小,但有时我们希望保持归约后的维度不变,这时就会用到 keepdim=True

举个例子

假设我们有一个 2x3 的张量 x

python 复制代码
import torch

x = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(x)

输出:

复制代码
tensor([[1, 2, 3],
        [4, 5, 6]])
1. 不使用 keepdim

我们对张量的某个维度进行求均值操作,例如对维度 1(列)求均值:

python 复制代码
mean_without_keepdim = x.mean(dim=1)
print(mean_without_keepdim)

输出:

复制代码
tensor([2., 5.])

在这种情况下,原本的 2x3 的张量被压缩成了 1D 的张量 [2., 5.],原来的维度 1(列)被"消除"了。

2. 使用 keepdim=True
python 复制代码
mean_with_keepdim = x.mean(dim=1, keepdim=True)
print(mean_with_keepdim)

输出:

复制代码
tensor([[2.],
        [5.]])

在这种情况下,虽然我们在维度 1 上进行了均值操作,但 keepdim=True 保持了维度结构,所以结果仍然是 2x1 的张量,而不是被压缩成 1D 的张量。即原来的维度 1 被保留,只是大小从 3 变成了 1。

总结

  • keepdim=False(默认值):归约操作后,所归约的维度会被移除,张量的维度会减少。
  • keepdim=True:归约操作后,所归约的维度会被保留,张量的维度不变,但该维度的大小变为 1。

这是在处理张量形状时非常有用的功能,尤其是在需要保持张量形状一致性的场景下(比如在某些层归一化操作或在神经网络中)。

相关推荐
十八度的天空1 分钟前
第01节 Python的基础语法
开发语言·python
BoBoZz191 分钟前
GradientBackground 比较不同类型的背景渐变着色模式与坐标转换
python·vtk·图形渲染·图形处理
wp123_12 分钟前
射频设计中的无磁空心电感抉择:Coilcraft A01TKLC VS 国产替代TONEVEE FTA01-2N5K
人工智能·制造
泰迪智能科技5 分钟前
新疆高校大数据人工智能实验室建设案例
大数据·人工智能
540_5408 分钟前
ADVANCE Day32
人工智能·python·机器学习
STLearner13 分钟前
AAAI 2026 | 图基础模型(GFM)&文本属性图(TAG)高分论文
人工智能·python·深度学习·神经网络·机器学习·数据挖掘·图论
Light6013 分钟前
数据战争的星辰大海:从纷争到融合,五大核心架构的终局之战与AI新纪元
大数据·人工智能·数据治理·湖仓一体·数据中台·数据架构·选型策略
小北方城市网30 分钟前
Python + 前后端全栈进阶课程(共 10 节|完整版递进式|从技术深化→项目落地→就业进阶,无缝衔接基础课)
大数据·开发语言·网络·python·数据库架构
Seon塞翁1 小时前
2025年AI大事记:从 DeepSeek R1 到 MiniMax M2.1,我们改变了什么?
人工智能
nvd111 小时前
故障排查:Pytest Asyncio Event Loop Closed 错误
python