有运行结果
BP算法
%BP神经网络学习,确定各层的个数
clear
clc
close all
xxsulv=0.05;qiwangwucha=0.001; % xxsulv为学习速率;qiwangwucha为期望误差最小值
xlcishu=10000; a=0.9; %xlcishu为最大训练次数;a为惯性系数
Oi=0;Ok=0;
X=[1;-1;-1];T=[1;1]; %提供两组训练集和目标值(3个输入2个输出)
[M,N]=size(X);q=8;[L,N]=size(T); %N为训练集对数量 size 获取数值的行数和列数M=3,
wij=rand(q,M);wki=rand(L,q);
wij0=zeros(size(wij));wki0=zeros(size(wki));
for traincount=1:xlcishu
NETi=wij*X;
for j=1:N
for i=1:q
Oi(i,j)=2/(1+exp(-NETi(i,j)))-1;
end
end
%计算输出层各神经单元的输出
NETk=wki*Oi;
for i=1:N
for k=1
Ok(k,i)=2/(1+exp(-NETk(k,i)))-1;
end
end
E=((T-Ok)'*(T-Ok))/2;
if (E w=wki; wki=wki+xxsulv*deltak*Oi'+a*(wki-wki0); wki0=w; deltai=Oi.*(1-Oi).*(deltak'*wki)'; w=wij; wij=wij+xxsulv*deltai*X'+a*(wij-wij0); wij0=w; end traincount X1=X; %计算隐含层各神经单元输出 NETi=wij*X1; for j=1:N for i=1:q Oi(i,j)=2/(1+exp(-NETi(i,j)))-1; end end %计算输出层各神经元输出 NETk=wki*Oi; for i=1:N for k=1 shuchu(k,i)=2/(1+exp(-NETk(k,i)))-1; end end shuchu 运行结果:下载本文