【问题标题】:How to use He initialization in TensorFlow如何在 TensorFlow 中使用 He 初始化
【发布时间】:2019-01-21 18:15:32
【问题描述】:

He / MSRA 初始化,来自 Delving Deep into Rectifiers,在使用 ReLU 时似乎是 recommended 权重初始化。

在 TensorFlow 中是否有内置的方法来使用它? (类似于:How to do Xavier initialization on TensorFlow)?

【问题讨论】:

    标签: python tensorflow neural-network


    【解决方案1】:

    TensorFlow 2.0

    tf.keras.initializers.HeUniform()

    tf.keras.initializers.HeNormal()

    请参阅文档了解用法。 (h/t 到 @mable)

    TensorFlow 1.0

    tf.contrib.layers.variance_scaling_initializer(dtype=tf.float32)
    

    这将为您提供 He / MRSA 初始化。文档指出tf.contrib.layers.variance_scaling_initializer 的默认参数对应于 He 初始化,并且更改参数可以产生 Xavier 初始化(这是在 TF 的 Xavier 初始化内部实现中所做的)。

    示例用法:

    W1 = tf.get_variable('W1', shape=[784, 256],
           initializer=tf.contrib.layers.variance_scaling_initializer())
    

    initializer = tf.contrib.layers.variance_scaling_initializer()
    W1 = tf.Variable(initializer([784,256]))
    

    【讨论】:

    • 对于所有偶然发现这一点的人:到目前为止,可以在tf.keras.initializers.HeNormal(或使用默认参数的tf.keras.initializers.VarianceScaling)中进行激活
    • 你能解释一下tf.keras.initializers.HeUniform()tf.keras.initializers.HeNormal()之间的区别吗?
    • HeUniform 从均匀分布中提取权重:U(-x, x)。 HeNormal 从正态分布 N(0, x) 或类似的分布中提取它们,其中 x 是由 He 或 Xavier 确定的一个小值。文档应该解释它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2016-11-06
    • 2017-05-22
    相关资源
    最近更新 更多