我正在尝试生成一个随机变量并使用它两次。但是,当我第二次使用它时,生成器会创建一个不同于第一个的第二个随机变量。以下是演示代码:
import numpy as np
import tensorflow as tf
# A random variable
rand_var_1 = tf.random_uniform([5],0,10, dtype = tf.int32, seed = 0)
rand_var_2 = tf.random_uniform([5],0,10, dtype = tf.int32, seed = 0)
#Op1
z1 = tf.add(rand_var_1,rand_var_2)
#Op2
z2 = tf.add(rand_var_1,rand_var_2)
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
z1_op = sess.run(z1)
z2_op = sess.run(z2)
print(z1_op,z2_op)
我希望z1_op
和z2_op
相等。我认为这是因为random_uniform
操作被调用了两次。有没有一种方法可以使用TensorFlow(而不使用NumPy)来实现这一点?
(我的用例更加复杂,但这是精简后的问题。)
sess.run
,这将如何工作?我正在Estimator中使用它,因此所有会话管理都是隐藏的。我的函数g()
需要两次调用具有相同t
的f(t)
。但是,在每次调用g()
时,我希望有一个不同的t
。基本上,我想为整个函数g()
的持续时间缓存tf.random_uniform()
的结果。 - Ciprian Tomoiagă