问题描述
我是Python和tensorflow的新手。我有些(或很多)感到困惑:tf.random.normal()似乎没有按预期工作。
tf.random.normal()用于生成一些数据。我想看到通过“ tf.keras.backend.eval()”在屏幕上打印出来的数据是否按预期生成。
randndata = tf.random.normal([1,5])
print('randndata = ',tf.keras.backend.eval(randndata))
到目前为止,一切似乎都还不错。但是,如果第二次打印数据,结果将完全不同。
randndata = tf.random.normal([1,tf.keras.backend.eval(randndata))
print('randndata = ',tf.keras.backend.eval(randndata))
问题不仅仅在于正态分布。均匀分布有相同的问题。
tensorflow版本是2.1.0。
谢谢!
解决方法
加里,我能够通过禁用急切的执行来重现您的错误。在这种情况下,每次您运行tf.random.normal
时都会调用eval
。
渴望执行时,随机数会立即分配给变量,然后将它们传递给tf.keras.backend.eval()
调用。
查找可能禁用了急切执行的位置-这将解释令人困惑的情况。如有疑问,请在此处发布更多代码。
我建议在执行时使用TF2样式,不要完全调用eval
(如果您有一些复杂的计算图,请不要调用它一次)。
了解更多关于急切执行here