为OCR训练前馈神经网络[关闭]

问题描述 投票:11回答:4

目前我正在学习神经网络,我正在尝试创建一个可以训练识别手写字符的应用程序。对于这个问题,我使用前馈神经网络,当我训练它识别1,2或3个不同的字符时,它似乎工作。但是当我尝试使网络学习超过3个字符时,它将停留在40 - 60%左右的错误百分比。

我尝试使用多层和更少/更多的神经元,但我似乎无法做到正确,现在我想知道前馈神经网络是否能够识别那么多信息。

一些统计:

网络类型:前馈神经网络

输入神经元:100(10 * 10)网格用于绘制字符

输出神经元:要识别的字符数量

有谁知道我的架构中可能存在的缺陷是什么?输入神经元太多了吗?前馈神经网络不能进行字符识别吗?

artificial-intelligence neural-network ocr backpropagation feed-forward
4个回答
14
投票

对于手写字符识别,您需要

  1. 许多训练样例(也许你应该创建训练集的扭曲)
  2. softmax激活功能在输出层
  3. 交叉熵误差函数
  4. 随机梯度下降训练
  5. 每层都有偏差

一个好的测试问题是手写数字数据集MNIST。以下是在此数据集上成功应用神经网络的论文:

Y. LeCun,L。Bottou,Y。Bengio和P. Haffner:基于梯度的学习应用于文档识别,http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

Dan Claudiu Ciresan,Ueli Meier,Luca Maria Gambardella,Juergen Schmidhuber:Deep Big Simple Neural Nets Excel on Handwritten Digit recognition,http://arxiv.org/abs/1003.0358

我训练了一个具有784-200-50-10架构的MLP,并且在测试装置上获得了> 96%的准确度。


10
投票

你可能想在http://www.ml-class.org上讲第3和第4讲。吴教授解决了这个确切的问题。他正在分类10位数(0 ... 9)。他在课堂上做的一些让他达到95%训练准确度的事情是:

  • 输入Nueron:400(20x20) 隐藏层:2 隐藏层的大小:25 激活功能:乙状结肠 训练方法:梯度下降 数据大小:5000

3
投票

1
投票

前段时间我遇到了类似的问题,试图使用MNIST数据集来识别手写数字。我的前馈神经网络在验证集上给出了大约92%的准确度,但是经常对我给它的图像进行错误分类。

我通过在网络中添加隐藏层并使用RMSProp来解决此问题。网现在提供大约97%的准确度,并正确地分类我给它的图像。

此外,如果您的成本没有下降,这可能意味着您的学习率太高或您的网络可能陷入局部最小值。在这种情况下,您可以尝试降低学习率和初始权重。

© www.soinside.com 2019 - 2024. All rights reserved.