Divide `data` en tensores` num_partitions` usando índices de `partitions`.
Para cada tupla de índice `js` de tamaño` particiones.ndim`, el segmento `datos [js, ...]` se convierte en parte de `salidas [particiones [js]]`. Los segmentos con `particiones [js] = i` se colocan en` salidas [i] `en orden lexicográfico de` js`, y la primera dimensión de `salidas [i]` es el número de entradas en `particiones` igual a `yo`. En detalle,
outputs[i].shape = [sum(partitions == i)] + data.shape[partitions.ndim:]
outputs[i] = pack([data[js, ...] for js if partitions[js] == i])
`data.shape` debe comenzar con` partitions.shape`.Por ejemplo:
# 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]
Consulte `dynamic_stitch` para ver un ejemplo sobre cómo volver a fusionar particiones. Métodos públicos
static <T> DynamicPartition <T> | |
Iterador < Operando <T>> | iterador () |
Lista < Salida <T>> | salidas () |
Métodos heredados
Métodos públicos
public static DynamicPartition <T> create ( Scope scope, Operand <T> datos, Operand <Integer> particiones, Long numPartitions)
Método de fábrica para crear una clase que envuelva una nueva operación DynamicPartition.
Parámetros
alcance | alcance actual |
---|---|
particiones | Cualquier forma. Índices en el rango `[0, núm_particiones)`. |
numPartitions | El número de particiones a generar. |
Devoluciones
- una nueva instancia de DynamicPartition