常见的深度学习模块/操作中的维度约定(系统性总结)
🟩 1. 数据张量(特征图)维度
这是我们喂进网络或从网络中出来的“实际数据”。
类型 | 维度格式 | 举例 | 说明 |
---|---|---|---|
图像/特征图 | (B, C, H, W) | (4, 3, 32, 32) | PyTorch中最常用的数据布局(NCHW) |
图像/特征图(TensorFlow风格) | (B, H, W, C) | (4, 32, 32, 3) | TF/Keras默认的数据格式(NHWC) |
序列数据 | (B, T, D) | (4, 100, 512) | B=batch, T=时间步数, D=特征维度(比如RNN、Transformer输入) |
🟨 2. 卷积层的权重张量维度
这些是参数层的权重,不是输入输出数据!
类型 | 维度格式 | 举例 | 含义 |
---|---|---|---|
1D 卷积 | (out_channels, in_channels, kernel_size) | (64, 32, 3) | 只沿时间轴卷积 |
2D 卷积 | (out_channels, in_channels, kH, kW) | (64, 3, 3, 3) | 最常见 |
3D 卷积 | (out_channels, in_channels, D, H, W) | (64, 3, 3, 3, 3) | 用于体积数据/视频等 |
🟦 3. 全连接层(Linear)维度
类型 | 权重形状 | 举例 | 含义 |
---|---|---|---|
FC 层权重 | (out_features, in_features) | (5, 192) | 5个输出神经元,从192维输入接收信号 |
输入数据 | (batch_size, in_features) | (4, 192) | 每个样本是1个向量 |
输出数据 | (batch_size, out_features) | (4, 5) | 每个样本输出一个向量 |
🟧 4. 注意力机制中矩阵维度(尤其是 Transformer)
矩阵 | 维度格式 | 举例 | 说明 |
---|---|---|---|
Query / Key / Value | (B, heads, T, d_k) | (4, 8, 100, 64) | 多头注意力中每一头的特征维度 |
Attention 权重矩阵 | (B, heads, T_q, T_k) | (4, 8, 100, 100) | 每个query对所有key的注意力分数 |
Output | (B, T, d_model) | (4, 100, 512) | 每个时间步最终的编码结果 |
🟥 5. RNN / LSTM / GRU 输入输出维度
类型 | 维度 | 举例 | 说明 |
---|---|---|---|
输入数据 | (seq_len, batch, input_size) | (100, 4, 128) | PyTorch默认格式 |
输出 | 同输入 | (100, 4, hidden_size) | 每一步的输出 |
hidden / cell | (num_layers × num_directions, batch, hidden_size) | (2, 4, 128) | LSTM/GRU的隐藏状态 |
🟪 6. BatchNorm 层的参数维度
类型 | 参数形状 | 说明 |
---|---|---|
BatchNorm1d | (C,) | 用于线性层或1D卷积输出的每个通道 |
BatchNorm2d | (C,) | 对应于每个图像通道 |
BatchNorm3d | (C,) | 视频/体数据的每个通道 |