Pytorch
在 Pytorch 语义下,目前理解其中的关键就在于待训练参数和计算逻辑两点,并且这两点共同构成了各种封装好的模块。
以 troch.nn.Linear 为例,可以通过 nn.Parameter 手动创建参数,然后自行创建计算逻辑。但是由于线性计算的需求较为普遍,因此 Pytorch 也直接提供了封装好的线性层模块,按理说这种封装的本质就是在内部实现上用 nn.Parameter 定义权重(weight)和偏置(bias,可选),同时封装“输入特征与权重矩阵相乘 + 加偏置” 的计算逻辑(有待确定)。
nn.Linear 时给定的数值和 nn.Parameter 构造参数时给定的数值是对应的,这也可以看出 nn.Linear 实际隐藏了构造参数这个过程
$y = x \ A^T + b$: x:(N, in_features), y: (N, out_features), 所以给定 in_features 和 out_features 自然就可以确定权重矩阵的 shape 为 (in_features, out_features)
| |