0
나는 tensorflow 그래프가 방향성을 가진 비순환 그래프를 가지고 있다는 인상을 받았다. https://github.com/nilboy/tensorflow-yolo에 의해 생성 된 (약간 큰) 그래프를 탐색하면서 그러나, 나는 그래프에서 루프에 발견 :tensorflow의 그래프 루프
작전이 루프 (파이썬에서) 만드는 방법, 위처럼 루프를 지원하고, 무엇 무엇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)
세션에서 실행될 때 이러한 루프의 의미?
어쩌면 내 질문을 얻지 못한 일부 참조가 구체적으로는 충분하지 않습니다. 저는 파이썬과 직접적으로/개별적으로 이러한 작전을 만들고 싶습니다. op._add_input (텐서, DTYPE = 없음) op._update_input (인덱스, 텐서, DTYPE = 없음) op._add_control_input (OPS) 내가 해봤 이 크게 문서화되지 않은,하지만 다음과 같은 방법으로 지원하는 것 tf.while_loop에 대한 소스 코드를 읽는 것이지만, 다소 복잡하고 그래프에서 종속성 루프를 생성하는 데 이들을 사용하는 방법을 분명히 알지 못합니다. –
그것들은 의도적으로 "숨겨진"운영체제이며 문서화되지 않았습니다 (문서화되지 않은 것은 API의 일부가 아니며 언제든지 변경/제거 할 수 있습니다). 따라서 소스 코드를 읽는 것이 가장 좋은 방법 일 것입니다. tf.while_loop이 더 이상 사용되지 않을 것 같습니다. 즉,이 [commit] (https://github.com/tensorflow/tensorflow/commit/0fd2a74120b86972441378f79fb5d03e86fed856)을 참조하십시오. 'NextIteration' 연산은 남아 있지만 더 낮은 수준의 API가 필요할 것입니다. –
추신 : 일부 그래프의 일부 지연 실행을 구현하기 위해 병합/스위치 노드를 직접 생성하는 간단한 예제가 있습니다 - https://gist.github.com/yaroslavvb/d67410e240369736fc4ba0267250ef27 –