Sam Bobel
Sam Bobel

Reputation: 1824

Are tensorflow random-variables only created once per sess.run?

If I have something like this:

a = tf.random_uniform((1,), dtype=tf.float32)
b = 1 + a
c = 2 + a

Will a be the same or different when calculating b and c?

Upvotes: 1

Views: 35

Answers (2)

Vikash Singh
Vikash Singh

Reputation: 14001

As answered by @heena bawa

For every sess.run() the values will be re initialised.

To solve for that problem, we initialise the session and call run once. If multiple results are expected then they are passed in a list as such:

import tensorflow as tf
a = tf.random_uniform((1,), dtype=tf.float32)
b = 1 + a
c = 2 + a
init = tf.global_variables_initializer()
with tf.Session() as sess:
    print(sess.run([c, b, a]))

output:

[array([2.0236197], dtype=float32), array([1.0236198], dtype=float32), array([0.02361977], dtype=float32)]
# c is 2.023..
# b is 1.023..
# a is 0.023..

Upvotes: 1

heena bawa
heena bawa

Reputation: 828

Every time a sess.run() is executed, different results are generated, as can be seen in the official documentation of tensorflow.

For example, given the following code:

import tensorflow as tf
a = tf.random_uniform((1,), dtype=tf.float32)
b = 1 + a
c = 2 + a
init = tf.global_variables_initializer()
sess = tf.Session()
print(sess.run(a))
print(sess.run(b))
print(sess.run(c))
print(sess.run(a))

It will produce different values of a and hence the values of b will be 1 + a (new generated) where a(new generated) will be different from a.

Output:

[ 0.13900638]   # value of a
[ 1.87361598]   # value of b = 1 + 0.87361598(!= a)
[ 2.81547356]   # value of c = 2 + 0.81547356(!= a)
[ 0.00705874]   # value of a(!= previous value of a)

Upvotes: 3

Related Questions