1、神经网络课程实验三hopfield网络Matlab经网络课程实验三hopfield网络(Matlab)实验三 Hopfield 网络学习算法的简单应用1不同印刷版本数字8的识别一实验目的1.加深对Hopfield 网络学习算法的理解2.通过实验了解Hopfield学习算法的工作原理3.通过上机实验掌握具体的实现方法二实验原理Hopfield 网络Hopfield 网络是一种具有全互联结构的递归神经网络,其具有反馈机制的非线性动力学系统,反映了生物神经系统结构的复杂性。该网络一般分为离散型(DHNN)和连续型(CHNN)两种,其标准的网络能量函数可以表示为:.式中:是神经元i和神经元j的连接权值
2、;是神经元i的输入阈值;和分别是神经元i和神经元j的输出值。 在满足一定条件下,能量函数的能量在网络运行过程中不断减小,最后趋于稳定的平衡状态。Hopfield 网络自提出以来,已成功应用于多个方面。网络的定义 一个 n 阶的 Hopfield 网络是一个五元组:其中:1)GF:规定 DHN(n) 拓扑结构的扩展模糊图:其中,N(GF) = Ni(i)1in 是非空神经元集合,每一个神经元 Ni 附有阈值 i;E(GF) = eij1i,jn 是边的集合,eij 是 NiNj 的边; A(GF) = (wij)nn 是联系矩阵,wij 是 NiNj 的联系效率。2)IF N(GF):输入域。3
3、)OF N(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,),则:其中,oI -1,1nI 1 (nI n) 和 oO -1,1nO 1 (nO n) 分别为 IF 和 OF 的状态向量。5) OA:自组织算法对 Hopfield 网络而言,一般情况下,IF = OF = N(GF),即: oI = oO = o。实际上,给定神经元的阈值和神经元之间的联系效率即可唯一地确定一个Hopfield 网络,给定神经元的阈值和神经元之间的联系效率即可
4、唯一地确定一个Hopfield 网络。因此,一个 n 阶的 Hopfield 网络可简记为:。其中:1) W = A(GF) :DHN(n) 联系矩阵。2) =(1,2,n)T:DHN(n) 阈值向量N阶DHN 拓扑结构工作算法Hopfield 网络的工作模式:设 N 为 n 阶 Hopfield 网络 DHN(n) 每一时刻需要调整其状态的神经元的数量,则按 N 的数量:a.串行模式 (Serial Mode):N = 1b.并行模式 (Parallel Mode): N2.(部分并行模式和全并行模式)按每一时刻选择 DHN(n) 需要调整其状态的神经元的方式的不同,又可分为:c.确定模式
5、(Deterministic Mode)d.随机模式 (Random Mode)对于 Hopfield 网络的工作算法 WA: 如果在给定的离散时刻 t0,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 网络
6、由初始状态运行至稳定状态的过程可以被理解为神经系统的联想记忆过程。稳定状态就是 Hopfield 网络记忆的内容。外积法 (Outer Product Method) 是 Hopfield 网络综合设计方法之一。该方法源于 Hebb 学习律。Hebb 学习律:设有一个 n 维的 Hopfield 网络DHN(n),对任意 i,j1,2,n,若 DHN(n) 的状态值 oi 和 oj 符号相同,即 DHN(n) 的神经元 Ni 和 Nj 同时处于兴奋或抑制,则它们的联系效率 wij 应该得以加强,反之, wij 应该减弱。外积法 (1): 向量形式为:。外积法 (2): 相应的向量形式为:三实验
7、内容以数字 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代表黑。从而得到整合后的目标向量,并对他们设计相应的hopfield神经网络。接下来依次读入待测试的印刷体8以及含噪声的印刷体8,如下:利用之前设计好的神经网络对其进行仿真,得到结果如下所
8、示:通过上图我们可以看到,仿真结果1为对测试样本的识别,可以很好地呈现出数字8.仿真结果2为对含噪样本的识别,大体上可以看到8的形状,相对于原图,去除了一些噪点。Hopfield网络可以很好地对范例进行识别,对含噪图可以进行大体上的识别。四附录clear;clc;% 读入数字图片,为个人用画图板制作的图片x = imread(08.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endI0 = featureC(I);I00 = I0;x = imread(18.bmp);d=size(x);%彩色转灰度图if len
9、gth(d)=3 I = rgb2gray(x);else I=x;endI1 = featureC(I);I11 = I1;x = imread(28.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endI2 = featureC(I);I22 = I2;x = imread(38.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endI3 = featureC(I);I33 = I3;x = imread(48.bmp);d=size(x
10、);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endI4 = featureC(I);I44 = I4;x = imread(58.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endI5 = featureC(I);I55 = I5;x = imread(68.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endI6 = featureC(I);I66 = I6;%总的目标向量T=I00
11、 I11 I22 I33 I44 I55 I66;%设计hopfield网络net=newhop(T); %定义测试样本x = imread(test8.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endItest = featureC(I);Itest1 =Itest;x = imread(test188.bmp);d=size(x);%彩色转灰度图if length(d)=3 I = rgb2gray(x);else I=x;endItest = featureC(I);Itest2 =Itest;%网络仿真f
12、or i=1:16 T=I00(:,i) I11(:,i) I22(:,i) I33(:,i) I55(:,i) I66(:,i); net=newhop(T); %设计hopfield网络 y1(:,i)=sim(net,1,Itest1(:,i);endfor i=1:8 for j=1:16 if y1(i,j)=0 y1(i,j)=-1; else y1(i,j)=1; end endendfor i=1:16 T=I00(:,i) I11(:,i) I22(:,i) I33(:,i) I55(:,i) I66(:,i); net=newhop(T); %设计hopfield网络 y2
13、(:,i)=sim(net,1,Itest2(:,i);endfor i=1:8 for j=1:16 if y2(i,j)=0 y2(i,j)=-1; else y2(i,j)=1; end endendsubplot(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);%
14、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,i
15、mshow(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)function figt(t)hold onaxis square %以当前坐标轴范围为基础,将坐标轴区域调整为方格形for j=1:16for i=1:8if t(j-1)*8+i)0fill(i i+1 i+1 i,17-j 17-j 18-j 18-j,k)elsefill(i i+1 i+1 i,17-j 17-j 18-j 18-j,w)endendendhold offfunction I = featureC( x )%将图片数据转化为1,-1矩阵略
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2