matlab遗传算法优化神经网络权值教程 - 图文

更新时间:2024-06-04 15:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第4章nnToolKit神经网络工具包

4.1 nnToolKit简介

?nnToolKit神经网络工具包是基于MATLAB神经网络工具箱自行开发的一组神经网络算法函数库

?可在MATLAB环境下均独立运行,也可打包成DLL组件,直接被VB、VC、C++ 、C#、JAVA或其他支持COM的语言所调用

?本工具包中增加了一些MATLAB中没有的神经网络算法,如模糊神经网络、小波神经网络、遗传神经网络算法等

4.2 nnToolKit函数库算法函数名LmTrainLmSimu LmTrain2LmSimu2SofmTrain功能LM神经网络训练函数(不带归一化处理)LM神经网络仿真函数(不带反归一化处理)LM神经网络训练函数(带归一化处理)LM神经网络仿真函数(带反归一化处理)自组织特征映射网络训练函数LM神经网络算法SofmSimu自组织特征映射网络SofmIntensity SofmHistSofmProcessSofmRec模糊神经网络FnnTrain FnnSimu 自组织特征映射网络仿真函数图像增强处理函数绘制直方图函数自组织特征映射网络处理函数图像识别函数模糊神经网络训练函数模糊神经网络仿真函数4.2nnToolKit函数库算法函数名Wnninit遗传算法优化小波神经网络WnnGawnnWnndemo Initnet GadecodGafitness遗传算法优化网络权值GeneratesampleGetWBbygaGabptrainSegmentGabpdemo功小波神经网络初始化函数直接用小波神经网络逼近非线性函数遗传算法优化小波神经网络后逼近非线性基于小波神经网络的1-D插值示例程序根据指定的权值阈值,获得设置好的一个神经网络将遗传算法的编码分解为BP网络所对应的权值、阈值遗传算法的适应值计算在指定路径生成适合于训练的样本用遗传算法获取神经网络权值阈值参数结合遗传算法的神经网络训练利用训练好的神经网络进行分割图像基于遗传神经网络的图像分割示例程序能Compbpandgabp传统BP和遗传BP训练示例程序4.2nnToolKit函数库

?LmTrain

?功能LM神经网络训练函数。?格式retstr = LmTrain(ModelNo,NetPara,TrainPara,InputFun,OutputFun,DataDir)。?说明函数返回网络训练次数,同时将网络训练结果(权值、阈值)及训练误差保存到文件。各参数说明如下:(1)ModelNo 输入参数,神经网络模型编号。(2)NetPara 输入参数,神经网络参数,它是一个4维数组,分别表示输入层结点数、输出层结点数、中间层结点数和训练样本组数。

4.2nnToolKit函数库

(3)TrainPara 输入参数,神经网络可选训练参数,当采用默认值时,参数设置为-1,它是8维数组,分别表示显示间隔次数,最大循环次数,目标误差,设置最小梯度,设定μ的初始值,设定μ的增加系数,设定μ的减少系数,设定μ的最大值。(4)InputFun 输入参数,输入层到中间层的传递函数,默认值为'tansig',当采用默认值时,参数指定为'-1'。(5)OutputFun 输入参数,中间层到输出层的传递函数,默认值为'purelin',当采用默认值时,参数指定为'-1'。(6)DataDir 输入参数,数据文件保存路径。4.2nnToolKit函数库

?例4-1 对ch4\\nnToolKit工具箱\\lmnet文件夹中文件(input_para1.txt和output_para1.txt)提供的专家样本数据进行网络训练。

%此为BP网络训练程序function retstr = LmTrain(ModelNo,NetPara,TrainPara,InputFun,OutputFun,DataDir)NNTWARN OFFretstr=-1;ModelNo='1';NetPara(1)=7;NetPara(2)=1;NetPara(3)=6;NetPara(4)=10;4.2nnToolKit函数库

?LmSimu

?功能LM神经网络仿真函数。?格式retstr = LmSimu(ModelNo,NetPara,SimulatePara,InputFun,OutputFun,DataDir)。?说明函数对未知的输入样本进行仿真,返回仿真结果,同时将仿真结果写入结果文件。各参数说明如下:(1)ModelNo 神经网络模型编号。(2)NetPara 神经网络参数,它是一个三维数组,分别表示输入层结点数、输出层结点数和中间层结点数。(3)SimulatePara 神经网络仿真输入参数,其维数与神经网络输入参数个数相同(4)InputFun 输入层到中间层的传递函数(5)OutputFun 中间层到输出层的传递函数4.2nnToolKit函数库

?例4-2 输入一组测试样本数据,对例4-1训练的网络模型进行仿真

%此为一仿真程序%首先读入权域值参数function retdouble = LmSimu(ModelNo,NetPara,SimulatePara,InputFun,OutputFun,DataDir)NNTWARN OFF%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%% 这部分代码主要是方便用户调试用ModelNo='1';NetPara(1)=7;4.2nnToolKit函数库

?SofmTrain

?功能自组织特征映射网络训练函数。?格式retstr = ofmTrain(ModelNo,NetPara,TrainPara,DataDir)?说明完成分类训练,并保存权值和分类后各类别下的像素矩阵,各参数说明如下:(1)ModelNo 输入参数,模型编号。(2)NetPara 输入参数,网络参数,包括输入层结点数,分类数,训练数据组数。(3)TrainPara 输入参数,网络训练参数,包括训练过程显示频率,最大训练步数,学习率。(4)DataDir 输入参数,当前应用程序路径。

4.2nnToolKit函数库

?例4-3 对ch4\\nnToolKit工具箱\\sofm文件夹中的数据文件(input_para1.txt)进行自组织特征映射网络训练,以便实现对其数据进行分类。

% 自组织特征映射模型(Self-Organizing feature Map),认为一个神经网络接受外界输入模式时,将会分为不同的区域,各区域对输入模式具有不同的响应特征,同时这一过程是自动完成的。各神经元的连接权值具有一定的分布。最邻近的神经元互相刺激,而较远的神经元则相互抑制,更远一些的则具有较弱的刺激作用。自组织特征映射法是一种无教师的聚类方法。% 此为Sofm网络训练程序function retstr =SofmTrain(ModelNo,NetPara,TrainPara,DataDir)NNTWARN OFFretstr=-1;%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%% 方便调试程序用,程序调试时去掉这部分的注释ModelNo='1';% 网络参数NetPara(1)=1; %输入层节点数4.2nnToolKit函数库

?SofmSimu

?功能自组织特征映射网络仿真函数。?格式retstr = SofmSimu(ModelNo,NetPara,SimuData,DataDir)?说明根据训练好的网络模型,对预测数据进行分类识别,各参数说明如下:(1) ModelNo 输入参数,模型编号。(2) NetPara 输入参数,网络参数,包括输入层结点数,分类数,训练数据组数。(3) SimuData 输入参数,网络仿真数据。(4) DataDir 输入参数,当前应用程序路径。4.2nnToolKit函数库?例4-4 输入一组测试样本数据,检验例4-3训练好自组织特征映射网络模型。frw=fopen(sprintf('w%s%s',ModelNo,'.dat'),'r');[w,count]=fscanf(frw,'%f',[ClassifyNum,1]);fclose(frw);m=nbgrid(ClassifyNum);a =simusm(SimuData,w,m,0);c=find(a);cd(olddir);retstr=c;close all;4.2nnToolKit函数库

?SofmIntensity

?功能图像增强处理函数。?格式retstr = SofmIntensity(ImgName,AdjustPara,DataDir)?说明图像增强处理,主要增强图像对比度,各参数说明如下:(1) ImgName 输入参数,图像文件名。(2) AdjustPara 输入参数,图像增强参数,介于(0,1)。(3) DataDir 输入参数,当前应用程序路径。?SofmHist

?功能绘制直方图函数。?格式retstr = SofmHist(ImgName,DataDir)?说明绘制图像直方图,各参数说明如下:(1) ImgName 输入参数,图像文件名。(2) DataDir 输入参数,当前应用程序路径。4.2nnToolKit函数库

?SofmProcess

?功能自组织特征映射网络分类处理函数。?格式retstr=ofmProcess(ModelNo,ClassifyNum,TrainPara,ImgName,DataDir)?说明主要用于图像分割处理,程序首先读入图像文件,并将图像灰度特征值转化为一个一维矩阵,接下来对该灰度矩阵进行竞争学习,最后根据训练结果,对矩阵中的各数据进行仿真,并将分类结果写入相应的文件。各参数说明如下:(1) ModelNo 输入参数,模型编号。(2) ClassifyNum 输入参数,分类数。(3) TrainPara 输入参数,网络训练参数,包括:训练过程显示频率,最大训练步数,学习率。(4) ImgName 输入参数,图像文件名。(5) DataDir 输入参数,当前应用程序路径。

4.2nnToolKit函数库?例4-5 对ch4\\nnToolKit工具箱\\sofm文件夹中的图像文件(image\\imgrec_0.gif) 根据灰度特征进行分割,同时将分类结果写入文件%此为Sofm网络处理程序,包含网络训练和仿真,同时将结果写入文件function retstr = SofmProcess(ModelNo,ClassifyNum,TrainPara,ImgName,DataDir)NNTWARN OFFretstr=-1;%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%% 方便调试程序用,程序调试时去掉这部分的注释ModelNo='1';ClassifyNum=7; % 分类数TrainPara(1)=50; % 训练时显示频率TrainPara(2)=10000; % 最多训练步数4.2nnToolKit函数库

?SofmRec

?功能图像还原处理函数。?格式retstr = SofmRec(ModelNo,ClassifyNum,ClassifyNo,DataDir)?说明经自组织特征映射网络分割后的图像还原处理,各参数说明如下:(1) ModelNo 输入参数,模型编号。(2) ClassifyNum 输入参数,分类数。(3) ClassifyNo 输入参数,需还原的类别。(4) DataDir 输入参数,应用程序所在工作目录。4.2nnToolKit函数库?例4-6 对经例4-5分割后的图像进行还原。[d,count]=fscanf(frd,'%f',[1,65536]);fclose(frd);e=[];for i=0:255 e=[e;d((i*256+1):(i*256+256))];endf=im2uint8(e/256);save pho2 f;figure,imshow(f);retstr=1;%close all;4.2nnToolKit函数库

?FnnTrain?功能模糊神经网络训练函数。?格式retstr = FnnTrain(dt,ld,tt,sp)。?说明对指定的样本数据进行训练,同时将训练结果写入权值文件,各参数说明如下:(1) dt 输入参数,学习阈值。(2) ld 输入参数,学习进度。(3) tt 输入参数,训练次数。(4) sp 输入参数,样本数据文件。4.2nnToolKit函数库?例4-7 对ch4\\nnToolKit工具箱\\fnn文件夹中文件(data\\sample.txt)提供的专家样本数据进行模糊神经网络训练。 global recordDimention; global sampleNumber; global weightNumber; global distanceThread; global WW; global learningDegree; global epochsNumber; distanceThread=dt; learningDegree=ld; traintimes=tt; A=load(sp);

4.2nnToolKit函数库

?FnnSimu?功能模糊神经网络仿真函数。?格式retstr = FnnSimu(kd,sj,td)。?说明调用训练好的模糊神经网络模型,对输入样本进行仿真,各参数说明如下:(1) kd 输入参数,学习阈值。(2) sj 输入参数,学习进度。(3) td 输入参数,仿真输入数据。4.2nnToolKit函数库?例4-8 输入一组测试样本数据,对例4-7训练的网络模型进行仿真。function retstr = FnnSimu(kd,sj,td)%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%% kd=4; sj=0.05; td=[37,26,15,3,0.16,1];%%%% 输入参数赋值结束 %%%%%%%%%%%%%%%%%%%%%%%% kuand=kd; sjsd=sj;% 加载训练好的权值文件 WW=load('data\\w.dat'); [row,col]=size(WW); mu=zeros(1,row); b0=WW(:,col-1);% %%%%%根据模糊规则计算预测结果 4.2nnToolKit函数库

?Initnet

?功能遗传神经网络初始化函数。?格式[net] = Initnet(W1, B1, W2, B2,paraments)。?说明根据指定的权值阈值,获得设置好的一个神经网络,参数说明如下:(1) W1 输入参数,输入层到隐含层权值。(2) B1 输入参数,输入层到隐含层阈值。(3) W2 输入参数,隐含层到输出层权值。(4) B2 输入参数,隐含层到输出层阈值。(5) paraments 输入参数,神经网络参数信息:[最大迭代次数最小误差]。4.2nnToolKit函数库

?Gadecod

?功能遗传算法编码分解函数。?格式[W1, B1, W2, B2, P, T, A1, A2, SE, val]=Gadecod(x)。?说明将遗传算法的编码分解为BP网络所对应的权值、阈值,参数说明如下:(1) x 输入参数,一个染色体。(2) W1 输出参数,输入层到隐含层权值。(3) B1 输出参数,输入层到隐含层阈值。(4) W2 输出参数,隐含层到输出层权值。(5) B2 输出参数,隐含层到输出层阈值。(6) P 输出参数,训练样本。(7) T 输出参数,样本输出值。(8) A1 输出参数,输入层到隐含层误差。(9) A2 输出参数,隐含层到输出层误差。(10) SE 输出参数,误差平方和。(11) val 输出参数,遗传算法的适应值。4.2nnToolKit函数库

?Gafitness

?功能遗传算法的适应值计算函数。?格式f = Gafitness(y)。?说明通过染色体个体计算染色体适应度,参数说明如下:(1) y 输入参数,染色体个体。(2) f 输出参数,染色体适应度。?Generatesample

?功能训练样本生成函数。?格式[ ] = Generatesample(path)。?说明在指定路径生成适合于训练的样本,参数说明如下:path 输入参数,指定路径,用于保存样本文件。?GetWBbyga

?功能获取遗传神经网络权值阈值参数函数。?格式[ W1, B1, W2, B2 ] = GetWBbyga(paraments)。?说明用遗传算法获取神经网络权值阈值参数,参数说明如下:paraments 输入参数,遗传算法的参数信息:[遗传代数最小适应值]。

4.2nnToolKit函数库

?Segment

?功能图像分割函数。?格式[bw] = Segment(net,img)。?说明利用训练好的神经网络进行分割图像,参数说明如下:(1) net 输入参数,已经训练好的神经网络。(2) img 输入参数,要分割的图像。(3) bw 输出参数,分割后的二值图像。?Gabptrain

?功能结合遗传算法的神经网络训练函数。?格式[net] = Gabptrain(gaP,bpP,P,T)。?说明程序运行前需将ch3\\遗传算法工具箱加入到MATLAB的搜索路径中(方法:File?Set Path,增加目录到MATLAB的搜索路径,然后保存),函数参数说明如下:(1) gaP 输入参数,遗传算法的参数信息:[遗传代数最小适应值]。(2) bpP 输入参数,神经网络参数信息:[最大迭代次数最小误差]。(3) P 输入参数,样本数组。(4) T 输入参数,目标数组。(5) net 输出参数,训练好的网络结构。4.2nnToolKit函数库?例4-9 对ch4\\nnToolKit工具箱\\gabp文件夹中文件(data\\sample.mat)提供的样本数据,用结合遗传算法的神经网络进行训练。% 结合遗传算法的神经网络训练function [ net ] = gabptrain( gaP,bpP,P,T )%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%% 方便调试程序用,程序调试时去掉这部分的注释gaP = [100 0.00001]; % gaP 为遗传算法的参数信息.[遗传代数 最小适应值]。bpP = [500 0.00001]; % bpP 为神经网络参数信息。[最大迭代次数 最小误差]generatesample('data\\sample.mat'); % 产生样本数组P和目标数组T%%%% 输入参数赋值结束 %%%%%%%%%%%%%%%%%%%%%%%%[W1, B1, W2, B2] = getWBbyga(gaP);net = initnet(W1, B1, W2, B2,bpP);net = train(net,P,T);4.2nnToolKit函数库

?Compbpandgabp

?功能传统BP和遗传BP训练示例程序。?格式retstr = Compbpandgabp()。?说明对于指定的样本数据,分别用传统BP算法和遗传BP算法进行训练,相比之下,用传统BP训练,可能收敛不到目标值,或者收敛步数太长,而用遗传BP算法进行训练,遗传算法寻找最优权值阈值会用一些时间,但比BP的训练还是快,在很短的时间内就能收敛到目标值。程序运行前需将ch3\\遗传算法工具箱加入到MATLAB的搜索路径中(方法:File?Set Path,增加目录到MATLAB的搜索路径,然后保存)。4.2nnToolKit函数库?例4-10 对ch4\\nnToolKit工具箱\\gabp文件夹中文件(data\\sample.mat)提供的样本数据,比较用传统BP算法进行网络训练和用结合遗传算法的神经网络进行训练的结果。% 此为传统BP训练和遗传BP训练程序function retstr = compbpandgabp()NNTWARN OFFretstr=-1;% 传统BP训练% 出现的结果,可能收敛不到目标值,或者收敛步数太长(356步)epochs = 2000;goal = 0.00001 ;net = newcf([0 255],[6 1],{'tansig' 'purelin'});net.trainParam.epochs = epochs;net.trainParam.goal = goal ;load('data\\sample.mat');4.2nnToolKit函数库

?.Gabpdemo

?功能基于遗传神经网络的图像分割示例程序。?格式retstr = Gabpdemo()。?说明演示对特定类型的一类图像进行分割。在分割之前要做好二项工作,一是提取前景和背景的特征值,二是用提取好的特征值进行遗传神经网络训练。?20.Wnninit

?功能小波神经网络初始化。?格式[P,T,R,S1,S2,S ,Q]=Wnninit()。?说明初始化小波神经网络,返回网络的训练样本,输入、输出数及隐含神经元数等。?21.Gawnn

?功能遗传算法优化小波神经网络后逼近非线性(内部调用遗传算法的初始化、适应度、解码函数)。?格式retstr = Gawnn()。?说明程序运行前需将ch3\\小波网络工具箱及遗传算法工具箱加入到MATLAB的搜索路径中(方法:File?Set Path,增加目录到MATLAB的搜索路径,然后保存)。

4.2nnToolKit函数库?例4-11 演示遗传算法优化小波神经网络后逼近非线性。 b(1,j,n)=b(1,j,n-1)+bincrease(1,j); endend%网络误差曲线tocplot(MSE(4:N+2)/Q); title('遗传算法优化后的误差')figure(3)plot(T,'r')hold on plot(y,'g*');title('遗传算法优化后Wnn的输出')4.2nnToolKit函数库

?Wnndemo?功能基于小波神经网络的1-D插值示例程序。?格式retstr = Wnndemo ()。?说明程序运行前需将ch3\\小波网络工具箱及遗传算法工具箱加入到MATLAB的搜索路径中(方法:File?Set Path,增加目录到MATLAB的搜索路径,然后保存)。4.2nnToolKit函数库?基于小波神经网络的1-D插值示例程序function retstr = wnndemo()NNTWARN OFFretstr=-1;% 训练数据% 输入x = (-1:.05:1)';% 输出y = (-2.186 * x - 1.2864) .* (x < -0.2) ... + 4.246 * x .* ((x >= -0.2) & (x < 0)) ...4.3 应用举例

?4.3.1 基于LM神经网络的房地产开发风险预测模型?1.案例描述

?房地产开发存在风险,其影响因素(输入)主要包括:1)通货膨胀风险:可分为升高、不变、降低。2)市场低供求风险,可分为供大求、平衡、供小求。3)周期风险,可分为第一阶段、第二阶段、第三阶段、第四阶段。4)利率风险,可分为提高、不变、降低。5)政策风险,可分为有利、无新政策、不利开发。6)区位风险,可分为升值、不变、降值。7)开发期风险,可分为较长、正常、缩短。开发风险(输出)可分为5类:无风险、风险较低、一般风险、风险较高、风险很高,为了能对开发风险进行有效地评估和预测,在此拟建立神经网络预测模型,实现对房地产开发风险的预测。4.3.1 基于LM神经网络的房地产开发风险预测模型?数据结点类别结点名称通货膨胀风险结点描述升高不变降低转换0.80.50.2供大于求市场低供求风险输入平衡供小于求第一阶段第二阶段第三阶段第四阶段提高利率风险不变0.30.60.80.10.30.60.80.20.5周期风险降低0.9

本文来源:https://www.bwwdw.com/article/jam6.html

Top