python - 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)也需要更长的计算时间?
解决方案
推荐阅读
- android - 以编程方式检查 Smart Lock 是否已启用/配置为解锁锁定屏幕
- typescript - 在 TextInput 中输入值时,键盘会立即关闭
- django - 如何在标头中设置令牌并将用户重定向到 django 中的外部 url
- flutter - 颤振中的当前用户位置
- amazon-s3 - 在 cloudfront 和 s3 后面部署 gatsby 多语言站点
- svn - 分支策略多个并发发布分支(svn)
- blazor - MudDatePicker 返回正确的日期并在数据库 Blazor 中保存错误的日期
- android - 来自 Jetty ManagedSelector 的不受支持的操作异常
- javascript - 显示:块和事件更改 style.display = "block" 无法按预期工作
- javascript - JavaScript (React.js) - 缓存策略和反模式 (DDD)