Метод shard
Метод shard класса Dataset позволяет разделить исходный набор данных на несколько частей (шардов) и вернуть только одну из них. Это полезно при распределённых вычислениях, когда несколько процессов или устройств обрабатывают разные части одного набора данных. Первым параметром метод принимает общее количество частей num_shards, на которое нужно разделить данные. Вторым параметром передаётся индекс index - номер возвращаемой части (нумерация начинается с нуля).
Синтаксис
Dataset.shard(num_shards, index, [name])
Пример
Давайте создадим набор данных из чисел от 0 до 9 и разделим его на две части, получив первую из них:
import tensorflow as tf
ds = tf.data.Dataset.range(10)
shard_ds = ds.shard(num_shards=2, index=0)
for element in shard_ds:
print(element.numpy())
Результат выполнения кода:
0
2
4
6
8
Пример
Теперь получим вторую часть того же набора данных, передав индекс 1:
Результат выполнения кода:
1
3
5
7
9
Пример
Давайте применим метод shard к набору данных, созданному из тензора, и разделим его на три части:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5, 6])
ds = tf.data.Dataset.from_tensor_slices(t)
shard_ds = ds.shard(num_shards=3, index=2)
for element in shard_ds:
print(element.numpy())
Результат выполнения кода:
3
6
Смотрите также
-
класс
Dataset,
который представляет набор данных -
метод
batch,
который объединяет элементы в пакеты -
метод
from_tensor_slices,
который создает набор данных из тензора -
метод
apply,
который применяет функцию преобразования к набору данных