8

大家下午好。

我对 Deepleaning4j 库还很陌生,还有一些我还不清楚的东西。“epoch”的概念并不新鲜,因此很明显它代表了训练集上的一个完整周期。我的第一个疑问与“迭代”的概念有关。什么是训练集的迭代?它对应于对小批量训练实例的分析还是其他什么?

在我的代码中,我设置了“.iterations(1)”;然而,当我运行我的代码时,我看到了很多:

... ScoreIterationListener - 迭代 XX 的得分是 yy.yyyyyy”

那么,如果我设置“.iterations(1)”,为什么我会继续看到 XX 的值大于 1?将“迭代”作为网络配置参数的概念与“迭代”对 ScoreIterationListener 类的含义之间是否存在一些差异?

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

最好的,毛罗。

4

1 回答 1

8

DeepLearning4J文档有一些很好的见解,特别是关于一个时期和一个迭代之间的区别。

根据 DL4J 的文档:

"一次迭代只是对神经网络模型参数的一次更新。不要与一次完整地遍历数据集的时期相混淆。在一个时期结束之前可能会发生许多迭代。时期和迭代只有在您更新您的每次通过整个数据集的参数一次;如果您使用小批量更新,它们意味着不同的东西。假设您的数据有 2 个小批量:A 和 B。.numIterations(3)执行像AAABBB的训练,而 3个epoch看起来像ABABAB

关于您的问题以及本摘录所引用的,如果您设置.iterations(1)并且只有一个批次,则迭代将与 1 个时期同义,或者通过完整的数据集进行一次。但是,如果您使用小批量进行更新,则一个时期和一个迭代会略有不同——一个迭代会产生 AAABBB,而不是一个时期会产生 ABABAB(由上面的示例引用)。

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

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

于 2017-04-21T23:39:52.667 回答