tensorflow - 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))
用来获得相同的重量值。但是我仍然应该使用那些初始化器来初始化权重作为一个好习惯。
想确保我没有错过初始化程序的任何重要内容。
解决方案
这里是 的来源tf.keras.initializers.ones
。主要是对 的调用array_ops.ones
,与tf.ones
. 它还检查类型是数字还是布尔值。
尽管它们看起来是等价的,但我还是建议您使用tf.keras.initializers.ones
,因为这样可以更清楚地表明您正在使用这些值来初始化某些东西。