您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 神经网络课程实验三hopfield网络(Matlab)
1实验三Hopfield网络学习算法的简单应用1.不同印刷版本数字8的识别一.实验目的1.加深对Hopfield网络学习算法的理解2.通过实验了解Hopfield学习算法的工作原理3.通过上机实验掌握具体的实现方法二.实验原理Hopfield网络Hopfield网络是一种具有全互联结构的递归神经网络,其具有反馈机制的非线性动力学系统,反映了生物神经系统结构的复杂性。该网络一般分为离散型(DHNN)和连续型(CHNN)两种,其标准的网络能量函数可以表示为:12ijijiiijiETVVIV.式中:ijT是神经元i和神经元j的连接权值;iI是神经元i的输入阈值;iV和jV分别是神经元i和神经元j的输出值。在满足一定条件下,能量函数的能量在网络运行过程中不断减小,最后趋于稳定的平衡状态。Hopfield网络自提出以来,已成功应用于多个方面。网络的定义一个n阶的Hopfield网络是一个五元组:(),,,,nFDHNGIFOFOAWA其中:1)GF:规定DHN(n)拓扑结构的扩展模糊图:(),(),()FFFFGNGEGAG其中,N(GF)={Ni(i)1in}是非空神经元集合,每一个神经元Ni附有阈值i;E(GF)={eij1i,jn}是边的集合,eij是NiNj的边;A(GF)=(wij)nn是联系矩阵,wij是NiNj的联系效率。2)IFN(GF):输入域。3)OFN(GF):输出域。4)WA:工作算法,令oi(t){-1,1}为Ni在t时刻的状态,o(t)=(o1(t),o2(t),…,on(t))T为N(GF)在t时刻的状态向量(t=0,1,2,…),则::()()(,)IOIOWAIFOFooooo其中,oI{-1,1}nI1(nIn)和oO{-1,1}nO1(nOn)分别为IF和OF的状态向量。5)OA:自组织算法:()()FFOAAGAG对Hopfield网络而言,一般情况下,IF=OF=N(GF),即:oI=oO=o。实际上,给定神经元的阈值和神经元之间的联系效率即可唯一地确定一个2Hopfield网络,给定神经元的阈值和神经元之间的联系效率即可唯一地确定一个Hopfield网络。因此,一个n阶的Hopfield网络可简记为:(),nDHNW。其中:1)W=A(GF):DHN(n)联系矩阵。2)=(1,2,…,n)T:DHN(n)阈值向量N阶DHN拓扑结构工作算法Hopfield网络的工作模式:设N为n阶Hopfield网络DHN(n)每一时刻需要调整其状态的神经元的数量,则按N的数量:a.串行模式(SerialMode):N=1b.并行模式(ParallelMode):N≥2.(部分并行模式和全并行模式)按每一时刻选择DHN(n)需要调整其状态的神经元的方式的不同,又可分为:c.确定模式(DeterministicMode)d.随机模式(RandomMode)对于Hopfield网络的工作算法WA:1()()(1)sgn(())njijjjijjvtwototvt(..,,0)kjkjIieNNSt如果在给定的离散时刻t{0,1,2,…},NSk(k{1,2,…,m}的选择则是随机地,则WA为随机工作模式,否则,为确定性工作模式。如果k{1,2,…,m},|Ik|=1,即每一个集合NSk(k{1,2,…,m}中只有一个神经元,则WA为串行模式;如果m=1,则WA为全并行模式;如果k{1,2,…,m},1|Ik|m,则WA为部分并行模式。Hopfield网络记忆或学习Hopfield网络的运行过程是将初始状态转移至稳定状态的过程。Hopfield网络由初始状态运行至稳定状态的过程可以被理解为神经系统的联想记忆过程。稳定状态就是Hopfield网络记忆的内容。外积法(OuterProductMethod)是Hopfield网络综合设计方法之一。该方法源于Hebb学习律。Hebb学习律:设有一个n维的Hopfield网络DHN(n),对任意i,j{1,2,…,n},若DHN(n)的状态值oi和oj符号相同,即DHN(n)的神经元Ni和Nj同时处于兴奋或抑制,则它们的联系效率wij应该得以加强,反之,wij应该减弱。外积法(1):3()()1()(0)()ssijijNijijswsoowws(,{1,2,,})ijn向量形式为:()()1NssTsWoo。外积法(2):()()10()(0)()ssijijNijijsijwsooijwws(,{1,2,,})ijn相应的向量形式为:()()1NssTsWooI三.实验内容以数字8为例,选择N个不同印刷字体的8,编码后对其进行正交化,然后将其作为范例集合Exemplar={O(s)|s=1,2,…,N}中的范例。a.编码:O(9)=(-1,-1,-1,-1,-1,1,1,…)Tb.构造Hopfield网络:目标是识别8c.验证范例的可识别性以及考察非范例的含噪声模式的可识别性本次实验共准备了7种不同印刷体的8,并对他们进行了逐一编码,令1代表白,-1代表黑。4从而得到整合后的目标向量,并对他们设计相应的hopfield神经网络。接下来依次读入待测试的印刷体8以及含噪声的印刷体8,如下:利用之前设计好的神经网络对其进行仿真,得到结果如下所示:通过上图我们可以看到,仿真结果1为对测试样本的识别,可以很好地呈现出数字8.仿真结果2为对含噪样本的识别,,大体上可以看到8的形状,相对于原图,去除了一些噪点。Hopfield网络可以很好地对范例进行识别,对含噪图可以进行大体上的识别。四.附录clear;clc;%读入数字图片,为个人用画图板制作的图片x=imread('08.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);else051005101520待试图片08051005101520待试图片18051005101520待试图片28051005101520待试图片38051005101520待试图片48051005101520待试图片58051005101520待试图片68051005101520测试样本051005101520仿真结果1051005101520含有噪声的样本051005101520仿真结果25I=x;endI0=featureC(I);I00=I0';x=imread('18.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endI1=featureC(I);I11=I1';x=imread('28.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endI2=featureC(I);I22=I2';x=imread('38.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endI3=featureC(I);I33=I3';x=imread('48.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endI4=featureC(I);I44=I4';6x=imread('58.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endI5=featureC(I);I55=I5';x=imread('68.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endI6=featureC(I);I66=I6';%总的目标向量T=[I00I11I22I33I44I55I66];%设计hopfield网络net=newhop(T);%定义测试样本x=imread('test8.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endItest=featureC(I);Itest1=Itest';x=imread('test188.bmp');d=size(x);%彩色转灰度图iflength(d)==3I=rgb2gray(x);elseI=x;endItest=featureC(I);7Itest2=Itest';%网络仿真fori=1:16T=[I00(:,i)I11(:,i)I22(:,i)I33(:,i)I55(:,i)I66(:,i)];net=newhop(T);%设计hopfield网络y1(:,i)=sim(net,1,[],Itest1(:,i));endfori=1:8forj=1:16ify1(i,j)=0y1(i,j)=-1;elsey1(i,j)=1;endendendfori=1:16T=[I00(:,i)I11(:,i)I22(:,i)I33(:,i)I55(:,i)I66(:,i)];net=newhop(T);%设计hopfield网络y2(:,i)=sim(net,1,[],Itest2(:,i));endfori=1:8forj=1:16ify2(i,j)=0y2(i,j)=-1;elsey2(i,j)=1;endendendsubplot(3,4,1);figt(I00);%figure,imshow(I0);title('待试图片08')subplot(3,4,2);figt(I11);%figure,imshow(I1);title('待试图片18')subplot(3,4,3);figt(I22);%figure,imshow(I2);title('待试图片28')subplot(3,4,4);figt(I33);8%figure,imshow(I3);title('待试图片38')subplot(3,4,5);figt(I44);%figure,imshow(I4);title('待试图片48')subplot(3,4,6);figt(I55);%figure,imshow(I5);title('待试图片58')subplot(3,4,7);figt(I66);%figure,imshow(I6);title('待试图片68')subplot(3,4,8);figt(Itest1);%figure,imshow(Itest);%绘制测试样本二值化图像title('测试样本')subplot(3,4,9);%figure,imshow(y);%绘出仿真输出二值化图像figt(y1);%绘出仿真输出二值化图像title('仿真结果1')subplot(3,4,10);figt(Itest2);%figure,imshow(Itest);%绘制测试样本二值化图像title('含有噪声的样本')subplot(3,4,11);%figure,imshow(y);%绘出仿真输出二值化图像figt(y2);%绘出仿真输出二值化图像title('仿真结果2')functionfigt(t)holdonaxissquare%以当前坐标轴范围为基础,将坐标轴区域调整为方格形forj=1:16fori=1:8ift((j-1)*8+i)0fill([ii+1i+1i],[17-j17-j18-j18-j],'k')elsefill([ii+1i+1i],[17-j17-j18-j18-j],'w')endendendholdofffunctionI=featureC(x)9%将图片数据转化为1,-1矩阵略
本文标题:神经网络课程实验三hopfield网络(Matlab)
链接地址:https://www.777doc.com/doc-7248624 .html