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 中的时期和迭代的主要内容,如果未能解决你的问题,请参考以下文章

DeepLearning4J 中的 GRU

计算训练中迭代的时期数?

deeplearning4j 和 Maven 的错误

第02课:DeepLearning4j 开发的基本流程

第02课:DeepLearning4j 开发的基本流程

基本的 deeplearning4j 分类示例