Sto cercando di generare una variabile casuale e usarla due volte. Tuttavia, quando lo uso la seconda volta, il generatore crea una seconda variabile casuale che non è identica alla prima. Ecco il codice per dimostrare:Come posso generare un vettore casuale in TensorFlow e mantenerlo per un ulteriore utilizzo?
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)
voglio z1_op
e z2_op
essere uguali. Penso che questo sia dovuto al fatto che l'operazione random_uniform
viene chiamata due volte. C'è un modo per usare TensorFlow (senza usare NumPy) per raggiungere questo obiettivo?
(Il mio caso l'uso è più complicato, ma questa è la domanda distillata.)
Come funzionerebbe se non avessi il controllo di 'sess.run'? Lo sto utilizzando in un Estimator, quindi tutta la gestione della sessione è nascosta. La mia funzione 'g()' ha bisogno di chiamare 'f (t)' due volte, con lo stesso 't'. Comunque, ad ogni chiamata a 'g()', voglio un 't' diverso. Fondamentalmente, voglio memorizzare nella cache il risultato di 'tf.random_uniform()' per l'intera durata della mia funzione 'g()'. –