在密集层中,应根据一些经验法则初始化权重。例如,对于RELU,权重应来自正态分布,并应重新调整为2 / n,其中n是图层的输入数(according to Andrew Ng)。
卷积层是否同样适用?在卷积层中初始化权重(和偏差)的正确方法是什么?
答案 0 :(得分:2)
基于sigmoid的网络的常见初始化程序是 Xavier初始化程序(又名 Glorot初始化程序),以"Understanding the difficulty of training deep feedforward neural networks"的作者之一Xavier Glorot命名纸。该公式不仅考虑了传入连接的数量,还考虑了输出连接的数量。作者证明,通过初始化,激活分布近似正常,这有助于向后传递梯度流。
对于基于relu的网络,一个更好的初始化器是来自"Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification"的 He初始化器,Kaiming He等人,证明了relu激活的相同属性。
在这种情况下,密集和卷积层不同,但记住在输入图像和批处理中共享内核权重非常重要,因此传入连接的数量取决于几个参数,包括内核大小和跨步,可能不容易手工计算。
在tensorflow中,He初始化是在variance_scaling_initializer()
函数中实现的(事实上,它是一个更通用的初始化器,但默认情况下执行He初始化),而Xavier初始化器逻辑上是xavier_initializer()
。