Particiona `dados` em tensores` num_partitions` usando índices de `partições`.
Para cada tupla de índice `js` de tamanho` partitions.ndim`, a fatia `dados [js, ...]` torna-se parte de `saídas [partições [js]]`. As fatias com `partições [js] = i` são colocadas em` saídas [i] `na ordem lexicográfica de` js`, e a primeira dimensão das `saídas [i]` é o número de entradas em `partições` igual a `i`. Em detalhes,
outputs[i].shape = [sum(partitions == i)] + data.shape[partitions.ndim:]
outputs[i] = pack([data[js, ...] for js if partitions[js] == i])
`data.shape` deve começar com` partitions.shape`.Por exemplo:
# 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]
Veja `dynamic_stitch` para um exemplo de como unir partições de volta. Métodos Públicos
static <T> DynamicPartition <T> | |
Iterador < Operando <T>> | iterador () |
Listar < Output <T>> | saídas () |
Métodos herdados
Métodos Públicos
public static DynamicPartition <T> create ( Scope escopo, Operando <T> de dados, operando <Integer> partições, Long numPartitions)
Método de fábrica para criar uma classe que envolve uma nova operação DynamicPartition.
Parâmetros
alcance | escopo atual |
---|---|
partições | Qualquer forma. Índices no intervalo `[0, num_partitions)`. |
numPartitions | O número de partições para saída. |
Devoluções
- uma nova instância de DynamicPartition