双层BP神经网络实现异或功能

BP神经网络的设计思路,流程(文字如何叙述呢)

img


clear all;clc;
x1=[0;0];x2=[0;1];x3=[1;0];x4=[1;1];
X=[x1,x2,x3,x4];%输入样本

d1=0;d2=1;d3=1;d4=0;
D=[d1,d2,d3,d4];%期望输出

Y=zeros(1,4);%输出初始

while (max(abs(D-round(Y))))>0
    W=randn(2);T=randn(1,2);
    dW=ones(2);dT=ones(1,2);%权值修正量初始
    
    Theta=randn(2,1);R=randn(1);
    dTheta=ones(2,1);dR=ones(1);%阈值修正量初始
    
    k=0;%循环计数初始
    
    while (max(abs(D-Y))>=1e-7)&&((max(max(abs(dW)))>=1e-7)||(max(abs(dT))>=1e-7)||(max(abs(dTheta))>=1e-7)||(abs(dR)>=1e-7))&&(k<1e+7)

        Sh=W*X;%计算隐含层加权和
        Yh=1./(1+exp(Theta-Sh));%使用Logistic激活函数
        dYh=Yh.*(1-Yh);%隐含层激活函数导数
    
        S=T*Yh;%计算输出层加权和
        Y=1./(1+exp(R-S));
        dY=Y.*(1-Y);%输出层激活函数导数
    
        Delta=(D-Y).*dY;%计算输出层广义误差
        dT=Delta*Yh';%计算T修正量
    
        Deltah=(T'*Delta).*dYh;%计算隐含层广义误差
        dW=Deltah*X';%计算W修正量
    
        dTheta=-(sum(Deltah'))';
        dR=-sum(Delta);
    
        W=W+dW;T=T+dT;%梯度下降法迭代
        Theta=Theta+dTheta;R=R+dR;
    
        k=k+1;
    end
end
W%查看训练结果
T
Theta
R

Y%验证输出

disp('max(abs(D-Y))=');%查看循环终止条件
disp(max(abs(D-Y)));
dW
dT
dTheta
dR

k

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。