Deeplearning4j中的时代和迭代

时间:2018-05-10 12:29:07

标签: deep-learning deeplearning4j

我最近开始学习Deeplearning4j,但我无法理解时代和迭代的概念是如何实际实现的。 在线文档中说:

  

epoch是完整传递给定数据集...
  不要与迭代混淆,迭代只是一个   更新神经网络模型的参数。

我使用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: Iterations, Epochs, and ScoreIterationListener

1 个答案:

答案 0 :(得分:1)

在1.x(已经在alpha中已经出现)之后,这一切都不重要 - 我们很久以前就完成了迭代。

最初它的意思是快捷语法,因此人们不必为循环编写。

现在专注于带有纪元的循环。