1. 系统默认初始化
当我们没有进行初始化权重操作时,发现系统已经有了默认值,如下所示
查看官网文档可以发现,这些初始化的值服从均匀分布 U(-
k
\sqrt{k}
k,
k
\sqrt{k}
k),其中k = 1/输入层
2. 自定义初始化weight
首先编写初始化函数init_weight(),在该函数中,nn.init.normal()可以将权重初始化为正态分布,此处也可以初始化为其他值。
# 初始化weight
def init_weights(m):
if type(m) == nn.Linear:
nn.init.normal_(m.weight, std=0.01)
#编写网络层结构
net = nn.Sequential(nn.Flatten(),
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 10))
# 将网络中的weight进行初始化
net.apply(init_weights);