Deeplearning4j 中的时期和迭代
Posted
技术标签:
【中文标题】Deeplearning4j 中的时期和迭代【英文标题】:Epochs and Iterations in Deeplearning4j 【发布时间】:2018-10-20 17:34:26 【问题描述】:我最近开始学习 Deeplearning4j,但我无法理解 epoch 和迭代的概念是如何实际实现的。 在在线文档中它说:
一个纪元是对给定数据集的完整传递... 不要与迭代混淆,迭代只是一个 更新神经网络模型的参数。
我使用 MultipleEpochsIterator 进行了训练,但在第一次运行时,我设置了 1 个 epoch,miniBatchSize = 1 和一个包含 1000 个样本的数据集,所以我希望训练在 1 个 epoch 和 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: Iterations, Epochs, and ScoreIterationListener
【问题讨论】:
我想你的答案可以在***.com/questions/4752626/…找到 【参考方案1】:在 1.x 之后这些都不再重要(它已经在 alpha 版本中) - 我们很久以前就摆脱了迭代。
最初它是一种快捷语法,因此人们不必编写 for 循环。
现在只关注带有 epoch 的 for 循环。
【讨论】:
以上是关于Deeplearning4j 中的时期和迭代的主要内容,如果未能解决你的问题,请参考以下文章