Deeplearning4j:Iterations,Epochs和ScoreIterationListener

时间:2017-01-13 14:45:01

标签: java deeplearning4j

大家下午好。

我对Deepleaning4j库很新,还有一些东西对我来说还不清楚。 " epoch"的概念因此,很明显它代表了训练集的一个完整周期。 我的第一个怀疑是与#34;迭代"的概念有关。什么是训练集的迭代?它是否与小批量训练实例或其他内容的分析相对应?

在我的代码中,我设置了#34; .iterations(1)&#34 ;;但是,当我运行我的代码时,我看到很多:

... ScoreIterationListener - 迭代XX的分数是yy.yyyyyy"

所以,如果我设置" .iterations(1)",为什么我会继续看到XX大于1的值? 也许,"迭代"的概念之间可能存在一些差异。作为网络配置参数和什么"迭代"是否为ScoreIterationListener类?

感谢大家对任何有用信息的回答或链接。

最佳, 莫罗。

1 个答案:

答案 0 :(得分:5)

DeepLearning4J documentation有一些很好的见解,特别是关于时期和迭代之间的差异。

根据DL4J的文件:

迭代只是神经网络模型参数的一次更新。 不要与纪元混淆,后者是完整的数据集传递。 在纪元结束之前可以进行许多迭代。如果您为每次遍历整个数据集更新一次参数,则Epoch和iteration只是同义词;如果你使用迷你批次更新,它们意味着不同的东西。假设您的数据有2个小批量:A和B. .numIterations(3)执行类似 AAABBB 的培训,而3个时期看起来像 ABABAB

关于您的问题以及此摘录所引用的内容,如果您设置.iterations(1)并且只有一个批处理,则迭代将与1个纪元同义,或者一个遍历整个数据集。但是,如果使用迷你批次进行更新,则时期和迭代会略有不同 - 迭代将导致AAABBB而不是生成ABABAB的时期(由上面的示例引用)。

希望这个答案和链接的文档能够回答你的问题!

P.S。我为迟到的回复道歉;我最近偶然发现了这个问题!