【DeepCV】模型参数的初始化方式

Backto DeepCV

模型选好了,在训练之前,那么多的 w w b b 该如何初始化呢?trial & error,试错中前行

全部置为 0

超级省事,但是 absolutely wrong!所有参数都是 0 ,还是所有的神经元步调完全一致,怎么训练,怎么梯度下降?

随机初始化为近 0 值

哎,这还靠谱些。比如指定, w N ( 0 , 1 ) w \sim N(0,1) , N ( 0 , 1 ) N(0,1) 是均值为0,方差为1 的高斯分布或正太分布(差别不大)。

校准方差

上面的建议不错,但是神经元output的方差正比于input的个数。这个影响还是蛮大的,需要校准一下。

# calibrating the variances with 1/sqrt(n)
w = np.random.randn(n) / sqrt(n) 

对于使用 ReLU 作为激活函数的形式,建议采用

# current recommendation
w = np.random.randn(n) * sqrt(2.0/n) 

至于为什么ReLU 中是这样,移步 Kaiming He 大神的论文.

猜你喜欢

转载自blog.csdn.net/baishuo8/article/details/88819525