I am trying to generate a random variable and use it twice. However, when I use it the second time, the generator creates a second random variable that is not identical to the f
The current version of your code will randomly generate a new value for rand_var_1
and rand_var_2
on each call to sess.run()
(although since you set the seed to 0, they will have the same value within a single call to sess.run()
).
If you want to retain the value of a randomly-generated tensor for later use, you should assign it to a tf.Variable:
rand_var_1 = tf.Variable(tf.random_uniform([5], 0, 10, dtype=tf.int32, seed=0))
rand_var_2 = tf.Variable(tf.random_uniform([5], 0, 10, dtype=tf.int32, seed=0))
# Or, alternatively:
rand_var_1 = tf.Variable(tf.random_uniform([5], 0, 10, dtype=tf.int32, seed=0))
rand_var_2 = tf.Variable(rand_var_1.initialized_value())
# Or, alternatively:
rand_t = tf.random_uniform([5], 0, 10, dtype=tf.int32, seed=0)
rand_var_1 = tf.Variable(rand_t)
rand_var_2 = tf.Variable(rand_t)
...then tf.initialize_all_variables() will have the desired effect:
# Op 1
z1 = tf.add(rand_var_1, rand_var_2)
# Op 2
z2 = tf.add(rand_var_1, rand_var_2)
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init) # Random numbers generated here and cached.
z1_op = sess.run(z1) # Reuses cached values for rand_var_1, rand_var_2.
z2_op = sess.run(z2) # Reuses cached values for rand_var_1, rand_var_2.
print(z1_op, z2_op) # Will print two identical vectors.