📄 bp.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 + -