tf.gather 예제

그러나 tf.unstack(…), tf.gather(…) 및 tf.stack(.) 을 사용하는 또 다른 솔루션 아래 예제는 인덱스에만 추가 치수가 있는 경우입니다. `params`와 `인덱스`에 선행 배치 치수가 있는 경우 `batch_dims` 매개 변수를 사용하여 batch 모드에서 gather_nd를 실행합니다. 정보 float 변수를 주석처리하면 경고와 함께 올바르게 작동합니다. int32와 float 32가 모두 존재하는 경우 tf.gather는 아래와 같이 오류를 표시합니다. 그러나 tf.gather(L, [0, 2,3,8])는 첫 번째 차원(오른쪽)에 대해서만 작동하는 것 같습니다. 누구든지 그것을 하는 방법을 말해 줄 수 있습니까? 이전 tf.batch_gather 함수는 TF 1.13에 문서화되었습니다. 그러나 tf.gather는 이전 tf.batch_gather보다 약간 더 복잡하므로 기본 _batch_gather 함수의 설명서를 사용할 수 있습니다. tf.gather 인덱스에서는 조각을 매개렘의 첫 번째 차원으로 정의하는 반면, tf.gather_nd에서 인덱스는 조각을 매개렘의 첫 번째 N 차원으로 정의하며 여기서 N = indices.shape[-1]. 함수의 출력은 인덱스의 모양에 따라 달라집니다.

인덱스의 가장 안쪽 차원에 길이 P가 있는 경우 매개 변수에서 단일 요소를 수집합니다. P보다 작으면 tf.gather와 마찬가지로 슬라이스를 수집하지만 1차원에만 액세스할 수 있다는 제한 없이 조각을 수집합니다. 위의 예에서 요소 대신 행 (즉, 슬라이스)을 수집하려는 경우 다음과 같이 인덱스 매개 변수를 조정하십시오: 현재 동작 tf.gather가 tf.function 내부의 다른 독립적 인 텐서가있는 경우 오류를 throw합니다. 문서는 tf.gather의 기존 문서를 완료하는 데 사용할 수 있습니다. 시퀀스 레이블링의 경우 각 타임스탬프에 대한 예측을 원합니다. 그러나 모든 시간 걸이에 걸쳐 소프트맥스 레이어에 대한 가중치를 공유합니다. 어떻게 해야 할까요? 출력 텐서의 처음 두 차원을 평평하게 하여. 이렇게 하면 시간 단계가 가중치 행렬에 대한 일괄 처리의 예와 동일하게 보입니다. 그 후, 우리는 다시 원하는 모양으로 모양을 변경합니다. TF 1.14에서 tf.batch_gather는 더 이상 사용되지 않은 것으로 표시되고 일괄 처리 버전을 처리하기 위해 batch_gathers 키워드가 tf.gather에 추가되었습니다. 그러나 tf.gather의 설명서는 batch_dims 유형으로만 업데이트되었지만 사용하는 방법도 아닙니다. 분류의 경우 마지막 단계의 출력 활성화에 대해서만 신경을 쓸 수 있습니다.

시간 축이 먼저되도록 전환하고 마지막 프레임을 선택하기 위해 tf.gather()를 사용합니다. 파이썬 목록과 달리 TensorFlow는 아직 부정적인 인덱싱을 지원하지 않기 때문에 출력 [-1]을 사용할 수 없습니다. TensorFlow 1.3 tf.gather에는 축 매개변수가 있으므로 여기서 의 다양한 해결 방법은 더 이상 필요하지 않습니다. 요지는 텐서를 평평하게하고 tf.gather (…)와 보폭 1D 주소를 사용합니다. 또한, @Yaroslav Bulatov의에 의해 참조 스레드에서 사용자 노바에 의해보고 된 바와 같이 : @caissalover 나는 TF2.0와 구글 공동 에서 스크립트를 실행하고 예상대로 일했다. 아래 출력을 확인하십시오. 당신은 colab.sandbox.google.com 그것을 실행해 볼 수 있습니까? TF2.0을 업그레이드하고 버그가 지속되는지 여부를 확인할 수도 있습니다. 감사! 또한 `params`와 `인덱스`는 정확히 일치하는 M 선행 배치 치수를 가질 수 있습니다. 이 경우 `batch_dims`는 M. 업데이트 2017-06-07: TensorFlow 1.0이 재발하는 셀을 tf.contrib.rnn으로 이동한 경우여야 합니다. TensorFlow 1.2 on에서 반복 셀은 가중치를 재사용하므로 첫 번째 코드 블록에서 여러 개의 별도의 GRUCells를 만들어야 합니다. 또한, 나는 수치적으로 안정적이고 보다 효율적인 그라데이션 계산을 가지고 크로스 엔트로피 손실의 기존 구현을 사용하여 전환.

순위 3 텐서를 행렬 모양의 배치(batch_size, m, n)로 가정해 보겠습니다. 일괄 처리의 모든 요소에 대한 첫 번째 및 두 번째 행을 수집하려는 경우 다음과 같은 방법을 사용할 수 있습니다.