神经网络 OCR - 参数需要帮助 - Coursera Ng 的示例
Posted
技术标签:
【中文标题】神经网络 OCR - 参数需要帮助 - Coursera Ng 的示例【英文标题】:Neural Network OCR - help needed with parameters - Coursera Ng's example 【发布时间】:2015-01-29 19:18:49 【问题描述】:我正在用 C# 实现 Ng 的 OCR 神经网络示例。 我认为我已经正确实现了所有公式 [矢量化版本],并且我的应用正在训练网络。
关于如何查看我的网络在识别方面的改进 - 无需在训练完成后手动绘制示例来测试示例,有什么建议吗?我想在训练期间查看我的训练进展情况。
我已经在绘制的数字上测试了我训练的权重,所有神经元的输出都非常相似(大约 0.077,或类似的东西......在所有神经元上),并且最大值出现在错误的神经元上。所以结果与绘制的图像不匹配。
这是我目前所做的唯一测试:成本函数随时期变化
所以,这就是成本函数(有人称之为目标函数?)在 50 个 epoch 中发生的情况。 我的 Lambda 值设置为 3.0,学习率为 0.01,5000 个示例,我在每个 epoch 之后进行批处理,即在这 5000 个示例之后。激活函数:sigmoid。
输入:400 隐藏:25 输出:10
我不知道 lambda 和学习率的正确值是什么,以便我的网络可以在不过度拟合或欠拟合的情况下进行学习。
有什么建议可以让我的网络学习良好吗?
另外,经过所有这些训练,J 成本函数应该有什么价值? 它应该接近零吗?
我应该有更多的 epoch 吗?
我的例子都是按数字排序的吗?
感谢任何帮助。
【问题讨论】:
【参考方案1】:问:对于如何确定我的网络学习良好有什么建议吗?A:将数据分为训练、交叉验证和测试三组。验证您的结果与测试数据。这其实是后面课程中的地址。
问:另外,经过所有这些训练,J 成本函数应该有什么价值?它应该接近零吗?A:我记得 Ng 在作业中提到了期望值是多少。正则化成本不应为零,因为它包括所有权重的总和。
问:我应该有更多的 epoch 吗?A:如果你运行程序的时间足够长(少于 20 分钟?)你会看到成本是没有变小,我认为它达到了局部/全局最优,因此不需要更多的时期。
问:我的示例都是按数字排序的,这很糟糕吗?A:算法会修改每个示例的权重,因此数据的顺序不同影响批次中的每个步骤。不过最终的结果应该相差不大。
【讨论】:
非常感谢。我绝对需要将我的示例划分为 cv 和测试。我最后做了一些测试,但我意识到这还不够(测试集太小,看不到任何东西)。 希望你能告诉我: prof.Ng 是否对 log.regress 使用了 J 成本函数。在绘制数据(错误)还是二次方程 (y-h(X))^2 ?我只知道 test 和 cv 错误不应该被规范化。 吴教授使用对数成本函数(交叉熵)。我记得他在演讲中从未使用过二次成本。以上是关于神经网络 OCR - 参数需要帮助 - Coursera Ng 的示例的主要内容,如果未能解决你的问题,请参考以下文章
Stanford机器学习---第十四讲.机器学习应用举例之Photo OCR
pickle load文件时报AttributeError: Can't get attribute 'Cours' on <module '__main__