Разделяет `данные` на тензоры `num_partitions`, используя индексы из `partitions`.
Для каждого индексного кортежа `js` размера `partitions.ndim` срез `data[js, ...]` становится частью `outputs[partitions[js]]`. Срезы с `partitions[js] = i` помещаются в `outputs[i]` в лексикографическом порядке `js`, а первое измерение `outputs[i]` — это количество записей в `partitions`, равное `я`. Подробно,
outputs[i].shape = [sum(partitions == i)] + data.shape[partitions.ndim:]
outputs[i] = pack([data[js, ...] for js if partitions[js] == i])
Например:
# 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]
Вызывает: * `InvalidArgumentError` в следующих случаях: - Если разделы находятся за пределами диапазона `[0, num_partiions)` - Если `partitions.shape` не соответствует префиксу аргумента `data.shape`.
Публичные методы
статический <T> DynamicPartition <T> | create (область области действия , данные операнда <T>, разделы операнда <Integer>, длинные numPartitions) Фабричный метод для создания класса, обертывающего новую операцию DynamicPartition. |
Итератор< Операнд <T>> | итератор () |
Список< Выход <T>> | выходы () |
Унаследованные методы
Публичные методы
public static DynamicPartition <T> create (область действия , данные операнда <T>, разделы операнда <Integer>, длинные numPartitions)
Фабричный метод для создания класса, обертывающего новую операцию DynamicPartition.
Параметры
объем | текущий объем |
---|---|
перегородки | Любая форма. Индексы в диапазоне `[0, num_partitions)`. |
numPartitions | Количество разделов для вывода. |
Возврат
- новый экземпляр DynamicPartition