神经网络的初始化十分重要,也是深度学习能够大获成功的一个条件,一般来讲,神经网络的初始化方法为glorot初始化,它是根据神经网络当前这一层的输出节点和输入节点来进行初始化的,详细的问题可以查找相关的论文。另外一点,不同的激活函数,使用的初始化方法也不一样。
fan_in代表输入节点数,fan_out代表输出的节点数,fan_ave = (fan_in+fan_out)/2
初始化 | 激活函数 | 方差 |
Glorot | tanh,logistic,softmax | 1/fan_avg |
He | ReLU及其变体 | 2/fan_in |
LeCun | SELU | 1/fan_in |
LeCun初始化使用输入节点来代替fan_ave,其他没有变化;
He初始化:He Normal:正态分布的均值为0、方差为sqrt( 2/fan_in )
He Uniform:均匀分布的区间为-sqrt( 6/fan_in) , sqrt(6/fan_in)