您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 基于离散Hopfield神经网络的数字识别实现
基于离散Hopfield神经网络的数字识别实现学院:电子与控制工程学院姓名:学号:2016.4基于离散Hopfield神经网络的数字识别实现一离散Hopfield神经网络概述Hopfield网络作为一种全连接型的神经网络,曾经为人工神经网络的发展开辟了新的研究途径。它利用与阶层性神经网络不同的结构特征和学习方法,模拟生物神经网络的记忆机理,获得了令人满意的结果。这一网络及学习算法最初是由美国物理学家J.JHopfield于1982年首先提出的,故称为Hopfield神经网络[1]。Hopfield最早提出的网络是二值神经网络,神经元的输出值只取1或-1,所以,也称离散Hopfield神经网络(DHNN,DiscreteHopfieldNeuralNetwork)。在离散Hopfield网络中,所采用的神经元是二值神经元,因此,所输出的离散值1和-1分别表示神经元处于激活和抑制状态[2]。DHNN是一种单层、输出为二值的反馈网络。假设有一个由三个神经元组成的离散Hopfield神经网络,其结构如图1所示。图1离散Hopfield神经网络结构在图1中,第0层仅仅作为网络的输入,它不是实际神经元,所以无计算功能;第1层是神经元,执行对输入信息与权系数的乘积求累加和,并经非线性函数f处理后产生输出信息。f是一个简单的阈值函数,如果神经元的输出信息大于阈值θ,那么,神经元的输出取值为1;小于阈值θ,则神经元的输出取值为-1。对于二值神经元,它的计算公式如下:jijjiyuwx式中,xj为外部输入,并且有1,1,jjijjiyuyu一个DHNN的网络状态是输出神经元信息的集合。对于一个输出层是n个神经元的网络,其t时刻的状态为一个n维变量:1[()()]TtnttyyY因为()ity可以取值为1或-1,故n维向量Y(t)有2n种状态,即网络有2n种状态。我们考虑DHNN的一般节点状态。用yj(t)表示第j个神经元,即节点j在时刻t的状态,则节点的下一个时刻(t+1)的状态可以求得:1,()0(1)[()]1,()0jjijttfttuyuu如果ijw在i-j时等于0,说明一个神经元的输出并不会反馈到其输入,这时,DHNN称为无自反馈的网络。如果wij在i=j时不等于0,说明一个神经元的输出会反馈到其输入端,这时,DHNN为有自反馈的网络。二基于Hopfield神经网络的数字识别根据Hopfield神经网络相关知识,下面设计一个具有联想记忆功能的离散型Hopfield神经网络,要求该网络可以正确识别1、2这两个个数字,并且当数字被一定的噪声干扰后,仍具有较好的识别效果。2.1设计思路假设网络由1、2共2个稳态构成,每个稳态用10*10的矩阵表示。该矩阵可直观地描述阿拉伯数字,即把矩阵规分成10*10个单元,有数字轨迹的单元用1表示,空白部分用-1表示,如图2所示。网络对这2个稳态即2个数字(点阵)具有联想记忆的功能,当有带噪声的数字点阵输入到该网络时,网络的输出便可以得到最接近的目标向量(即2个稳态),从而达到正确识别的效果。图2数字1和2的点阵2.2设计步骤按照上述思路,设计Hopfield网络需要经过以下几个步骤,如图3所示。图3Hopfield网络设计流程图2.3matlab实现利用MATLAB提供的函数,可以按照Hopfield网络设计流程图将设计步骤一一在MATLAB环境下实现。2.3.1输入输出设计如图2所示,有数字的部分用1表示,空白部分用-1表示,即可得到1、2的点阵。将数字点阵以图形的形式呈现出来,如图4所示。图4数字点阵1、2的实现结果利用这两个数字点阵构成训练样本T:T=[array_one;array_two]';2.3.2网络建立利用newhop()函数可以方便地创建一个离散型Hopfield神经网络:net=newhop(T);2.3.3产生噪声的数字点阵常见的模拟产生带噪声数字的方法有两种:固定噪声法和随机噪声法。固定噪声法指的是人工修改的方法改变数字点阵某些位置值,从而模拟产生带噪声的数字点阵。如果希望产生不同的带噪声的数字矩阵,需要人工做多次的修改,这无疑是比较麻烦的。随机噪声产生法是利用产生随机数的方法来确定需要修改的点阵位置,进而对数字点阵进行修改。由于数字点阵中的值只有1和-1两种,所以这里的修改就是将1换成-1,-1换成1。2.3.4网络仿真利用sim()函数可对神经网络进行仿真。3实验结果将带噪声的数字点阵输入已创建好的Hopfield网络,便可对带噪声的数字点阵进行识别,识别结果仍为数字点阵形式。实验结果如图5所示图5数字识别结果实验程序如下:%%Hopfield神经网络数字识别clearallclcloaddata1array_oneloaddata2array_twoT=[array_one;array_two]';net=newhop(T);loaddata1_noisynoisy_array_oneloaddata2_noisynoisy_array_two%%产生随机噪声noisy_array_one=array_one;noisy_array_two=array_two;fori=1:100a=rand;ifa0.1noisy_array_one(i)=-array_one(i);noisy_array_two(i)=-array_two(i);endendnoisy_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)')
本文标题:基于离散Hopfield神经网络的数字识别实现
链接地址:https://www.777doc.com/doc-2576125 .html