2017-10-18 5 views
0
with tf.dependencies([train_step,variable_average_op]): 
    train_op = tf.no_op('train') 
..... 
_, loss, steps = sess.run([train_op, loss, global_step],feed_dict...) 

Je suis confus quelle est la fonction de la documentation Comme dit tf, NO_OP() iciQue fait tf.no_op()?

+0

Avez-vous lu la documentation? –

+0

yup, il dit ne rien faire ... – Bubblethan

Répondre

5

, tf.no_op() ne fait rien. Toutefois, lorsque vous créez un bloc tf.no_op() à l'intérieur d'un bloc with tf.control_dependencies([x, y, z]):, l'op va acquérir des dépendances de contrôle sur les opérations x, y et z. Par conséquent, il peut être utilisé pour regrouper un ensemble d'opérations d'effets secondaires, et vous donner une seule opération à passer à sess.run() afin de les exécuter tous en une seule étape.

+0

donc la raison pour laquelle nous écrivons no_op dans le bloc est d'activer le bloc control_dependencies pour lancer les ops x, y, z dans l'ordre spécifié? – Bubblethan

+0

C'est presque exact: nous devons créer un op dans le bloc 'control_dependencies' pour que ces dépendances soient ajoutées. Cependant, l'ordre est légèrement plus subtil: (en supposant qu'il n'y ait pas d'autres arêtes entre eux) 'x',' y', et 'z' peuvent s'exécuter dans * n'importe quel ordre les uns par rapport aux autres; et les 'control_dependencies' s'assurent simplement que tout se passe * avant * le' no_op'. – mrry