0
我曾经在张量流图中引入有向无环图的印象。然而,同时探索通过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)
什么OPS支持循环就像上面,如何在这些循环创建(蟒蛇),什么是这些循环在会话中运行时的语义?
也许我的问题没有得到不够具体 - 我想直接/从python分别创建这些操作。这似乎主要是无证的,但通过以下方法支持: op._add_input(张量,D型=无) op._update_input(索引,张量,D型=无) op._add_control_input(OPS) 我试着阅读tf.while_loop的源代码,但它非常复杂,我不知道它是如何使用这些(或其他)在图中生成依赖性循环的。 –
这些是“隐藏的”操作并且故意没有记录(任何未公开的文档都不是API的一部分,并且可以随时更改/删除),因此阅读源代码可能是最好的方法。看起来tf.while_loop正在被淘汰,也就是说,看到这个[提交](https://github.com/tensorflow/tensorflow/commit/0fd2a74120b86972441378f79fb5d03e86fed856)进行替换。 'NextIteration'操作可能会保留,但需要更低级别的API来构建它们。 –
PS,这里是一个简单的例子,直接构造合并/切换节点,以便实现某些图的部分的惰性执行 - https://gist.github.com/yaroslavvb/d67410e240369736fc4ba0267250ef27 –