Pourquoi le code suivant imprime 4 numéros différents?
# Random seed for reproducibility tf.set_random_seed(1234) # Random variable foo = tf.Variable(tf.random_uniform(shape=(1,1)),name = 'foo') # Operation to initialize variables init = tf.initialize_all_variables() # Run Operations in session with tf.Session() as sess: # Loop for i in range(1,5): # Initialize variables sess.run(init) # Print foo value print(sess.run(foo))
3 Réponses :
Je pense que lorsque vous exécutez La fonction Je ne suis pas sûr cependant. Je suis incapable de reproduire le code pour mieux comprendre. P> sess.run (init) code>, il initie un nouveau nombre aléatoire pour la session. P>
initialisize_all_variables () code> est d'initialiser tous les nombres dans son ensemble, mais
sess.run (init) code> est le code où cette session obtient son propre numéro. p>
La fonction exemple fort> p> Ceci permet de reproduire votre code.
TENSORFLOW Documentation P> P> tf.set_random_seed () code> assure la reproductibilité.
Chaque fois que vous exécutez le programme, il génère la même séquence.
OK, après avoir lu le Documentation et @skillsMuggler Réponse, J'ai réalisé que Si vous exécutez des variables Initializer La graine aléatoire garantit que si nous exécutons le code précédent sur une autre session, les chiffres générés seront le idem (reproductibilité). p> donc, il assure en effet la reproductibilité. p> p> tf.set_random_seed (1234) code> fournit une reproductibilité
sess1.run (init) code> plusieurs fois dans la même session, il créera un nombre aléatoire chaque fois que vous l'exécutez, Depuis chaque fois qu'il est initialisé, il crée un nombre aléatoire. p>
Vous initialisez avec un nombre uniforme aléatoire. Si c'était la même valeur à chaque fois que cela ne serait pas aléatoire.
Ensuite, quel est le point de la graine aléatoire? Comment puis-je assurer la reproductibilité? @ xdurch0
Voir la réponse de Skillklergler. En tant que tel, votre programme est très reproductible. Si vous voulez les mêmes numéros aléatoires, chaque Session exécuter i>, vous pouvez essayer de régler la graine à nouveau chaque itération ou simplement créer un tableau aléatoire avec NUMPY une fois au tout début, et utilisez-le à plusieurs reprises pour initialiser vos variables. .
Note
tf.initialize_all_variables code> est obsolète en faveur de
TF .global_variables_initialiszer code>
ouTF.Initialis. global_variables code>
.À propos de la question, les opérations aléatoires sont étatiques. Vous pouvez vous assurer qu'ils produiront les mêmes numéros dans deux sessions différentes en définissant le graphique et / ou la semence OP, mais vous ne pouvez pas "réinitialiser" leur état dans la même session, ainsi que l'état aléatoire "ne peut pas être enregistré ou restauré. Voir Nombre aléatoire dans Tensorflow 2.0 Pour les plans d'opérations aléatoires dans TF 2.x qui améliorent ces aspects.