深度学习的Xavier初始化方法

在tensorflow中,有一个初始化函数:tf.contrib.layers.variance_scaling_initializer。Tensorflow 官网的介绍为:


variance_scaling_initializer(
    factor=2.0,
    mode='FAN_IN',
    uniform=False,
    seed=None,
    dtype=tf.float32
)

Returns an initializer that generates tensors without scaling variance.

When initializing a deep network, it is in principle advantageous to keep the scale of the input variance constant, so it does not explode or diminish by reaching the final layer. This initializer use the following formula:

  if mode='FAN_IN': # Count only number of input connections.
    n = fan_in
  elif mode='FAN_OUT': # Count only number of output connections.
    n = fan_out
  elif mode='FAN_AVG': # Average number of inputs and output connections.
    n = (fan_in + fan_out)/2.0

    truncated_normal(shape, 0.0, stddev=sqrt(factor / n))

这段话可以理解为,通过使用这种初始化方法,我们能够保证输入变量的变化尺度不变,从而避免变化尺度在最后一层网络中爆炸或者弥散。

这个方法就是 Xavier 初始化方法,可以从以下这两篇论文去了解这个方法:

或者可以通过这些文章去了解:

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010185894/article/details/71104387
个人分类: 机器学习
上一篇Foundation of Machine Learning 笔记第七部分—— VC维
下一篇Tensorflow 权重衰减的使用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭