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

📄 backpropagation.m

📁 內涵模糊理論與類神經網路的程式碼...提供初學者做研究參考
💻 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 + -