2017-02-07 2 views
0

tf.cond(cond, fn1, fn2)은 두 가지 분기에 대해 가능한 종속성을 실행하는 것 같습니다. 따라서 조건이 유지되는 경우에만 수행하려는 모든 계산을 fn1 fn2 함수에 넣어야합니다.tf.cond 내부에서 허용되는 조작 유형

그러나 fn이 실제로 무엇인지 혼란 스럽습니다. tensorflow의 모든 변수/op는 계산 그래프의 노드 여야하지만, 실제로 fn은 파이썬 함수입니다. 이것은 많은 의문을 불러 일으킨다. 예를 들어, sess.run이 실행될 때마다이 함수가 재평가됩니까? 이 함수는 매번 다른 계산 그래프를 반환 할 수 있습니까? 자리 표시자를 정의 할 수 있으며, 예를 들어 다른 입력을 선택하는 스위치 변수가있을 때 사용하지 않는 자리 표시 자에 값을 제공하지 않으려면 어떻게해야합니까?

답변

1

tf.cond에 전달 된 함수는 op가 정의 된 경우에만 실행되며 그래프 실행 중에는 실행되지 않습니다. 그리고 정확히 한 번 볼 수있는 한 both of them are run입니다. 함수 자체는 각 함수 호출을 둘러싼 호출 인 context_t.Enter()/context_t.Exit()에주의하여 조건부 실행 동작을 수행해야하는 연산을 정확하게 나타내는 방법 일뿐입니다.

그 점을 명확히 밝히기 바랍니다. 이 함수는 그래프 정의 중에 ops를 그룹화하는 유용한 방법입니다. TensorFlow 그래프에는 함수 실행 마법이 없습니다.

관련 문제