数据维度
- Ai应用
- 5天前
- 45热度
- 0评论
维度是什么
维度=数据需要“几个”索引才能定位到一个元素,也叫做轴数(axis)或阶(rank)。
可以看成"套盒子"的层数,盒子里面装盒子,再装数字。每多一层外括号/分类,就多一维。
0维=一个数;1维=一排数;2维=表格;3维=一摞表格;更高维=外面再套一层一层分类;
判断有几个维度的方法:
- 获取一个元素需要几个索引才能定位到。
- 多一层外括号=多一维;形状从外到内写“有多少个”。(外层是更粗粒度的分类,写在前面,如小批量彩色图像 (B, C, H, W);批次B、通道C、高H、宽W)
1D: ──●──●──●── 一条线
2D: 行×列 一张表
┌───────┐
│● ● ● │
│● ● ● │
└───────┘
3D: 多张2D表叠成“砖块”
从0到多维的例子
0维(标量):单个数
42
- 标量 shape:(), 只要“指它自己”就能找到,例:体温36.5。
1维(向量):一排数
[3, 5, 8]
- 向量shape:(N),需要1个索引(第几个)才能定位。
2维(矩阵/表格):多排多列
[ [1, 2, 3],
[4, 5, 6]
[7, 8, 9]]
- 矩阵shape:(R,C),需要2个索引(第几行,第几列)才能定位到。
3维度(立体):多张矩阵堆叠
[ [[1,2,3],
[4,5,6]],
[[7,8,9],
[11,12,13]] ]
或
层0: [ [...], [...], ... ]
层1: [ [...], [...], ... ]
...
- 立体shape:(D,R,C),需要3个索引(第几层、第几行、第几列)才能定位到。
n维(张量):继续外面套一层索引
- 如4维度,小批量彩色图像 (B, C, H, W);批次B、通道C、高H、宽W
深度学习场景维度含义
- 图像/CNN:(B,C,H,W),B为batch个数,C为图像通道,H为图像高度,W为图像宽度。
-
文本/transformer:(B,S,C),Batch size,批大小。一次前向里同时处理的样本数。S有时也写作L,Sequence length,序列长度/时间步数(NLP 的 token 数、语音/时序的帧数)。在图像等场景里,若把二维特征展平成序列,也可表示展平后的步数。Channels/Features,特征维度。NLP 里常指 embedding 或 d_model;CV 里指通道数;时序里指每步的特征维度。[B, S, C] 通常表示“B 个样本,每个样本有 S 个时间步/位置,每个时间步有 C 维特征”。
怎么理解C(特征维/通道数)?
在一个张量形状 [B, S, C] 中,C 表示“每个位置(序列中的每个 token/时间步)所携带的特征向量维度”。也就是“描述一个位置所需的数值属性个数”。
- 表达能力上限: C 越大,单个位置能承载的信息越丰富(更“宽”的向量空间),可拟合更复杂的模式。
- 稳定性与信息瓶颈: 太小的 C 可能造成信息瓶颈,难以表达远距离依赖或复杂结构。
- 计算与显存代价: 层内线性/注意力的主计算大多与 C^2 成正比,激活占用与 BLC 成正比。增大 C 会显著提高计算/显存成本。
x.dim() # 轴数,也就是多少个维度。
x.shape # 形状,如 (B,L,C)
x.size(-1) # 最后一维长度