BP神经网络的设计思路,流程(文字如何叙述呢)
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
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。