$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}$
$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}$
以 nn.Linear(20, 30)为例,其中的 $W\in R^{30\times 20}$
$$ 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}$。
$$ 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}$。