bp.m

来自「自编的神经网络的matlab程序」· M 代码 · 共 53 行

M
53
字号
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 + =
减小字号Ctrl + -
显示快捷键?