c# - 神经网络 OCR - 需要参数帮助 - Coursera Ng 的示例

标签 c# visual-studio-2013 machine-learning neural-network ocr

我正在用 C# 实现 Ng 的 OCR 神经网络示例。 我认为我已经正确实现了所有公式[矢量化版本],并且我的应用程序正在训练网络。

关于如何看到我的网络在识别方面的改进,有什么建议吗 - 无需在训练完成后通过绘制示例来手动测试示例?我想在训练过程中了解我的训练进展情况。

我已经在绘制的数字上测试了我训练的权重,所有神经元的输出都非常相似(大约 0.077,或类似​​的东西......在所有神经元上),并且最大值位于错误的神经元上。所以结果与绘制的图像不匹配。

这是我迄今为止所做的唯一测试:成本函数随时代的变化 enter image description here

所以,这就是成本函数(有人称之为目标函数?)在 50 个时期内发生的情况。 我的 Lambda 值设置为 3.0 ,学习率为 0.01,5000 个示例,我在每个时期之后进行批处理,即在这 5000 个示例之后。激活函数:sigmoid。

输入:400 隐藏:25 输出:10

我不知道 lambda 和学习率的正确值是多少,以便我的网络可以在不过度拟合或欠拟合的情况下进行学习。

有什么建议可以了解我的网络学习情况吗?

此外,在所有这些训练之后,J 成本函数应该具有什么值? 它应该接近零吗?

我应该有更多的纪元吗?

我的示例全部按数字排序是不是很糟糕?

感谢任何帮助。

最佳答案

:对于如何确定我的网络学习情况有什么建议吗?
A:将数据分为三组训练、交叉验证和测试。使用测试数据验证您的结果。这实际上是后面类(class)中的地址。

:另外,在所有这些训练之后,J 成本函数应该具有什么值?它应该接近零吗?
A:我记得Ng在作业中提到什么是期望值。正则化成本不应为零,因为它包括所有权重的总和。

:我应该有更多的纪元吗?
A:如果你运行你的程序足够长的时间(少于 20 分钟?),你会发现成本并没有变小,我认为它达到了局部/全局最优,所以不需要更多的 epoch。

:我的例子都是按数字排序的,这样会不会不好?
A:算法修改每个示例的权重,因此不同的数据顺序确实会影响批处理中的每个步骤。不过最终结果应该不会有太大差异。

关于c# - 神经网络 OCR - 需要参数帮助 - Coursera Ng 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27234259/

相关文章:

c# - 为什么我会使用仅限于单一类型的 where 约束?

c# - Visual Studio 2013 在打开 xsl 时崩溃

python - 如何确定 Keras 上的卷积神经网络预测的二进制类别?

python-3.x - 神经网络的分辨率取决于哪些因素?

c# 实现接口(interface)的抽象类

c# - WebBrowser aspx 的命名空间

c++ - 使用 Visual 调试器释放内存非常慢

c++ - Opencv 3.0加载人脸级联时出错

python - 在 scikit-learn 中将分类器保存到磁盘

c# - 编译Release和Debug是不是要生成不同的IL代码+不同的机器码?