首页 > 解决方案 > NN:为什么手动实现比 Keras/TF 收敛得更好?

问题描述

我已经实现了一个基本的 1-hidden 层 NN 来识别来自 MNIST 数据集的一部分的数字(这改编自 Coursera ML 课程)。它是使用矩阵和共轭梯度 (fmincg) 优化实现的。

此外,我还实现了Keras implementation和 vanilla TF implementation

在手动实现中,有 50 次迭代(或 epoch,但由于我使用的是整个批次,所以每个 epoch 的大小为 1)。

现在,我注意到,手动实现需要一段时间来计算,但经过 50 次迭代后,我得到了非常好的结果。

另一方面,Keras 和 TF 需要更少的时间来计算,但如果我使用整个批次来获得相同的结果,则需要大约 500-1000 次迭代。(虽然使用 50 个 epoch,每个处理大小为 32 的小批量,似乎也很好用)

所以我想知道,手动实现是怎么来的。收敛更好?为什么即使迭代次数相同(50)也需要更长的计算时间?

标签: pythontensorflowkerasneural-network

解决方案


推荐阅读