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

📄 bp.m

📁 基于MATLAB的神经网络标准BP程序。
💻 M
字号:
%X为输入样本,T为目标向量
clc,clear,tic
x=rands(8,8);
d=rand(1,8);
[n,P]=size(x) ;  %R=2;Q=8为X阵的维数;
[S,l]=size(d)  ; %S=1;Q=8为T阵的维数;
q=0;p=1;
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<5000
        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'))
toc

⌨️ 快捷键说明

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