我试图生成一个随机变量并使用它两次。但是,当我第二次使用它时,生成器会创建第二个与第一个不相同的随机变量。下面是演示代码:
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)来实现这一点?
(我的用例更复杂,但这是一个经过提炼的问题。)
您的问题与this question有相同的问题,如果您调用
random_uniform
两次,您将得到两个结果,因此您需要将第二个变量设置为第一个变量的值。这意味着,假设您稍后不更改rand_var_1
,则可以执行以下操作:但是,也就是说,如果你想让
z1
和z2
相等,为什么还要有单独的变量呢?为什么不:当前版本的代码将在每次调用
sess.run()
时为rand_var_1
和rand_var_2
随机生成一个新值(尽管由于您将seed设置为0,它们在单个调用sess.run()
中具有相同的值)。如果要保留随机生成的张量的值以供以后使用,则应将其指定给^{} :
…然后^{} 将产生所需的效果:
相关问题 更多 >
编程相关推荐