在密集层中,应该根据某种经验法则初始化权重。例如,使用 RELU,权重应来自正态分布,并且应按 2/n 重新缩放,其中 n 是层的输入数量 ( according to Andrew Ng )。
同样的情况也适用于卷积层吗?在卷积层中初始化权重(和偏差)的正确方法是什么?
最佳答案
基于 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()
.
关于machine-learning - 密集层和卷积层的权重初始化是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137312/