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

📄 bp.m

📁 神经网络的BP算法matlab程序
💻 M
字号:
clear all;
close all;

N = 4;
alpha = 0.5;
eta = 0.9;
in_dim = 4;
minErr = 1.0e-2;
cycle_num = 1;

in_matrix = [ 0 0 0 0 -1 0.1;...
      0 0 0 1 -1 0.9;...
      0 0 1 0 -1 0.9;...
      0 0 1 1 -1 0.1;...
      0 1 0 0 -1 0.9;...
      0 1 0 1 -1 0.1;...
      0 1 1 0 -1 0.1;...
      0 1 1 1 -1 0.9;...
      1 0 0 0 -1 0.9;...
      1 0 0 1 -1 0.1;...
      1 0 1 0 -1 0.1;...
      1 0 1 1 -1 0.9;...
      1 1 0 0 -1 0.1;...
      1 1 0 1 -1 0.9;...
      1 1 1 0 -1 0.9;...
      1 1 1 1 -1 0.1];
w_1 = rand(in_dim+1, N);
w_2 = rand(N+1, 1);
dd_1 = zeros(in_dim+1, N);
dd_2 = zeros(N+1, 1);
epsilon2 = 1;
num = 0;

while epsilon2>minErr
   num = num+1;
   if mod(num,1000)==0
       num
   end
   epsilon2 = 0;
   for cycle_num=1:16
   	    in_x = in_matrix(cycle_num, 1:5);
		d_chf = in_matrix(cycle_num, 6);
		out_1 = 1./(1+exp(-1*in_x*w_1));
		out_1s = [out_1 -1];
		chf = 1/(1+exp(-1*out_1s*w_2));

		epsilon = d_chf-chf;
		delta2 = 2*epsilon*chf*(1-chf);
		w_2 = w_2+alpha*delta2.*out_1s'+eta*dd_2;
		w_2s = w_2(1:N);
		delta1 = delta2*w_2s'.*out_1.*(1-out_1);
   	    w_1 = w_1+alpha*in_x'*delta1+eta*dd_1;
   	    dd_2 = alpha*delta2.*out_1s'+eta*dd_2;
        dd_1 = alpha*in_x'*delta1+eta*dd_1;
        epsilon2 = epsilon2+epsilon^2;
   end
   epsilon2 = sqrt(epsilon2)/16;
end

yy = zeros(1,16);
for k=1:16
   in_x = in_matrix(k, 1:5);
   o_1 = 1./(1+exp(-in_x*w_1));
   oo_1 = [o_1 -1];
   yy(k) = 1/(1+exp(-oo_1*w_2));
end
num
yy

⌨️ 快捷键说明

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