TensorScatter추가

공개 최종 클래스 TensorScatterAdd

'인덱스'에 따라 기존 텐서에 희박한 '업데이트'를 추가합니다.

이 작업은 전달된 `tensor`에 희소 `업데이트`를 추가하여 새 텐서를 생성합니다. 이 작업은 업데이트가 (변수가 아닌) 기존 텐서에 추가된다는 점을 제외하면 `tf.scatter_nd_add`와 매우 유사합니다. 기존 텐서의 메모리를 재사용할 수 없는 경우 복사본이 만들어지고 업데이트됩니다.

`indices`는 `tensor.shape` 형태의 새로운 텐서에 대한 인덱스를 포함하는 정수 텐서입니다. `indices`의 마지막 차원은 기껏해야 `tensor.shape`의 순위일 수 있습니다.

indices.shape[-1] <= 텐서.shape.rank

`indices`의 마지막 차원은 요소(`indices.shape[-1] = tensor.shape.rank`인 경우) 또는 슬라이스(`indices.shape[-1] < tensor.shape.rank`인 경우)에 대한 인덱스에 해당합니다. `tensor.shape`의 `indices.shape[-1]` 차원을 따릅니다. `updates`는 모양이 있는 텐서입니다.

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

tensor_scatter_add의 가장 간단한 형태는 인덱스별로 개별 요소를 텐서에 추가하는 것입니다. 예를 들어, 8개의 요소가 있는 랭크 1 텐서에 4개의 요소를 추가한다고 가정해 보겠습니다.

Python에서 이 분산형 추가 작업은 다음과 같습니다:

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     tensor = tf.ones([8], dtype=tf.int32)
     updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
     print(updated)
 
결과 텐서는 다음과 같습니다.

[1, 12, 1, 11, 10, 1, 1, 13]

또한, 더 높은 순위의 텐서 전체 조각을 한 번에 삽입할 수도 있습니다. 예를 들어, 새 값의 행렬 두 개가 있는 랭크 3 텐서의 첫 번째 차원에 두 개의 슬라이스를 삽입하려는 경우입니다.

Python에서 이 분산형 추가 작업은 다음과 같습니다:

indices = tf.constant([[0], [2]])
     updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
                             [7, 7, 7, 7], [8, 8, 8, 8]],
                            [[5, 5, 5, 5], [6, 6, 6, 6],
                             [7, 7, 7, 7], [8, 8, 8, 8]]])
     tensor = tf.ones([4, 4, 4],dtype=tf.int32)
     updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
     print(updated)
 
결과 텐서는 다음과 같습니다.

[[[6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[1, 1, 1 , 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[6, 6, 6, 6], [7, 7 , 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[1, 1, 1, 1], [1, 1, 1, 1], [1 , 1, 1, 1], [1, 1, 1, 1]]]

CPU에서 범위를 벗어난 인덱스가 발견되면 오류가 반환됩니다. GPU에서는 범위를 벗어난 인덱스가 발견되면 해당 인덱스가 무시됩니다.

공개 방법

출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.
static <T, U 확장 번호> TensorScatterAdd <T>
생성 ( 범위 범위, 피연산자 <T> 텐서, 피연산자 <U> 인덱스, 피연산자 <T> 업데이트)
새로운 TensorScatterAdd 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
출력 ()
텐서에서 복사된 새 텐서 및 인덱스에 따라 추가된 업데이트입니다.

상속된 메서드

공개 방법

공개 출력 <T> asOutput ()

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

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

public static TensorScatterAdd <T> create ( 범위 범위, Operand <T> 텐서, Operand <U> 인덱스, Operand <T> 업데이트)

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

매개변수
범위 현재 범위
텐서 복사/업데이트할 텐서.
지수 인덱스 텐서.
업데이트 출력에 분산되도록 업데이트합니다.
보고
  • TensorScatterAdd의 새로운 인스턴스

공개 출력 <T> 출력 ()

텐서에서 복사된 새 텐서 및 인덱스에 따라 추가된 업데이트입니다.