1. 矩阵乘向量

$o=Wv$, $W\in R^{128\times 20}$, $v\in R^{20}$

在PyTorch中,矩阵乘向量的运算中,向量 $v$ 会被隐式扩展为列向量,即 $v\in R^{20\times 1}$,最终得到结果 $o\in R^{128\times 1}$,最终输出 $o\in R^{128}$

2. 向量乘矩阵

$o=vW$, $W\in R^{20\times 30}$, $v\in R^{20}$

在PyTorch中,向量乘矩阵的运算中,向量 $v$ 会被隐式扩展为行向量,即 $v\in R^{1\times 20}$,最终得到结果 $o\in R^{1\times 30}$,最终输出 $o\in R^{128}$

3. 神经网络

以 nn.Linear(20, 30)为例,其中的 $W\in R^{30\times 20}$

输入是向量 $x$

$$ y=xW^T+b $$

当输入是一个向量时,其表达的是一个样本,因此在与权重矩阵相乘时,会自动转换成行向量。

其中 $x\in R^{20}$, $W\in R^{30\times 20}$, $b\in R^{30}$,因此 $y\in R^{1\times 30}$,最终输出 $y\in R^{30}$。

输入为矩阵 $X$

$$ y=XW^T+b $$

当输入是一个矩阵时,其表达的是一批样本,每行表示一个样本,每列表示一个特征。

其中 $X\in R^{128\times20}$, $W\in R^{30\times 20}$, $b\in R^{30}$,因此 $Y\in R^{128\times 30}$。

W的含义

image.png