`파티션`의 인덱스를 사용하여 `데이터`를 `num_partitions` 텐서로 분할합니다.
`partitions.ndim` 크기의 각 인덱스 튜플 `js`에 대해 `data[js, ...]` 슬라이스는 `outputs[partitions[js]]`의 일부가 됩니다. `partitions[js] = i`인 조각은 `js`의 사전순으로 `outputs[i]`에 배치되고 `outputs[i]`의 첫 번째 차원은 다음과 같은 `partitions`의 항목 수입니다. '나'. 상세히,
outputs[i].shape = [sum(partitions == i)] + data.shape[partitions.ndim:]
outputs[i] = pack([data[js, ...] for js if partitions[js] == i])
`data.shape`는 `partitions.shape`로 시작해야 합니다.예를 들어:
# Scalar partitions.
partitions = 1
num_partitions = 2
data = [10, 20]
outputs[0] = [] # Empty with shape [0, 2]
outputs[1] = [[10, 20]]
# Vector partitions.
partitions = [0, 0, 1, 1, 0]
num_partitions = 2
data = [10, 20, 30, 40, 50]
outputs[0] = [10, 20, 50]
outputs[1] = [30, 40]
파티션을 다시 병합하는 방법에 대한 예는 `dynamic_stitch`를 참조하세요. 발생: * 다음과 같은 경우 `InvalidArgumentError`: - 파티션이 `[0, num_partiions)` 범위에 없는 경우 - `partitions.shape`가 `data.shape` 인수의 접두사와 일치하지 않는 경우.
공개 방법
공개 정적 DynamicPartition <T> 생성 ( 범위 범위, 피연산자 <T> 데이터, 피연산자 <Integer> 파티션, Long numPartitions)
새로운 DynamicPartition 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
매개변수
범위 | 현재 범위 |
---|---|
파티션 | 어떤 모양이든. '[0, num_partitions)' 범위의 인덱스입니다. |
파티션 수 | 출력할 파티션 수입니다. |
보고
- DynamicPartition의 새 인스턴스