Найти тему
Властелин машин

Эпохи в TensorFlow 2

Для обеспечения качественного подбора внутренних параметров глубокие нейросети требуют неоднократного прохода по обучающим данным. Каждая итерация в рамках этого процесса называется эпохой. В этой статье я расскажу о том, как этот процесс реализован в TensorFlow 2, о плюсах и минусах разных подходов.

Так простым и быстрым способом является использование метода repeat. Он повторяет данные заданное либо неограниченное количество раз. Соответственно, один проход по таким данным соответствует нескольким ручным переборам.

В демонстрационных целях скачаем набор данных о пассажирах трагического рейса на Титанике и загрузим в родной формат хранения данных в TensorFlow 2 - Dataset (подробнее рассказывал здесь). Для этого воспользуемся методом tf.data.TextLineDataset для чтения списка строк из одного или нескольких текстовых файлов:

-2

На рисунке отображены первые 4 строки, одна из которых является заглавной. Мы можем выбрать эти строки и повторять заданное число раз с помощью метода repeat(количество повторений):

-3

Теперь выберем 14 строк повторим их дважды и разобьем на пакеты по 3 в каждом (подробнее писал здесь). Затем визуализируем размеры каждого пакета:

-4
-5

На графике видно, что мы фактически потеряли информацию о границе между эпохами. Если поменять местами вызовы методов batch и repeat, то можно увидеть разделение:

-6

-7

Вызов метода repeat является простым способом задания эпох, но при этом мы жертвуем управляемостью процесса между эпохами. Если это недопустимо, рекомендуется задавать прогоны "вручную":

-8