ランダム変数を生成して2回使用しようとしています。しかし、私が2回目にそれを使用すると、ジェネレータは最初のものと同じではない2番目のランダム変数を作成します。ここで実証するコードは次のとおりです。TensorFlowでランダムベクトルを生成し、それを今後も使用するにはどうすればよいですか?
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
opが2回呼び出されるためです。これを達成するためにTensorFlow(NumPyを使用せずに)を使用する方法はありますか?
(私のユースケースはより複雑であるが、これは蒸留質問です。)
'sess.run'を制御できない場合、どうすれば動作しますか?私はEstimatorでそれを使用しているので、すべてのセッション管理は隠されています。私の関数 'g()'は 'f(t)'を同じ 't'で2回呼び出す必要があります。しかし、 'g()'を呼び出すたびに、別の 't'が必要です。基本的には、関数 'g()'の全期間、 'tf.random_uniform()'の結果をキャッシュします。 –