⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 g10.m

📁 bp神经网络程序
💻 M
字号:
% ***带有偏差单元的递归神经网络演示程序***
%该网络输入层有5个神经元对应5个测试点,输出层有5个神经元,隐层有10个神经元
%标准输入输出数据
p=[1 1 1 1 1
   0 1 0 0 0
   1 0 0 0 0
   1 1 0 0 0
   1 1 1 0 0
   1 1 1 1 0];
t=[0 0 0 0 0
   1 0 0 0 0
   0 1 0 0 0
   0 0 1 0 0
   0 0 0 1 0
   0 0 0 0 1];
%给权值赋初值
w1=eye(5,10);
w2=eye(10,5);
wr=eye(10,10)/3;
wobias=eye(6,5)/4;
wbias=eye(6,10)/6;
x=ones(6,10)/3;
ww2=zeros(10,5)/6;
ww1=zeros(5,10)/6;
wwr=zeros(10,10)/6;
wwobias=zeros(6,5)/5;
wwbias=zeros(6,10)/4;
g=[1 1 1 1 1];
f=[1 1 1 1 1 1 1 1 1 1];
mmax=0.2;
mmmax=0.1;
%要求的偏差值
h=0.04;
u=0.04;
%输出层权值的学习速度
a=1.5;  
%隐含层的学习速度
b=1.18;
%递归层权值的的学习速度
v=1.5;
%输出 bias unit 的学习速度
r=3000;
%输入 bias unit 的学习速度
w=10;
%学习的步数
n=0;
mm=0;
while mmax>0.01
   %10个隐含层单元的输入输出
   s=p*w1+x*wr+h*wbias;
   x=exp(-s.^2./2);
   %五个输出层单元的输入输出
   y=x*w2+u*wobias;
   c=exp(-y.^2./2);
   %希望的输出与实际的输出的偏差
   j=t-c;
   dj=max(abs(j));
   mmax=max(dj');
   if mmax>0.04
      for k=1:6
         %输出层单元的一般化误差
         d=-j.*y.*exp(-y.^2./2);
         %隐含层单元的一般化误差
         e=-d*w2'.*s.*exp(-s.^2./2);
         ww2=ww2+a*(f'*d(k,:)).*(g'*x(k,:))';
         wwobias=wwobias+r*d*h;
         ww1=ww1+b*(f'*p(k,:))'.*(g'*e(k,:));
         wwr=wwr+v*(f'*x(k,:))'.*(f'*e(k,:));
         wwbias=wwbias+w*e*u;
           end
           ww2=ww2./6;
           ww1=ww1./6;
           wwr=wwr./6;
           wwobias=wwobias./6;
           wwbias=wwbias./6;
           w2=w2+ww2;
           w1=w1+ww1;
           wr=wr+wwr;
           wobias=wobias+wwobias;
           wbias=wbias+wwbias;
           end
     mm=mm+1;
     n=n+1;
     nn(mm)=n;
     ee(n)=mmax;
     ww2=zeros(10,5)/6;
     ww1=zeros(5,10)/6;
     wwr=zeros(10,10)/6;
     wwobias=zeros(6,5)/5;
     wwbias=zeros(6,10)/4;
  end
  %找出所有实际输出与希望输出的最大误差
  %所有模式训练后的满足要求的实际输出
  c
  x=1:1:n
  plot(x,ee)
  %xlabel('训练步数’)
  %ylabel('最大误差’)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -