Недавно я начал изучать Deeplearning4j и не понимаю, как на самом деле реализуется концепция эпох и итераций. В онлайн-документации сказано:
эпоха - это полный проход через данный набор данных ...
Не путать с итерацией, которая представляет собой просто одно обновление параметров модели нейронной сети.
Я провел обучение с использованием MultipleEpochsIterator, но для первого запуска я установил 1 эпоху, miniBatchSize = 1 и набор данных из 1000 выборок, поэтому я ожидал, что обучение завершится через 1 эпоху и 1000 итераций, но после более чем 100000 итераций это было Все еще работает.
int nEpochs = 1;
int miniBatchSize = 1;
MyDataSetFetcher fetcher = new MyDataSetFetcher(xDataDir, tDataDir, xSamples, tSamples);
//The same batch size set here was set in the model
BaseDatasetIterator baseIterator = new BaseDatasetIterator(miniBatchSize, sampleSize, fetcher);
MultipleEpochsIterator iterator = new MultipleEpochsIterator(nEpochs, baseIterator);
model.fit(iterator)
Затем я провел дополнительные тесты, изменяя размер пакета, но это не изменило частоту строк журнала, выводимых IterationListener. Я имею в виду, что я думал, что если я увеличу размер пакета до 100, то с 1000 выборками у меня будет всего 10 обновлений параметров, то есть всего 10 итераций, но журналы и интервалы временных меток более или менее одинаковы.
КСТАТИ. Есть аналогичный вопрос, но ответ на самом деле не отвечает на мой вопрос, я хотел бы лучше понять фактические детали: Deeplearning4j: Iterations, Epochs и ScoreIterationListener