热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

基于Hopfield神经网络的数字识别

在日常生活中,经常遇到带噪声字符的识别问题,如交通系统中汽车牌照,由于汽车在使用过程中,要经受自然环境中的日吹风晒或者其他污染,造成字体的模糊不清,难以辨认,这是常常发生的事。如何从这

        在日常生活中,经常遇到带噪声字符的识别问题,如交通系统中汽车牌照,由于汽车在使用过程中,要经受自然环境中的日吹风晒或者其他污染,造成字体的模糊不清,难以辨认,这是常常发生的事。如何从这些残缺不全的字符中提取完整的信息,达到正确识别,这是字符识别的关键问题。字符识别在邮政,交通及商业票据管理等方面有着极高的应用价值。

        目前有很多字符识别的方法,如人工神经网络识别,概率统计识别和模糊识别等。传统的识别方法在有干扰的情况下不能很好的对字符进行识别,而离散型的Hopfield神经网络具有联想记忆的功能,利用这一功能对字符识别可以取得令人满意的效果。

一、离散型Hopfield神经网络的原理

        Hopfield网络最初由美国物理学家J. J Hopfield于1982年首次提出来的。它作为一种全连接型的神经网络,为人工神经网络的发展进程开辟了新的研究途径。Hopf field神经网络是一种互连型神经网络,其演变过程是一个非线性动力学系统,可以用一组非线性差分方程描述(离散型)或微分方程(连续型)来描述。系统的稳定性可用所谓的“能量函数”进行分析。在满足条件的情况下,某种“能量函数”的能量在网络运行过程中不断地减少,最后趋于稳定的平衡状态。对于一个非线性动力学系统,系统的状态从某一初值出发经过演变后可能有如下几种结果:渐进稳定点、极限环、混沌、状态发散。

        因为人工神经网络的变换函数是一个有界函数,故系统的状态不会发生发散现象。目前,人工神经网络经常利用渐进稳定点来解决某些问题。如果把系统的稳定点视为一个记忆的话,那么从初态朝这个稳定点的演变过程就是一个寻找记忆的过程。如果把系统的稳定点视为一个能量函数的极小点,而把能量函数视为一个优化问题的目标函数,那么从初态朝这个稳定点的演变过程就是一个求解该优化问题的过程。因此,Hopfield神经网络的演变过程是一个计算联想记忆或求解优化问题的过程。实际上,它的解决并不需要真的去计算,而是通过构成反馈神经网络,适当地设计其连接权和输入就可以达到这个目的。

        离散型Hopfield网络是单层的、输入输出为二值的反馈网络,在离散型网络中每个神经元都有相同功能,其输出称为状态。它主要用于联想记忆,当网络的初始态确定后,网络状态按其工作规则向能量递减的方向变化,最后接近或达到平衡点。这种平衡点又称为吸引子。如果设法把网络所需记忆的模式设计成某个确定网络状态的一个平衡点,则当网络从与记忆模式较接近的某个初始状态出发后,按Hopfield运行规则进行状态更新,最后网络状态稳定在能量函数的极小点,即记忆模式所对应的状态。这样就完成了由部分信息或失真的信息到全部或完整信息的联想记忆过程。离散型Hopfield神经网络的结构如下图:




       图中第0层仅仅作为网络的输入,它不是实际神经元,所以无计算功能;第一层是神经元,故而执行对输入信息与权系数的乘积求累加和,并经非线性函数f处理后产生输出信息。f是一个简单的阈值函数,如果神经元的输出信息大于阈值0,那么,神经元的输出取值为1;小于阈值为0,则神经元的输出取值为-1。


二、Hopfield神经网络在字符识别中的应用

2.1 问题描述:

根据Hopfield神经网络的相关知识,设计一个具有联想记忆功能的离散型Hopfiled神经网络。要求该网络可以正确识别0-9这10个数字,当数字被一定的噪声干扰后,仍具有较好的识别效果。

2.2 设计思路

       假设网络由0-9共10个稳态构成,每个稳态用10*10的矩阵表示。该矩阵直观地描述模拟阿拉伯数字,即将数字划分成10*10的矩阵,有数字的部分用1表示,空白部分用-1表示。网络对这10个稳态即10个数字(点阵)具有联想记忆功能,当有带噪声的数字点阵输入到该网络时,网络的输出便可以得到最接近的目标向量(即10个稳态),从而达到正确识别的效果。

设计步骤;

在此思路的基础上,设计Hopfield网络需要经过以下几个步骤:

1、设计数字点阵

有数字部分用1表示,空白部分用-1表示,将0-9的矩阵设计好存储。

2、创建网络

        MATLAB神经网络工具箱为Hopfield网络提供了一些工具函数。如newhop()函数用于创建一个离散型Hopfiled神经网络,其调用格式为net=newhop(T),其中,T是具有Q个目标向量的R*Q的矩阵(元素必须为-1或1);net为生成的神经网络,具有在T中的向量上稳定的点。Hopfield网络仅有一层,其激活函数用satlins()函数。

3、产生带噪声的数字点阵

带噪声的数字点阵,即点阵的某些位置的值发生了变化。模拟产生带噪声的数字矩阵方法有很多种,如固定噪声产生法和随机噪声产生法。本实验采用随机噪声产生法。

4、数字识别测试

将带噪声的数字点阵输入到创建好的Hopfiled网络,网络的输出是与该数字点阵最为接近的目标向量,从而实现联想记忆功能。

5、结果分析

对测试的结果进行分析比较,通过大量的测试来验证Hopfield网络用于数字识别的可行性与有效性。

    

               a.随机噪声10%时                                  b.随机噪声15%时  


  

                 c. 随机噪声20%时                           c, 随机噪声30%时                                                                                                     


附程序:

clear

clc

%%导入数字的点阵

load data1 array_one

load data2 array_two

T=[array_one;array_two]';

%%创建网络

net=newhop(T);

%%添加随机噪声

noisy_array_One=array_one;

 noisy_array_two=array_two;

 for i=1:100

     a=rand;

     if a<0.2

        noisy_array_one(i)=-array_one(i);

        noisy_array_two(i)=-array_two(i);

     end

 end

%%开始识别

noisy_One={(noisy_array_one)'};

identify_One=sim(net,{10,10},{},noisy_one);

identify_one{10}';

noisy_two={(noisy_array_two)'};

identify_two=sim(net,{10,10},{},noisy_two);

identify_two{10}';

%% 结果显示

Array_One=imresize(array_one,20);

subplot(3,2,1)

imshow(Array_one)

title('标准(数字1)')

Array_two=imresize(array_two,20);

subplot(3,2,2)

imshow(Array_two)

title('标准(数字2)')

subplot(3,2,3)

Noisy_array_One=imresize(noisy_array_one,20);

imshow(Noisy_array_one)

title('噪声(数字1)')

subplot(3,2,4)

Noisy_array_two=imresize(noisy_array_two,20);

imshow(Noisy_array_two)

title('噪声(数字2)')

subplot(3,2,5)

imshow(imresize(identify_one{10}',20))

title('识别(数字1)')

subplot(3,2,6)

imshow(imresize(identify_two{10}',20))

title('识别(数字2)')




推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 最近学习反射机制的时候Properties.load(读取本地文件流的时候怎么也找不到加载文件后面发现IDEA的默认根目录是在它的Project工程下IDEA的文件目录和Ec ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文讨论了如何在不使用SearchBar display controller的情况下,单独使用SearchBar并捕获其textChange事件。作者介绍了实际状况,即左侧SliderMenu中的SearchBar需要在主页TableView中显示搜索结果。然后,作者提供了解决方案和步骤,帮助读者实现这一功能。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
author-avatar
所谓一叶随缘_212
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有