首页 > 解决方案 > keras.initializers.ones() 是风格吗?

问题描述

从我读到的,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))用来获得相同的重量值。但是我仍然应该使用那些初始化器来初始化权重作为一个好习惯。

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

标签: tensorflowkeras

解决方案


这里是 的来源tf.keras.initializers.ones。主要是对 的调用array_ops.ones,与tf.ones. 它还检查类型是数字还是布尔值。

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


推荐阅读