下面来介绍一下MATLAB中的小波神经网络算法的实现过程:
1、用Mexihat函数作为样本输入和输出;
2、数据采用逐个处理,三层网络拓扑结构;
3、赋予网络学习速率和动量因子初始值;
4、初始化输出层和隐层的连接权wjh和隐层和输出层的连接权;
5、初始化小波参数、初始化权系数、阈值初始化;
6、求解小波网络运用BP算法,各参数每次学习的调整量;
7、引入动量因子aerfa,加快收敛速度和阻碍陷入局部极小值;
8、保存每次的误差;
下面是具体的实现方法:
首先在MATLAB的主界面编辑器中写入下列代码:
function main()
clc;clear all;close all;
%用Mexihat函数作为样本输入和输出
x=0:0.03:3; %样本输入值
c=2/(sqrt(3).*pi.^(1/4));
d=1/sqrt(2);
u=x/2-1;
targ=d.*c.*exp(-u.^2/2).*(1-u.^2); % 目标函数的样本输出值
eta=0.02;aerfa=0.735; %赋予网络学习速率和动量因子初始值
%初始化输出层和隐层的连接权wjh和隐层和输出层的连接权.
%假设小波函数节点数为H,样本数为P,输出节点数为J,输入节点数为I.
H=15;P=2;I=length(x);J=length(targ);
b=rand(H,1);a=rand(H,1); %初始化小波参数
whi=rand(I,H);wjh=rand(H,J); %初始化权系数;
b1=rand(H,1);b2=rand(J,1);%阈值初始化;
p=0;
Err_NetOut=[];%保存的误差