Я недавно начал изучать Deeplearning4j, и я не понимаю, как на самом деле реализуется концепция эпох и итераций.В онлайн-документации говорится:
эпоха - это полный проход через данный набор данных ...
Не следует путать с итерацией, которая является просто одним обновлением модели нейронной сети.параметры.
Я провел тренировку с использованием MultipleEpochsIterator, но для первого запуска я установил 1 эпоху, miniBatchSize = 1 и набор данных из 1000 сэмплов, поэтому я ожидал, что тренировка завершится после 1 эпохи и1000 итераций, но после более чем 100 000 итераций он все еще работал.
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: итерации, эпохи и ScoreIterationListener