6 votes

Les opérations dans tf.group sont-elles exécutées dans l'ordre ?

Est-ce que les opérations en tf.group() exécutés dans l'ordre ?

S'ils ne sont pas exécutés dans l'ordre, existe-t-il une opération similaire qui les fait fonctionner dans l'ordre ? Ou existe-t-il un moyen propre de les exécuter dans l'ordre ?

Mon objectif est d'exécuter les opérations A et B à de nombreuses reprises, c'est-à-dire

sess.run(A)
sess.run(B)
sess.run(A)
sess.run(B)
sess.run(A)
sess.run(B)
sess.run(A)
sess.run(B)
...

12voto

Lior Points 1352

Les opérations ne s'exécutent pas nécessairement dans l'ordre.

Voici un test qui le prouve :

import tensorflow as tf
sess = tf.InteractiveSession()
a = tf.Variable(1.0)
b = tf.Variable(10.0)
c = tf.Variable(0.0)
grp = tf.group(tf.assign(c, a), tf.assign(c, b)) # this is the group op
for i in range(100):
    sess.run(tf.global_variables_initializer()) # initialize c each time
    sess.run(grp) # run the group op
    print(sess.run(c)) # observe results

Quand je l'exécute sur un cpu, j'obtiens que certaines itérations produisent 1.0 et quelques 10.0 .

tf.group n'exige pas que les opérations soient sur le même appareil, ce qui signifie qu'on ne peut pas s'attendre à ce qu'elles suivent un ordre.

Si vous voulez que les opérations s'exécutent dans l'ordre, assurez-vous de les construire avec control_dependencies

import tensorflow as tf
sess = tf.InteractiveSession()
a = tf.Variable(1.0)
b = tf.Variable(10.0)
c = tf.Variable(0.0)
op1  = tf.assign(c, a)
with tf.get_default_graph().control_dependencies([op1]):
    op2 = tf.assign(c, b) # op2 will execute only after op1
grp = tf.group(op1,op2)
for i in range(100):
    sess.run(tf.global_variables_initializer())
    sess.run(grp)
    print(sess.run(c))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X