tf.cond 예제

이 비디오에서는 tf.cond() 및 tf.while_loop를 자세히 다룹니다. 그래서, tf.cond() 작동 하는 방법에 대 한 자세한 내용은이 게시물을 작성 하기로, 그리고 그림에 대 한 몇 가지 예제를 제공. 바라건대, 나는 후속 게시물에서 tf.while_loop를 다룰 것입니다. tf.cond는 텐서플로우.python.util.nest에서 구현된 중첩 구조를 지원합니다. true_fn과 false_fn은 모두 목록, 튜플 및/또는 명명된 튜플의 동일한(중첩된) 값 구조를 반환해야 합니다. singleton 목록과 튜플은 이에 대한 유일한 예외를 형성합니다. 이 동작은 strict=True를 전달하여 비활성화됩니다. 상황을 보다 명확하게 하는 예제를 살펴보겠습니다. 나는이 예제를 제공하기 위한이 게시물에서 영감을 얻었습니다. tf.cond())를 하고, 허위 거짓말로 전락을 하고, 허위 사실,2,300,000,000,000,000,000,000,000,000,000,000, 그리고, 허위 거짓말, 허위 거짓말, 허위 거짓말, 허위 거짓말, 허위 거짓말, 허위 거짓말, 허위 거짓말, 허위 거짓말… 엘라그( Elag) : 스위치를 이해하고 병합하고 tf.cond() 작동 방식을 실현함으로써 이 동작이 TensorFlow의 데이터 흐름 모델과 일치하고 그것에 대해 아무 런이 없다는 것을 알 수 있기를 바랍니다.

에이텐서플로우,(tf.cond)는… 다른… ,, ()),,,,,,,에이, 이 간단한 예제에 대한 계산 그래프를 구성했으며 그림 4에서 찾을 수 있습니다. 물론, 나는 내가 rnns를 실행하는 것을 보고 있었다 예기치 않은 행동을 테스트하기 위해 함께 던져, 세련된 예가 아니었다. 이제 학습 가능한 변수를 상수로 변환할 때 이상한 동작이 있습니다. 그것은 별도 문제 수 있지만 스택 처럼 보인다: 잘하면, tf.cond() 알고까지 뭔가 배웠습니다., 그리고 이 API와 함께 작업에 대 한 더 편안 하 게 되었다. 논란의 여지가 있는 한 가지 예를 제공하여 이 게시물을 끝내고 지금까지 배운 것이 내면의 일을 이해하는 데 어떻게 도움이 되는지 설명해 보겠습니다. TensorFlow 웹 사이트에서 다음 문을 찾을 수 있습니다: 병합 둘 이상의 입력을 받을 수 있습니다 하지만 그들 중 하나만 데이터를 포함 해야 하 고 다른 죽은 텐서 해야 합니다. 그렇지 않으면, 우리는 몇 가지 무작위와 예측할 수없는 행동에 직면하게 될 것이다. 마지막 예제에서 병합이 어떻게 작동하는지 살펴보겠습니다: 병합은 tf.cond() 그래프를 생성하는 데 필요한 다른 연산자입니다.

TensorFlow의 그래프는 정적이므로 빌드된 후에는 수정할 수 없습니다. 따라서 배치 등을 준비하는 동안 언제든지 그래프 외부의 if-else를 사용할 수 있지만 그래프를 구성하는 동안 사용할 수도 있습니다. 즉, 조건이 텐서의 값(예: 텐서의 디멘션(설정)이나 텐서의 모양에 의존하지 않는 경우입니다. 이러한 시나리오에서는 그래프를 실행하는 동안 조건으로 인해 그래프가 변경되지 않습니다. 그래프 그리기를 마친 후 그래프가 수정되었으며 if-else 조건은 그래프를 실행하는 동안 그래프에 영향을 주지 않습니다. tf.cond는 런타임에 평가되지만, if-else는 그래프 구성 시간에 평가됩니다. 당신은 경우 사용할 수 있습니다 … 다른 외부 조건에 대해 다른 그래프를 만들기 위한 것입니다.

예를 들어 1, 2, 3개의 숨겨진 레이어가 있는 그래프에 대해 하나의 파이썬 스크립트를 만들고 어떤 것을 사용할지 선택하기 위해 명령줄 매개변수를 사용할 수 있습니다. 그래서, 나는이 경고가 말하는 것을 명확히하는 예를 제공 할 것입니다. 두 가지 예를 제공합니다 : 첫 번째 연산에서는 true_fn 및 false_fn 내에서 모든 작업이 정의되고 두 번째 예제에서는 일부 작업이이 함수 외부에 정의됩니다. 이 동작이 발생하는 이유를 설명하기 위해 계산 그래프를 구성하고 시각화할 것입니다. 가장 먼저 언급해야 할 것은 각 입력에 대한 스위치가 있다는 것입니다. 입력으로 tf.cond() 내의 참 함수와 거짓 함수의 인수를 의미합니다. 이 예제에서는 세 가지 입력(x, y 및 z)이 있으며, 그 결과 계산 그래프에 세 개의 스위치가 있습니다.