Метод shuffle класса Dataset
Метод shuffle класса Dataset случайным образом перемешивает элементы датасета.
Первым параметром передаётся размер буфера buffer_size, в пределах которого
происходит перемешивание. Вторым необязательным параметром можно передать
seed для воспроизводимости результата, третьим - reshuffle_each_iteration,
который определяет, будет ли порядок меняться при каждой новой итерации.
Метод возвращает новый объект Dataset.
Синтаксис
Dataset.shuffle(buffer_size, [seed], [reshuffle_each_iteration])
Пример
Давайте создадим датасет из тензора и перемешаем его элементы:
import tensorflow as tf
tf.random.set_seed(0)
ds = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
ds_shuffled = ds.shuffle(buffer_size=5)
for item in ds_shuffled:
print(item.numpy())
Результат выполнения кода:
1
5
3
2
4
Пример
Давайте зададим seed, чтобы перемешивание было воспроизводимым:
import tensorflow as tf
ds = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
ds_shuffled = ds.shuffle(buffer_size=5, seed=42)
for item in ds_shuffled:
print(item.numpy())
Результат выполнения кода:
3
4
2
5
1
Пример
Давайте перемешаем элементы дважды, чтобы увидеть разный порядок при повторной итерации:
import tensorflow as tf
tf.random.set_seed(0)
ds = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
ds_shuffled = ds.shuffle(buffer_size=5)
print("First iteration:")
for item in ds_shuffled:
print(item.numpy())
print("Second iteration:")
for item in ds_shuffled:
print(item.numpy())
Результат выполнения кода:
"First iteration:"
1
5
3
2
4
"Second iteration:"
2
3
5
1
4
Пример
Давайте отключим перемешивание при повторной итерации с помощью
reshuffle_each_iteration:
import tensorflow as tf
tf.random.set_seed(0)
ds = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
ds_shuffled = ds.shuffle(buffer_size=5, reshuffle_each_iteration=False)
print("First iteration:")
for item in ds_shuffled:
print(item.numpy())
print("Second iteration:")
for item in ds_shuffled:
print(item.numpy())
Результат выполнения кода:
"First iteration:"
1
5
3
2
4
"Second iteration:"
1
5
3
2
4