📄 bp.m
字号:
X=[0.5152 0.8173 1; 0.8173 1 0.7308]
Y=[0.73 0.139; 0.1 0.3]
eta=0.3;
Net=NewNet(3,[3 4 2],'Sigmoid');
Net=NetValue(Net,X);
Net{end}{1}.Out
Net{end}{2}.Out
n=0;
Er=0;
while(1)
Net=NetValue(Net,X);
temp=0;
for j=1:length(Net{end})
temp=temp+sum((Y(:,j)-Net{end}{j}.Out).^2);
end
if temp<0.0001,break;end
n=n+1;
Er(n)=temp;
for j=1:length(Net{end})
Net{end}{j}.Delta=(Y(:,j)-Net{end}{j}.Out).*Net{end}{j}.Out.*(1-Net{end}{j}.Out);
end
for i=length(Net)-1:-1:1
for j=1:length(Net{i})
temp=0;
for k=1:length(Net{i+1})
temp=temp+Net{i+1}{k}.Weight(j).*Net{i+1}{k}.Delta;
end
Net{i}{j}.Delta=temp.*Net{i}{j}.Out.*(1-Net{i}{j}.Out);
end
end
for i=length(Net):-1:2
for j=1:length(Net{i})
for k=1:length(Net{i-1})
Net{i}{j}.Weight(k)=Net{i}{j}.Weight(k)+sum(eta.*Net{i}{j}.Delta.*Net{i-1}{k}.Out);
end
end
end
for j=1:length(Net{1})
for k=1:3
Net{1}{j}.Weight(k)=Net{1}{j}.Weight(k)+sum(eta.*Net{1}{j}.Delta.*X(:,k));
end
end
end
Net=NetValue(Net,X);
Net{end}{1}.Out
Net{end}{2}.Out
n
plot(Er);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -