2017-10-08 2 views
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) 

세션에서 실행될 때 이러한 루프의 의미?

답변

0

이 그들은 tf.while_loop에 의해 만들지 의미는 대한 고전적인 데이터 흐름 프리미티브를 따라 분산 루프는, "TensorFlow : 대규모 기계 학습 시스템"의 3.4 절 동안 (link는)

+0

어쩌면 내 질문을 얻지 못한 일부 참조가 구체적으로는 충분하지 않습니다. 저는 파이썬과 직접적으로/개별적으로 이러한 작전을 만들고 싶습니다. op._add_input (텐서, DTYPE = 없음) op._update_input (인덱스, 텐서, DTYPE = 없음) op._add_control_input (OPS) 내가 해봤 이 크게 문서화되지 않은,하지만 다음과 같은 방법으로 지원하는 것 tf.while_loop에 대한 소스 코드를 읽는 것이지만, 다소 복잡하고 그래프에서 종속성 루프를 생성하는 데 이들을 사용하는 방법을 분명히 알지 못합니다. –

+0

그것들은 의도적으로 "숨겨진"운영체제이며 문서화되지 않았습니다 (문서화되지 않은 것은 API의 일부가 아니며 언제든지 변경/제거 할 수 있습니다). 따라서 소스 코드를 읽는 것이 가장 좋은 방법 일 것입니다. tf.while_loop이 더 이상 사용되지 않을 것 같습니다. 즉,이 [commit] (https://github.com/tensorflow/tensorflow/commit/0fd2a74120b86972441378f79fb5d03e86fed856)을 참조하십시오. 'NextIteration' 연산은 남아 있지만 더 낮은 수준의 API가 필요할 것입니다. –

+0

추신 : 일부 그래프의 일부 지연 실행을 구현하기 위해 병합/스위치 노드를 직접 생성하는 간단한 예제가 있습니다 - https://gist.github.com/yaroslavvb/d67410e240369736fc4ba0267250ef27 –

관련 문제