大家下午好
我对 Deepleaning4j 库还很陌生,有一些东西我还不清楚。 “epoch”的概念并不新鲜,因此很明显它代表了训练集上的一个完整周期。 我的第一个疑问与“迭代”的概念有关。什么是训练集的迭代?它对应于对小批量训练实例数量的分析还是对应于其他东西?
在我的代码中,我设置了“.iterations(1)”;然而,当我运行我的代码时,我看到了很多:
... ScoreIterationListener - 迭代 XX 的分数是 yy.yyyyyy"
那么,如果我设置“.iterations(1)”,为什么我会继续看到大于 1 的 XX 值? “迭代”作为网络配置参数的想法与“迭代”对 ScoreIterationListener 类的含义之间是否存在一些差异?
感谢大家的回答或有用信息的链接。
最好的, 毛罗。
最佳答案
DeepLearning4J documentation有一些很好的洞察力,尤其是关于纪元和迭代之间的区别。
根据 DL4J 的文档:
“迭代只是神经网络模型参数的一次更新。
不要与 epoch 混淆,后者是对数据集的一次完整遍历。
在一个纪元结束之前可能会发生许多迭代。只有在每次遍历整个数据集时更新一次参数时,时代和迭代才是同义词;如果您使用小批量更新,它们意味着不同的东西。假设您的数据有 2 个小批量:A 和 B。.numIterations(3)
执行像 AAABBB 这样的训练,而 3 个 epoch 看起来像 ABABAB。”
关于您的问题以及此摘录所引用的内容,如果您设置 .iterations(1)
并且只有一个批处理,则迭代将等同于 1 个纪元,或者一次通过完整的数据集。但是,如果您使用小批量更新,一个时期和一个迭代会略有不同——一个迭代会产生 AAABBB,而不是一个时期,后者会产生 ABABAB(由上面的示例引用)。
希望这个答案和链接的文档能回答您的问题!
附言对于迟到的答复,我深表歉意;我最近偶然发现了这个问题!
关于java - Deeplearning4j:迭代、时期和 ScoreIterationListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41637150/