'인덱스'에 따라 기존 텐서에 '업데이트'를 분산시킵니다.
이 작업은 전달된 '텐서'에 희박한 '업데이트'를 적용하여 새 텐서를 생성합니다. 이 작업은 업데이트가 기존 텐서(0텐서와 반대)에 분산된다는 점을 제외하면 'tf.scatter_nd'와 매우 유사합니다. 기존 텐서의 메모리를 재사용할 수 없는 경우 복사본이 만들어지고 업데이트됩니다.
'인덱스'에 중복 항목이 포함된 경우 해당 업데이트가 누적됩니다(합계).
경고 : 업데이트가 적용되는 순서는 비결정적이므로 `indices`에 중복 항목이 포함된 경우 출력은 비결정적입니다. 일부 수치 근사 문제로 인해 숫자를 다른 순서로 합산하면 다른 결과가 나올 수 있습니다.
`indices`는 `shape` 형태의 새로운 텐서에 대한 인덱스를 포함하는 정수 텐서입니다. `indices`의 마지막 차원은 기껏해야 `shape`의 순위일 수 있습니다.
indices.shape[-1] <= 모양.순위
`indices`의 마지막 차원은 `indices.shape[-1] = shape.rank`인 경우 요소 또는 `indices.shape[-1] < Shape.rank`인 경우 차원 `indices'에 따른 조각의 인덱스에 해당합니다. .shape[-1]` '모양'. `updates`는 모양이 있는 텐서입니다.
indices.shape[:-1] + 모양[indices.shape[-1]:]
분산의 가장 간단한 형태는 인덱스를 기준으로 텐서에 개별 요소를 삽입하는 것입니다. 예를 들어, 8개의 요소가 있는 랭크 1 텐서에 4개의 분산된 요소를 삽입한다고 가정해 보겠습니다.
Python에서 이 분산 작업은 다음과 같습니다.
>>> 인덱스 = tf.constant([[4], [3], [1], [7]]) >>> 업데이트 = tf.constant([9, 10, 11, 12]) >>> 텐서 = tf.ones([8], dtype=tf.int32) >>> print(tf.tensor_scatter_nd_update(텐서, 인덱스, 업데이트)) tf.Tensor([ 1 11 1 10 9 1 1 12], shape=(8 ,), dtype=int32)
또한, 더 높은 순위의 텐서 전체 조각을 한 번에 삽입할 수도 있습니다. 예를 들어, 새 값의 행렬 두 개가 있는 랭크 3 텐서의 첫 번째 차원에 두 개의 슬라이스를 삽입하려는 경우입니다.
Python에서 이 분산 작업은 다음과 같습니다.
>>> 인덱스 = tf.constant([[0], [2]]) >>> 업데이트 = 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]]]) >>> 텐서 = tf.ones([4, 4, 4], dtype=tf.int32) >>> 인쇄 (tf.tensor_scatter_nd_update(텐서, 인덱스, 업데이트).numpy()) [[[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]] [[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]]]
CPU에서 범위를 벗어난 인덱스가 발견되면 오류가 반환됩니다. GPU에서는 범위를 벗어난 인덱스가 발견되면 해당 인덱스가 무시됩니다.
공개 방법
출력 <T> | 출력 () 텐서의 기호 핸들을 반환합니다. |
static <T, U 확장 번호> TensorScatterUpdate <T> | |
출력 <T> | 출력 () 주어진 모양과 인덱스에 따라 업데이트가 적용된 새로운 텐서. |
상속된 메서드
공개 방법
공개 출력 <T> asOutput ()
텐서의 기호 핸들을 반환합니다.
TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.
public static TensorScatterUpdate <T> create ( 범위 범위, Operand <T> 텐서, Operand <U> 인덱스, Operand <T> 업데이트)
새로운 TensorScatterUpdate 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
매개변수
범위 | 현재 범위 |
---|---|
텐서 | 복사/업데이트할 텐서. |
지수 | 인덱스 텐서. |
업데이트 | 출력에 분산되도록 업데이트합니다. |
보고
- TensorScatterUpdate의 새로운 인스턴스