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

📄 bp.m

📁 人工神经网络的bp算法及其实现方法(matlab)
💻 M
字号:
clc
clear
x=[1 1 1 0 1 1 1 0;
   1 1 1 1 0 0 1 1;
   1 1 1 0 0 0 0 0;
   1 1 0 0 0 1 1 1];    %X为输入样本
d=[1 1 1 0 0 1 0 1];     %d为期望输出
[n,P]=size(x);
[S,l]=size(d);
q=0;p=1;        %q为训练次数
m=4;h=0.9;e=1e-10;Erme0=100;Erme=10;dw=zeros(m,l);dv=zeros(n,m);
v=rands(n,m);
w=rands(m,l);
while Erme0>=e & q<10000
        q=q+1;
        for p=1:P       
            for j=1:m
                netj(j)=-1;
                for j1=1:n
                    netj(j)=netj(j)+v(j1,j)*x(j1,p);
                end
                y(j)=1/(1+exp(-netj(j)));
            end
            for k=1:l
                netk(k)=-1;
                for j1=1:m
                    netk(k)=netk(k)+w(j1,k)*netj(j1);
                end
                o(k)=1/(1+exp(-netk(k)));
            end
            E(p)=0;
            for k=1:l
                E(p)=E(p)+(d(k)-o(k))^2;
                do(k)=(d(k)-o(k))*(1-o(k))*o(k);
            end
            E(p)=sqrt(E(p));            
            for j=1:m
                dy(j)=0;
                for k=1:l
                    dy(j)=dy(j)+do(k)*w(j,k);
                end
                dy(j)=dy(j)*(1-y(j))*y(j);
            end
            for j=1:m
                for k=1:l
                    w(j,k)=w(j,k)+h*do(k)*y(j);
                end
            end
            for i=1:n
                for j=1:m
                    v(i,j)=v(i,j)+h*dy(j)*x(i,p);
                end
            end    
        end
        Erme1=Erme;Erme=0;
for p=1:P
    Erme=Erme+E(p)^2;
end
Erme=sqrt(Erme/P);
Erme0=abs(Erme-Erme1);
end
disp(['期望输出:',num2str(d)])
disp(['实际输出:',num2str(o)])
disp(['输出误差:',num2str(E(p))])
disp(['训练次数:',num2str(q)])
disp('权值W:')
disp(num2str(w))
disp('权值V:')
disp(num2str(v'))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -