68 lines
2.9 KiB
Markdown
68 lines
2.9 KiB
Markdown
这里涉及到的是神经网络中常用的全连接层(dense layer)的矩阵乘法约定,不同的表示方式会有不同的矩阵尺寸和乘法顺序,下面给出两种常见的约定,并解释如何让维度匹配:
|
||
|
||
---
|
||
|
||
### 方法一:以行向量表示输入
|
||
|
||
1. **设定输入为行向量:**
|
||
假设每个节点的隐藏状态由 LSTM 输出后表示为一个行向量,即
|
||
$$
|
||
h_i \in \mathbb{R}^{1 \times d''}
|
||
$$
|
||
这里 $d''$ 是 LSTM 隐藏单元的数量。
|
||
|
||
2. **全连接层权重矩阵:**
|
||
为了将行向量 $h_i$ 映射到预测的二维坐标,设计全连接层的权重矩阵 $W_{\text{fc}}$ 的尺寸为
|
||
$$
|
||
W_{\text{fc}} \in \mathbb{R}^{d'' \times 2}
|
||
$$
|
||
这样,乘法操作 $h_i \cdot W_{\text{fc}}$ 的计算是:
|
||
- $h_i$ 的尺寸:$1 \times d''$
|
||
- $W_{\text{fc}}$ 的尺寸:$d'' \times 2$
|
||
- 相乘结果:$1 \times 2$
|
||
|
||
3. **加偏置得到最终输出:**
|
||
同时,全连接层有一个偏置向量 $b_{\text{fc}} \in \mathbb{R}^{1 \times 2}$,故有
|
||
$$
|
||
\hat{y}_i = h_i \cdot W_{\text{fc}} + b_{\text{fc}} \in \mathbb{R}^{1 \times 2},
|
||
$$
|
||
表示该节点预测的二维坐标 $(x, y)$。
|
||
|
||
---
|
||
|
||
### 方法二:以列向量表示输入
|
||
|
||
1. **设定输入为列向量:**
|
||
如果我们将每个节点的隐藏状态表示为列向量:
|
||
$$
|
||
h_i \in \mathbb{R}^{d'' \times 1},
|
||
$$
|
||
则需要调整矩阵乘法的顺序。
|
||
|
||
2. **全连接层权重矩阵:**
|
||
此时全连接层的权重矩阵应设置为
|
||
$$
|
||
W_{\text{fc}} \in \mathbb{R}^{2 \times d''},
|
||
$$
|
||
这样通过矩阵乘法:
|
||
$$
|
||
\hat{y}_i = W_{\text{fc}} \cdot h_i + b_{\text{fc}},
|
||
$$
|
||
- $W_{\text{fc}}$ 的尺寸:$2 \times d''$
|
||
- $h_i$ 的尺寸:$d'' \times 1$
|
||
- 乘积结果为:$2 \times 1$
|
||
|
||
对应的偏置 $b_{\text{fc}} \in \mathbb{R}^{2 \times 1}$ 后,最终输出为 $2 \times 1$(可以看作二维坐标)。
|
||
|
||
---
|
||
|
||
### 总结说明
|
||
|
||
- **两种约定等价:**
|
||
实际实现时,只要保持输入和权重矩阵的乘法顺序一致,确保内维度匹配,输出最终都会是一个二维向量。在深度学习框架中(例如 Keras 或 PyTorch),通常默认每个样本以行向量形式表示(形状为 $(\text{batch\_size}, d'')$),因此全连接层权重设置为 $(d'', 2)$,计算 $h \cdot W$ 会得到形状为 $(\text{batch\_size}, 2)$ 的输出。
|
||
|
||
- **回答疑问:**
|
||
“你这里 $W$ 和 $h$ 怎么能矩阵乘法呢”——关键在于你要统一向量的表示方式。如果你使用行向量表示每个节点,则 $h$ 的维度是 $1 \times d''$;对应的全连接层权重 $W_{\text{fc}}$ 为 $d'' \times 2$。这样乘法 $h \cdot W_{\text{fc}}$ 内维度 $d''$ 正好匹配,输出得到 $1 \times 2$ 的向量。如果反之使用列向量表示,则需要调整权重矩阵为 $2 \times d''$ 并将乘法表达为 $W_{\text{fc}} \cdot h$。
|
||
|
||
W_{\text{fc}} \in \mathbb{R}^{2 \times d''}
|