【问题标题】:Is keras.initializers.ones() for style?keras.initializers.ones() 是风格吗?
【发布时间】:2020-09-09 15:46:10
【问题描述】:

根据我的阅读,tf.keras.initializers.ones() 是初始化权重的初始化器之一。

以下 3 行代码生成相同的张量:

>>> a = tf.keras.initializers.ones()((1, 2))
>>> b = tf.ones((1, 2))
>>> c = tf.constant([[1., 1.]])
>>> a
<tf.Tensor: id=27, shape=(1, 2), dtype=float32, numpy=array([[1., 1.]], dtype=float32)>
>>> b
<tf.Tensor: id=30, shape=(1, 2), dtype=float32, numpy=array([[1., 1.]], dtype=float32)>
>>> c
<tf.Tensor: id=35, shape=(1, 2), dtype=float32, numpy=array([[1., 1.]], dtype=float32)>

看起来我可以使用tf.ones((1, 2)) 来获得相同的权重值。但是我仍然应该使用 one 初始化器来初始化权重作为一种好习惯。

想确保我没有遗漏初始化程序的任何重要内容。

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    这里是source of tf.keras.initializers.ones。主要是对array_ops.ones的调用,和tf.ones是一样的。它还检查类型是数字还是布尔值。

    即使它们看起来相同,我还是建议使用 tf.keras.initializers.ones,因为这样可以更清楚地表明您正在使用这些值来初始化某些东西。

    【讨论】:

    • 源代码文档展示了一个有趣的例子def make_variables(k, initializer)。这是使用 one 初始化器的至少一个原因:您可以传入不同的初始化器,知道它们都确认相同的 API。
    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多