GatherNd

공개 최종 수업 GatherNd

`params`의 조각을 `indices`로 지정된 모양의 Tensor로 수집합니다.

'indices'는 K차원 정수 텐서이며, 'params'에 대한 인덱스의 (K-1)차원 텐서로 가장 잘 생각됩니다. 여기서 각 요소는 'params' 조각을 정의합니다.

출력[\\(i_0, ..., i_{K-2}\\)] = params[인덱스[\\(i_0, ..., i_{K-2}\\)]]

tf.gather 에서 `indices`는 `params`의 `axis` 차원으로 슬라이스를 정의하는 반면, tf.gather_nd 에서 `indices`는 `params`의 첫 번째 `N` 차원으로 슬라이스를 정의합니다. 여기서 `N = indices.shape [-1]`.

`indices`의 마지막 차원은 기껏해야 `params`의 순위일 수 있습니다.

indices.shape[-1] <= params.rank

`indices`의 마지막 차원은 `indices.shape[-1] == params.rank`인 경우) 차원 또는 `indices.shape[-1] < params.rank`인 경우 요소에 해당합니다. `params`의 모양[-1]`. 출력 텐서에는 모양이 있습니다.

indices.shape[:-1] + params.shape[indices.shape[-1]:]

CPU에서 범위를 벗어난 인덱스가 발견되면 오류가 반환됩니다. GPU에서는 범위를 벗어난 인덱스가 발견되면 해당 출력 값에 0이 저장됩니다.

아래에 몇 가지 예가 있습니다.

단순 행렬 인덱싱:

indices = [[0, 0], [1, 1]]
     params = [['a', 'b'], ['c', 'd']]
     output = ['a', 'd']
 
행렬로 슬라이스 인덱싱:
indices = [[1], [0]]
     params = [['a', 'b'], ['c', 'd']]
     output = [['c', 'd'], ['a', 'b']]
 
3-텐서로 인덱싱:
indices = [[1]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [[['a1', 'b1'], ['c1', 'd1']]]
 
 
     indices = [[0, 1], [1, 0]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [['c0', 'd0'], ['a1', 'b1']]
 
 
     indices = [[0, 0, 1], [1, 0, 1]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = ['b0', 'b1']
 
행렬로 일괄 인덱싱:
indices = [[[0, 0]], [[0, 1]]]
     params = [['a', 'b'], ['c', 'd']]
     output = [['a'], ['b']]
 
행렬로 슬라이스 인덱싱:
indices = [[[1]], [[0]]]
     params = [['a', 'b'], ['c', 'd']]
     output = [[['c', 'd']], [['a', 'b']]]
 
3-텐서:
indices = [[[1]], [[0]]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [[[['a1', 'b1'], ['c1', 'd1']]],
               [[['a0', 'b0'], ['c0', 'd0']]]]
 
     indices = [[[0, 1], [1, 0]], [[0, 0], [1, 1]]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [[['c0', 'd0'], ['a1', 'b1']],
               [['a0', 'b0'], ['c1', 'd1']]]
 
 
     indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [['b0', 'b1'], ['d0', 'c1']]
 
tf.gather 및 `tf.batch_gather`도 참조하세요.

공개 방법

출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.
static <T, U 확장 번호> GatherNd <T>
생성 ( 범위 범위, 피연산자 <T> 매개변수, 피연산자 <U> 인덱스)
새로운 GatherNd 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
출력 ()
`indices.shape[:-1] + params.shape[indices.shape[-1]:]` 형태로 `indices`에 의해 제공된 인덱스에서 수집된 `params`의 값입니다.

상속된 메서드

공개 방법

공개 출력 <T> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

public static GatherNd <T> create ( 범위 범위, 피연산자 <T> 매개변수, 피연산자 <U> 인덱스)

새로운 GatherNd 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
매개변수 값을 수집할 텐서입니다.
지수 인덱스 텐서.
보고
  • GatherNd의 새로운 인스턴스

공개 출력 <T> 출력 ()

`indices.shape[:-1] + params.shape[indices.shape[-1]:]` 형태로 `indices`에 의해 제공된 인덱스에서 수집된 `params`의 값입니다.