Перемешивание набора в TensorFlow
Если примеры всегда идут в одном
порядке, модель может запомнить
эту последовательность вместо
закономерностей в данных.
Метод shuffle меняет
очередность элементов перед
обходом набора.
Параметр buffer_size задаёт,
сколько ближайших примеров
участвует в перестановке.
Чтобы порядок в примере не прыгал,
случайность фиксируют. Создадим
набор, перемешаем его и выведем
элементы:
import tensorflow as tf
tf.random.set_seed(42)
data = tf.constant([1, 2, 3, 4, 5])
ds = tf.data.Dataset.from_tensor_slices(data)
ds = ds.shuffle(buffer_size=5, seed=42)
for item in ds:
print(item.numpy())
# выведет 1, 4, 2, 5 и 3 по строкам
Перемешивание имеет смысл перед группировкой в батчи, если нужен случайный состав каждой партии:
import tensorflow as tf
tf.random.set_seed(42)
data = tf.constant([1, 2, 3, 4, 5, 6])
ds = tf.data.Dataset.from_tensor_slices(data)
ds = ds.shuffle(buffer_size=6, seed=42).batch(2)
for group in ds:
print(group.numpy())
# выведет [2 1], [4 5] и [3 6] по строкам
Соберите набор из ряда
[2, 4, 6, 8], измените
порядок элементов и выведите
все значения по одному
на строку.
Из чисел [10, 20, 30, 40, 50, 60]
сделайте поток, перемешайте
его и выведите две группы
по три числа.
Создайте набор из ряда
[1, 2, 3, 4, 5],
переставьте примеры и
выведите первые три
получившихся значения
циклом.