nn.Linear()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nn.Linear()相关的知识,希望对你有一定的参考价值。

参考技术A

官网 nn.Linear()详解

线性变换的权重值 weight 和 偏置值 bias 会伴随训练过程不管更新参数,也就是注释中的 learnable ,他们的初始时刻都随机初始化 在区间 :
( , ) ,
上面的例子可以看到,输入数据会跟一个权重矩阵 A 相乘,A.shape=[30, 20],偏重为一个一维tensor,长度为[30],权重矩阵相乘得到的128个30维的向量,最后会给每一个向量加上这个偏置误差tensor,所以就对应线性变换公式:

于是nn.Linear()也等价与下面的:

这个函数是用来设置神经网络中的全连接层的,输入输出都是二维 tensor
in_features :指的是输入的二维tensor的大小,即输入的[batch_size, size]中的size。
out_features :指的是输出的二维tensor的大小,即输出的二维张量的形状为[batch_size,output_size],也代表了该全连接层的神经元个数。

nn.Linear 默认参数初始化方法

1.pytorch 的nn.Linear 参数初始化方法

m=nn.Linear(3, 4)
print(m.weight)
print(m.bias)

#输出
Parameter containing:
tensor([[ 1.7056e-01, -4.5271e-01,  1.5907e-01],
        [ 6.9845e-03, -4.8557e-02,  6.6883e-02],
        [-2.3139e-04,  3.3073e-01, -3.9217e-01],
        [-5.5838e-01, -4.3237e-01,  2.6791e-01]], requires_grad=True)
Parameter containing:
tensor([ 0.3674,  0.1273, -0.2346, -0.2661], requires_grad=True)

 可以看到不是初始化为0的,那么直接看源码就行了:

可以看到weight是初始化为了kaiming分布,bias初始化为了均匀分布。

以上是关于nn.Linear()的主要内容,如果未能解决你的问题,请参考以下文章

nn.linear()

nn.Linear 默认参数初始化方法

pytorch nn.Linear()详解

torch.nn.Linear() 理解

torch.nn.Linear() 理解

torch.nn.Linear() 理解