zoukankan      html  css  js  c++  java
  • 深度学习的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
    )
    1
    2
    3
    4
    5
    6
    7
    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))
    1
    2
    3
    4
    5
    6
    7
    8
    这段话可以理解为,通过使用这种初始化方法,我们能够保证输入变量的变化尺度不变,从而避免变化尺度在最后一层网络中爆炸或者弥散。

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

    ·X. Glorot and Y. Bengio. Understanding the difficulty of training deepfeedforward neural networks. In International Conference on Artificial Intelligence and Statistics, pages 249–256, 2010.
    Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S.Guadarrama, and T. Darrell. Caffe: Convolutional architecture for fast featureembedding. arXiv:1408.5093, 2014.
    或者可以通过这些文章去了解:

    CNN数值
    三种权重的初始化方法
    深度学习——Xavier初始化方法
    ---------------------
    作者:路虽远在路上
    来源:CSDN
    原文:https://blog.csdn.net/u010185894/article/details/71104387
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    qemu进程页表和EPT的同步问题
    Linux进程虚拟地址空间管理2
    qemu-kvm内存虚拟化1
    LInux进程虚拟地址空间的管理
    Linux下的文件系统2
    LInux中的文件系统1
    Linux IPC之管道通信
    操作系统中的特权级检查
    Linux下的信号机制
    进程的挂起、阻塞和睡眠
  • 原文地址:https://www.cnblogs.com/jfdwd/p/11273984.html
Copyright © 2011-2022 走看看