📄 backpropagation.m
字号:
% ==========================================================
%
% Neural Networks A Classroom Approach
% Satish Kumar
% Copyright Tata McGraw Hill, 2004
%
% MATLAB code that implements the generalized delta rule
% Reference: Table 6.7;Page 184
%
% ==========================================================
% BACKPROPAGATION ALGORITHM: ONLY FOR SINGLE HIDDEN LAYER
pattern=[0.1 0.1 0.1
0.1 .95 .95
.95 0.1 .95
.95 .95 0.1];
eta = 1.0; % Learning rate
alpha = 0.7; % Momentum
tol = 0.001; % Error tolerance
Q = 4; % Total no. of the patterns to be input
n = 2; q = 2; p = 1; % Architecture
Wih = 2 * rand(n+1,q) - 1; % Input-hidden weight matrix
Whj = 2 * rand(q+1,p) - 1; % Hidden-output weight matrix
DeltaWih = zeros(n+1,q); % Weight change matrices
DeltaWhj = zeros(q+1,p);
DeltaWihOld = zeros(n+1,q);
DeltaWhjOld = zeros(q+1,p);
Si = [ones(Q,1) pattern(:,1:2)]; % Input signals
D = pattern(:,3); % Desired values
Sh = [1 zeros(1,q)]; % Hidden neuron signals
Sy = zeros(1,p); % Output neuron signals
deltaO = zeros(1,p); % Error-slope product at output
deltaH = zeros(1,q+1); % Error-slope product at hidden
sumerror = 2*tol; % To get in to the loop
while (sumerror > tol) % Iterate
sumerror = 0;
for k = 1:Q
Zh = Si(k,:) * Wih; % Hidden activations
Sh = [1 1./(1 + exp(-Zh))]; % Hidden signals
Yj = Sh * Whj; % Output activations
Sy = 1./(1 + exp(-Yj)); % Output signals
Ek = D(k) - Sy; % Error vector
deltaO = Ek .* Sy .* (1 - Sy);% Delta output
for h = 1:q+1
DeltaWhj(h,:) = deltaO * Sh(h);% Delta W: hidden-output
end
for h = 2:q+1 % Delta hidden
deltaH(h) = (deltaO * Whj(h,:)') * Sh(h) * (1 - Sh(h));
end
for i = 1:n+1 % Delta W: input-hidden
DeltaWih(i,:) = deltaH(2:q+1) * Si(k,i);
end
Wih = Wih + eta * DeltaWih + alpha * DeltaWihOld;
Whj = Whj + eta * DeltaWhj + alpha * DeltaWhjOld;
DeltaWihOld = DeltaWih; % Store changes
DeltaWhjOld = DeltaWhj;
sumerror = sumerror + sum(Ek.^2); % Compute error
end
sumerror % Print epoch error
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -