BP网络算法:(方子亭)
算法的执行步骤如下:
对各层的权系数置一个较小的非零随机数,但其中
对于第k层的第j个神经元的输出,有:
utNums); %w初始化随机归一矩阵; w表隐层到输出层的权值
deltw=zeros(HideNums,OutputNums); %内存空间预分配
Samplelist=ones(SampleNum,OutputNums)+rand(SampleNum,InputNums)
Expectlist=ones(SampleNum,OutputNums)
Count=1;
while (Count<=MaxCount) %结束条件1迭代MaxCount次
c=1;
while (c<=SampleNum)
for k=1:OutputNums
d(k)=Expectlist(c,k); %获得期望输出的向量,d(1:3)表示一个期望向量内 的值
end
for i=1:InputNums
x(i)=Samplelist(c,i); %获得输入的向量(数据),x(1:3)表一个训练向量
end
%计算各层误差
for j=1:HideNums
net=;
for i=1:InputNums
net=net+x(i)*v(i,j); %输入层到隐层的加权和∑X(i)V(i)
end
y(j)=1/(1+exp(-net)); %输出层处理f(x)=1/(1+exp(-x))单极性sigmiod函数
end
for k=1:OutputNums
net=;
for j=1:HideNums
net=net+y(j)*w(j,k);
end
o(k)=1/(1+exp(-net));
end
Errortmp=;
for k=1:OutputNums
Errortmp=Errortmp+(d(k)-o(k))^2; %第一组训练后的误差计算
end
Errorp(c)=*Errortmp; %误差E=∑(d(k)-o(k))^2 * 1/2
for k=1:OutputNums
yitao(k)=(d(k)-o(k))*o(k)*(1-o(k)); %输入层误差偏导
end
for j=1:HideNums
tem=;
for k=1:OutputNums
tem=tem+yitao(k)*w(j,k); %为了求隐层偏导,而计算的∑
end
yitay(j)=tem*y(j)*(1-y(j)); %隐层偏导
end
%调整各层权值
for j=1:HideNums
for k=1:OutputNums
d
bp网络算法. 来自淘豆网m.daumloan.com转载请标明出处.