我给人的印象是张量流图是有向无环图。但是,在探究https://github.com/nilboy/tensorflow-yolo生成的(相当大的)图形时,我偶然发现了该图形中的一个循环:
1. gradients/b_count_62:0 -> gradients/b_count_62
2. gradients/b_count_62 -> gradients/GreaterEqual_15:0
3. gradients/GreaterEqual_15:0 -> gradients/GreaterEqual_15
4. gradients/GreaterEqual_15 -> gradients/Merge_31:0, gradients/GreaterEqual_15/Enter:0
5. gradients/Merge_31:0 -> gradients/Merge_31
6. gradients/Merge_31 -> gradients/b_count_61:0, gradients/NextIteration_31:0
7. gradients/NextIteration_31:0 -> gradients/NextIteration_31
8. gradients/NextIteration_31 -> gradients/Sub_15:0
9. gradients/Sub_15:0 -> gradients/Sub_15
10. gradients/Sub_15 -> gradients/Switch_31:1, gradients/GreaterEqual_15/Enter:0
11. gradients/Switch_31:1 -> gradients/Switch_31
12. gradients/Switch_31 -> gradients/Merge_31:0, gradients/b_count_62:0 (loop, references line 5 and line 1)
哪些操作支持如上所述的循环,如何从python创建这些循环,以及在会话中运行时此类循环的语义是什么?
最佳答案
它们由tf.while_loop
创建,语义遵循经典的Data Flow原语用于分布式while循环,“ TensorFlow:用于大规模机器学习的系统”(link)的第3.4节有一些参考