BP网络有很强的映射能力,主要用于模式识别和函数逼近。可以采用BP网络函数逼近的能力来求解数学式难以表达的函数。下面是一个三层BP网络,看它如何逼近一个正旋函数的。
在matlab中采用tansig函数和purelin函数,BP网络未训练时(初始化的网络),输出曲线与正旋曲线相差很大,没有逼近功能。因为newff函数建立网络时,权值和阀值都是随即初始化的。网络输出结果很差。达不到逼近目的。
k=1;
p=[-1:.05:1];
t=sin(k*pi*p);
n=10;
net=newff(minmax(p),[n,1],{'tansig' 'purelin'},'trainlm');
y1=sim(net,p);
plot(p,t,'-',p,y1,'--');
xlabel('时间');
ylabel('函数值');
title('未训练的BP网络逼近效果');
legend('要逼近的正旋函数曲线','未训练的BP网络逼近曲线');