第一范文网 - 专业文章范例文档资料分享平台

基于Hopfield神经网络识别0~9

来源:用户分享 时间:2025/6/6 12:52:03 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

原理简介:

Hopfield网络是有反馈的全互联型网络,其形式如图2所示,N为神经元的数目,V表示神经元的输入向量,U表示输出向量,W为神经元之间的权值。离散Hopfield网络中每个神经元的输出只能取“1”或“-1”两种状态,各神经元的状态可用向量V表示:V={v1,v2 ,…vn}。网络中各神经元彼此互相连接,即每个神经元将自己的输出通过连接权传给其它神经元,同时每个神经元接受其它神经元传来的信息。

图2 有反馈的全互联型网络

Hopfield网络的稳定性是由能量函数来描述的,即对网络的每个状态发生变化时,能量函数E随网络状态变化而严格单调递减,这样Hopfield模型的稳定与能量函数E在状态空间的局部极小点将一一对应。

设有N个神经元构成的Hopfield网络,其中第i个和第j个神经元节点状态分别记为vi和vj;w是神经元i和j的连接权,?为神经元i的阈值。节点的能量可表示为:

Ei=-(

?wvijj?inni??i)v

则整个Hopfield网络整体能量函数定义为:

1nE=-?2i?1?wvv???v

ijijiij?ii?1n设有N个神经元构成的Hopfield神经网络,第i个神经元在t时刻所接收的来自其它N-1个神经元输入信号的总和记为ui(t),t+1时刻第i个神经元的输出值vi(t+1)是符号函数作用于ui(t)的某个阈值 时,该神经元将触发成兴奋状态。据此可知Hopfield网络的运行规则为:

(1) 在网络中随机地选择一个神经元; (2) 求所选神经元i(1?i?N)的输入总和

ui(t)=

?wvijj?ini??i;

(3) 根据ui(t)的值大小,更新神经元的状态

if (ui(t))?0

then vi(t+1)=1

else vi(t+1)=0;

(4) 神经元i以外的神经元j的状态不变化; (5) 转向(1),直到网络达到稳定。

Hopfield网络作为记忆的学习时,稳定状态是给定的,通过网络的学习求适合的权矩阵W(对称阵),学习完成后以计算的方式进行联想。对给定的M个模式,Hopfield网络可按Hebb规则来进行学习。

?0,i?j? Wij??Mv(k)v(k),i?jj??i?k?1按上述规则求出权矩阵后,可认为网络已经将这M个模式存入到网络的连接权中。

问题描述:

设计一个Hopfield网络,使其具有联想记忆功能,能正确识别阿拉伯数字,当数字被噪声污染后仍可以正确地识别。

程序流程:

先设计好标准的数字点阵(本文采用10*10矩阵表示),根据这些标准的数字点阵创建并训练网络,使网络达到稳定状态,用带噪声的数字测试训练的网络。噪声有两种形式:一种是固定噪声;另一种是随机噪声,本文对两种噪声都做讨论。

设计数字点阵 (0-9) 创建Hopfield网络 产生带噪声的 数字点阵 数字识别测试 结果分析

程序:

%数字0-9的标准点阵 zero=load('zero.txt'); one=load('one.txt'); two=load('two.txt'); three=load('three.txt'); four=load('four.txt'); five=load('five.txt'); six=load('six.txt');

seven=load('seven.txt'); eight=load('eight.txt'); nine=load('nine.txt');

%训练样本(目标向量)

T=[zero(:),one(:),two(:),three(:),four(:),five(:),six(:),seven(:),eight(:),nine(:)]; %输出数字0-9 figure for ii=0:9,

subplot(2,5,ii+1);

imshow(reshape(T(:,ii+1),10,10)); title([' 当前数字:' num2str(ii)]) end

%数字带噪声数字点阵(固定法) noise_matrix=load('noise_matrix.txt'); %数字带噪声数字点阵(随机法) %noise_matrix=zero; %for i=1:100 % a=rand; % if a<0.1

% noise_matrix(i)=-zero(i); %end %end figure

subplot(2,3,1)

imshow(noise_matrix); title('带噪声的样本');

%关于hopfield网络的创建和仿真,参数形式参见Matlab的帮助 net=newhop(T);%创建hopfield网络,根据标准样本开始训练学习

No22=sim(net,{1,5},{},{noise_matrix(:)});%仿真5次,只有一个样本noise_matrix for ii=1:5

subplot(2,3,1+ii)

imshow(reshape(No22{ii},10,10)); title(['第' num2str(ii) '仿真结果']) end

实验结果:

标准数字点阵

当前数字:0 当前数字:1 当前数字:2 当前数字:3 当前数字:4 当前数字:5 当前数字:6 当前数字:7 当前数字:8 当前数字:9

随机噪声的数字识别:(以带随机噪声的0为例)

带噪声的样本第1仿真结果第2仿真结果第3仿真结果第4仿真结果第5仿真结果

固定噪声的数字识别:(以被污染的2为例)

带噪声的样本第1仿真结果第2仿真结果第3仿真结果第4仿真结果第5仿真结果

结果分析:

本文对被污染的数字0-9都进行了实验,无论是带随机噪声还是固定噪声,训练过的Hopfield网络在仿真3次后都能被识别出来。由于用来训练网络的各个样本并不是严格地正交,不符合Hopfield网络联想记忆的条件,当数字在噪声的污染下失真很严重时,Hopfield网络识别会出现偏差。

改进方法:

当输入的训练样本不满足相互正交的条件时,可以在网络训练时,通过修改连接权值,使网络达到稳定状态,这样的话,Hopfield网络可以训练样本不是相互正交时也可以达到稳定状态,训练后的网络可以很好地识别带噪声的数字。

搜索更多关于: 基于Hopfield神经网络识别0~9 的文档
基于Hopfield神经网络识别0~9.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9mgou1mfm77yqpp85nb6_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top