权重的初始化,决定了模型训练的起点。一个良好的初始化可以加快训练过程,同时避免模型收敛至局部最小值。为了在训练过程中避免使得权重的变化总沿着同一个方向,我们尽量避免将所有权重都初始化为同一个值,如全0矩阵或全1矩阵。
往往我们使用均匀分布或者正则分布初始化权重矩阵。在使用tensorflow框架时,keras为我们提供了许多封装好的层,其中常见的有Dense全连接层,Conv2D卷积层等等。查阅文档我们发现默认的权重初始化都使用了glorot uniform :
W i j ⇝ U ( − 6 n + m , 6 n + m ) W_{ij} \rightsquigarrow U(-\sqrt{\frac{6}{n+m}} , \sqrt{\frac{6}{n+m}})