机器学习理论与方法.docVIP

  • 3
  • 0
  • 约2.04千字
  • 约 4页
  • 2017-08-15 发布于贵州
  • 举报
机器学习理论与方法 实验报告 实验项目:基于Hopfield Network 模型的数字识别 实验者: 彭江军 学号: 2011114093 专业: 信息与计算科学 指导教师: 张瑞 一:程序前期准备与思路 (1) 先对图中给的8个已知的pattern图像数字化成矩阵,对于待处理的图像也处理为矩阵,导入excel表。 (2) 由权重的计算公式,编写程序得到权重矩阵。 (3) 选择相应的激活函数,这里我们选择bi-polar binary 函数。不断更新,使其能量不断下降,最终趋于稳定。 二:程序代码 1.得到权重的程序 % 读取数据 A=xlsread(0.xls,1); B=xlsread(1.xls,1); C=xlsread(2.xls,1); D=xlsread(3.xls,1); E=xlsread(4.xls,1); F=xlsread(6.xls,1); G=xlsread(u.xls,1); H=xlsread(9.xls,1); % 将矩阵依次处理为向量,以便求weight,由于是A,B等编号,故这一步无法用for来做 A1=A(1,:); for i=2:12 A1=vpa([A1 A(i,:)]); end B1=B(1,:); for i=2:12 B1=vpa([B1 B(i,:)]); end C1=C(1,:); for i=2:12 C1=vpa([C1 C(i,:)]); end D1=D(1,:); for i=2:12 D1=vpa([D1 D(i,:)]); end E1=E(1,:); for i=2:12 E1=vpa([E1 E(i,:)]); end F1=F(1,:); for i=2:12 F1=vpa([F1 F(i,:)]); end G1=G(1,:); for i=2:12 G1=vpa([G1 G(i,:)]); end H1=H(1,:); for i=2:12 H1=vpa([H1 H(i,:)]); end % 求weight公式 I=eye(120); W=(A1*A1+B1*B1+C1*C1+D1*D1+E1*E1+F1*F1+G1*G1+H1*H1)/120-8/120*I; W=double(W); xlswrite(w.xls,W) 2.更新程序 编写脚本文件 function HPML(x0,weight,n) %% x0为需要识别的数字矩阵 % weight 为经过学习得到的权重 % n为需要迭代的次数 O=weight*x0; [r,c]=size(O); % 迭代更新矩阵 for k=1:n-1 for i=1:r for j=1:c if(O(i,j)=0) O(i,j)=1; else O(i,j)=-1; end end end O=weight*O; end % 对于跳出循环的矩阵规范化 for i=1:r for j=1:c if(O(i,j)=0) O(i,j)=1; else O(i,j)=-1; end end end %将生成的向量以行序为主转化为矩阵,因为reshape函数以列序为主,故未采用 M=zeros(12,10); for i=1:12 M(i,:)=O(10*(i-1)+1:10*i); end imshow(M,[-1,1]) title(strcat(iteration times:,num2str(n))); 3.调用函数 x0=xlsread(i.xls,1); weight=xlsread(w.xls,1); X=zeros(12,10); for i=1:12 X(i,:)=x0(10*(i-1)+1:10*i); end subplot(1,3,1); imshow(X,[-1,1]); title(previous image); n=1; subplot(1,3,2); HPML(x0,weight,n) subplot(1,3,3); n=2; HPML(x0,weight,n) 三:

文档评论(0)

1亿VIP精品文档

相关文档