PyTorch中nn.Linear()理解
¶计算公式
$ y = xA^{T}+b$
这里A为weight,b为bias。
¶代码部分
¶初始化部分代码
1 | class Linear(Module): |
¶计算部分
1 | @weak_script_method |
返回值为: input * weight + bias
¶bias和weight
1 | weight: the learnable weights of the module of shape |
¶示例
1 | > import torch |
对于上述描述,我们创建一个input的维度为[140,100], 通过声明线性层会得到根据维度初始化的权重和偏差,其中weight的维度为[50,100]。对于公式中A表示的就是weight,而b表示的就是bias。由于对A进行了转置所以这里weight的维度为[50,100]而不是[100,50]。
具体计算为[140,100] × [50,100]的转置 + bias = [140,100] × [100,50] + bias最后得到的维度为[140,50]。
至于对于bias和weight的初始化,根绝网上所讲的是来有关维度值得均匀分布。