📄 backpropagation.m
字号:
% -------------------------
% Padr鮡s de Entrada
% -------------------------
u=[0 0;
0 1;
1 0;
1 1]';
yd=[0 1 1 0];
ub=[ones(1,max(size(u))); u]; % Inclus鉶 do 'bias'
Np=max(size(u(1,:))); % N鷐ero de padr鮡s
if max(size(u(1,:)))~=max(size(yd(1,:))),
error('Erro nos padr鮡s de entrada!');
end
% -------------------------
% Estrutura da Rede
% -------------------------
Ne=3; % N鷐ero de neur鬾ios na camada escondida
Nh=Ne+1; % Inclus鉶 do 'bias'
Nu=max(size(u(:,1)))+1; % N鷐ero de neur鬾ios na camada de entrada + 'bias'
Ny=max(size(yd(:,1))); % N鷐ero de neur鬾ios na camada de sa韉a
% -------------------------
% Inicializa玢o dos Pesos
% -------------------------
uh=rand(Nh,Nu); % uh = Pesos Entrada -> Camada Escondida
hy=rand(Ny,Nh); % hy = Pesos Camada Escondida -> Sa韉a
% -------------------------
% Algoritmo de Treinamento
% -------------------------
n=1; % Taxa de Aprendizado
Nep=200; % N鷐ero de 蓀ocas
for k=1:Nep,
for i=1:Np,
auxh=uh*ub(:,i);
auxh(1,:)=1; % Ativa o 'bias' da camada escondida
h=1./(1+exp(-auxh)); % Fun玢o de ativa玢o da camada escondida --> Sigm骾de
auxy=hy*h;
y=auxy; % Fun玢o de ativa玢o da camada de sa韉a --> Linear
e=yd(:,i)-y; % Erro
E(:,i)=0.5*e.^2; % Erro M閐io Quadr醫ico
deltahy=e*1; % deltahy = (yd-y)*f'(net_hy)
for p=1:Ny, % C醠culo da varia玢o dos Pesos Camada Escondida -> Sa韉a
for q=1:Nh,
deltaWhy(p,q)=n*deltahy(p,:)*h(q,:);
end
end
aux2=h.*(1-h); % f'(net_uh)
aux3=(deltahy'*hy)';
deltauh=aux2.*aux3; % C醠culo de deltauh
for p=1:Nh, % C醠culo da varia玢o dos Pesos Entrada -> Camada Escondida
for q=1:Nu,
deltaWuh(p,q)=n*deltauh(p,:)*ub(q,i);
end
end
hy=hy+deltaWhy; % Atualiza玢o dos Pesos Camada Escondida -> Sa韉a
uh=uh+deltaWuh; % Atualiza玢o dos Pesos Entrada -> Camada Escondida
end
err(k,:)=mean(E',1); % M閐ia do erro quadr醫ico por 閜oca de treinamento
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -