从哪里开始使用神经网络进行手写识别?

我一直在努力学习神经网络一段时间,我可以在线了解一些基本的教程。 现在我想用神经网络开发在线手写识别。 所以我不知道从哪里开始? 我需要一个非常好的指导。 最后我是java程序员。

你有什么建议我这样做?

在Unipen数据库上使用字符识别开始简单。

您需要从原始轨迹数据中提取相关特征,以形成通常称为“特征向量”的东西。 例如,您可以使用插值方案重新采样数据,最终得到n个元组,每个元组包含以下信息:

  • 位置
  • 取向
  • 速度
  • 促进
  • 曲率
  • 等等

一旦有了固定大小的特征向量,就可以将它用作神经网络的输入。 尝试MLP网络开始。

您必须进行试验才能确定哪些function最佳。

如果您需要开始从Ink数据中提取function,请查看HP的Lipi Toolkit (请注意,他们的识别器不使用神经网络)。

您还可以查看实施神经网络教程的15个步骤 。

神经网络Java简介是一本很好的入门书,包括一个手写识别示例。

替代文字http://sofzh.miximages.com/java/51RmyzT3ZUL._SL500_AA240_.jpg

看看网上漂浮的一些项目:

  • 神经网络手写识别小程序
  • Java技术中的手写识别
  • 手写识别

仅列出谷歌为“ java手写识别 ”吐出的三个第一个链接

一些提示可以帮助您入门:

  • 如果可以,使用向量而不是位图图形。 理想情况下,您应该具有每个笔划的速度和方向。 通过曲线弯曲的方式加上绘制的速度而不是forms来识别字母通常更简单。

  • 用几种方法解决问题。 使用神经网络,形状识别,大小,上一个和下一个字母,词典。 所有这些都将为您提供不同的错误级别的结果。 这有助于大大改善结果。

祝你好运!

彼得诺维格的人工智能:现代方法是一本关于一般人工智能的好书,并解释了很多关于基础知识的内容,还有一个关于背向传播神经网络的部分。

要训​​练您的神经网络,您需要数据集。

在UCI机器学习库中 有手写数字的MNIST数据库 ,或者基于笔的手写数字数据集识别

UCI ML存储库有很多很棒的数据集,其中很多都可以很好地训练神经网络。 即使你不知道它们是什么,你也可以抓住一些,看看你的ML系统是否可以完成分类任务。 查看具有大量属性和实例的分类任务 ,但是当您开始时也可以尝试较小的属性和实例 。

顺便说一下,除了神经网络之外还有很多技术,包括支持向量机 ,它们很受欢迎。

请记住,如果您的目标是实际识别这些角色, 您的表现将根据输入function的质量和选择而有所下降

选择正确的function,并尽可能多地预处理(即去掉噪声特征,无关数据,重复或强相关特征)是至关重要的 。 根据我的经验,从具有良好特征的最无聊和最近邻实现中获得更好的性能,而不是具有较少选择特征的尖端算法。

对你而言,这意味着暂时延迟阅读神经网络文献(首先采用现成的黑盒实现),并阅读实际系统使用的图像处理等。 如果您的数据可以包含压力和速度信息,那就更好了。 像LDA热图这样的东西可以说明最初看哪些特征重要,哪些不重要。

对于基本分类,有很多不错的算法。 大部分工作都很好,对你来说效果很好。 困难的部分不是挑选或调整算法,而是避免垃圾垃圾场。

Heaton研究将为您提供很多帮助

http://www.heatonresearch.com/articles/7/page3.html – 访问此内容以获取示例代码片段的教程

神经网络[如果我没有弄错]将用于解释模式,您为程序提供输入,程序在一组存储的模式中搜索该模式,并根据匹配提供可能的匹配。

在您的情况下,模式的尺寸可以是速度+方向或仅方向等数据

我做了一个神经机器人的小模拟,以类似的方式在我的网站上聊天。

该计划“学习”的模式越多,它提供的答案就越准确。

神经网需要大量的浸泡时间。 概念很简单,但对于初学者来说它们可能是压倒性的。

看看JochenFröhlich用Java中的神经网络做了些什么。 这听起来像是像你这样的Java程序员的理想起点。

书籍: 字符识别系统:学生和从业者指南和 白板识别笔记:在线,离线和组合是很好的起点。

如果您正在寻找概念,我建议BrainNet,

神经网络 – 第一部分:.NET中的一个简单的手写识别系统

http://amazedsaint.blogspot.com/2008/01/neural-networks-part-i-simple.html

BrainNet将帮助您

  • 获得关于神经元和神经网络的公平理解
  • 获得有关智能系统的良好概念
  • 了解如何使用此神经网络库在项目中使用它。
  • 了解如何开发一些很酷的神经网络程序

我建议您从手写数字识别开始,原因如下:

  • 任务定义明确
  • 上面提到了一个非常好的手写数字数据库( MNIST )
  • 在这个问题上测试了很多实现的算法
  • 这个问题最成功的方法之一是卷积神经网络,甚至用于商业应用。 可用的实现很少,包括C ++,CUDA,Matlab,Python。 不幸的是,我不知道任何Java实现。