Deeplearning4j 中的时期和迭代

Epochs and Iterations in Deeplearning4j

我最近开始学习 Deeplearning4j,但我不明白 epochs 和迭代的概念实际上是如何实现的。 在在线文档中它说:

an epoch is a complete pass through a given dataset ...
Not to be confused with an iteration, which is simply one update of the neural net model’s parameters.

我 运行 使用 MultipleEpochsIterator 进行训练,但是对于第一个 运行 我设置了 1 个时期,miniBatchSize = 1 和一个包含 1000 个样本的数据集,所以我希望训练在 1 epoch 和 1000 次迭代,但在超过 100.000 次迭代之后它仍然是 运行ning.

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, and ScoreIterationListener

None 这在 1.x 之后很重要(它已经在 alpha 中了)——我们很久以前就摆脱了迭代。

最初它是一种快捷语法,因此人们不必编写 for 循环。

现在只关注带纪元的 for 循环。