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()的主要内容,如果未能解决你的问题,请参考以下文章