人工智能A7论坛 >> Tensorflow和深度学习笔记_论坛版 >> 10.附录

10.7 参数初始化

下面几种方式,随便选一个,结果基本都差不多。但是一定要做。否则可能会减慢收敛速度,影响收敛结果,甚至造成Nan等一系列问题。 

下面的n_in为网络的输入大小,n_out为网络的输出大小,nn_in(n_in+n_out)*0.5 

Xavier初始法论文:http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf 

He初始化论文:https://arxiv.org/abs/1502.01852

· uniform均匀分布初始化: w = np.random.uniform(low=-scale, high=scale, size=[n_in,n_out]) 

o Xavier初始法,适用于普通激活函数(tanh,sigmoid)scale = np.sqrt(3/n)

o He初始化,适用于ReLUscale = np.sqrt(6/n)

· normal高斯分布初始化: w = np.random.randn(n_in,n_out) * stdev # stdev为高斯分布的标准差,均值设为

o Xavier初始法,适用于普通激活函数 (tanh,sigmoid)stdev = np.sqrt(n)

o He初始化,适用于ReLUstdev = np.sqrt(2/n)

· svd初始化:对RNN有比较好的效果。参考论文:https://arxiv.org/abs/1312.6120