matlab遗传算法优化神经网络权值教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章nnToolKit神经网络工具包
4.1 nnToolKit简介
☐nnToolKit神经网络工具包是基于MATLAB神经网络工具箱自行开发的一组神经网络算法函数库
☐可在MATLAB环境下均独立运行,也可打包成DLL组件,直接被VB、V C、C++ 、C#、JAVA或其他支持COM的语言所调用
☐本工具包中增加了一些MATLAB中没有的神经网络算法,如模糊神经网络、小波神经网络、遗传神经网络算法等
4.2 nnToolKit函数库算法函数名功能
LM神经网络算法LmTrain LM神经网络训练函数(不带归一化处理)LmSimu LM神经网络仿真函数(不带反归一化处理)LmTrain2LM神经网络训练函数(带归一化处理)LmSimu2LM神经网络仿真函数(带反归一化处理)
自组织特征映射网络SofmTrain自组织特征映射网络训练函数SofmSimu自组织特征映射网络仿真函数SofmIntensity 图像增强处理函数
SofmHist绘制直方图函数SofmProcess自组织特征映射网络处理函数SofmRec图像识别函数
模糊神经网络FnnTrain 模糊神经网络训练函数FnnSimu 模糊神经网络仿真函数
4.2nnToolKit函数库算法函数名功能
遗传算法优化小波神
经网络Wnninit小波神经网络初始化函数
Wnn直接用小波神经网络逼近非线性函数Gawnn遗传算法优化小波神经网络后逼近非线性Wnndemo 基于小波神经网络的1-D插值示例程序
遗传算法优化网络权
值Initnet 根据指定的权值阈值,获得设置好的一个神经网络Gadecod将遗传算法的编码分解为BP网络所对应的权值、阈值Gafitness遗传算法的适应值计算
Generatesample在指定路径生成适合于训练的样本
GetWBbyga用遗传算法获取神经网络权值阈值参数
Gabptrain结合遗传算法的神经网络训练
Segment利用训练好的神经网络进行分割图像Compbpandgabp传统BP和遗传BP训练示例程序
Gabpdemo基于遗传神经网络的图像分割示例程序
☐LmTrain
功能LM神经网络训练函数。
格式retstr =
LmTrain(ModelNo,NetPara,TrainPara,InputFun,Outpu
tFun,DataDir)。
说明函数返回网络训练次数,同时将网络训练结果
(权值、阈值)及训练误差保存到文件。
各参数说明如下:(1)ModelNo 输入参数,神经网络模型编号。
(2)NetPara 输入参数,神经网络参数,它是一个4维数组,
分别表示输入层结点数、输出层结点数、中间层结点数和训
练样本组数。
(3)TrainPara 输入参数,神经网络可选训练参数,当采用默认值时,参数设置为-1,它是8维数组,分别表示显示间隔次数,最大循环次数,目标误差,设置最小梯度,设定μ的初始值,设定μ的增加系数,设定μ的减少系数,设定μ的最大值。
(4)InputFun 输入参数,输入层到中间层的传递函数,默认值为'tansig',当采用默认值时,参数指定为'-1'。
(5)OutputFun 输入参数,中间层到输出层的传递函数,默认值为'purelin',当采用默认值时,参数指定为'-1'。
(6)DataDir 输入参数,数据文件保存路径。
例4-1 对ch4\nnToolKit工具箱\lmnet文件夹中文件(input_para1.txt和output_para1.txt)提供的专家样本数据进行网络训练。
%此为BP网络训练程序
function retstr =
LmTrain(ModelNo,NetPara,TrainPara,InputFun,Output Fun,DataDir)
NNTWARN OFF
retstr=-1;
ModelNo='1';
NetPara(1)=7;
NetPara(2)=1;
NetPara(3)=6;
NetPara(4)=10;
☐LmSimu
功能LM神经网络仿真函数。
格式retstr =
LmSimu(ModelNo,NetPara,SimulatePara,InputFun,Outp
utFun,DataDir)。
说明函数对未知的输入样本进行仿真,返回仿真结果,同时将仿真结果写入结果文件。
各参数说明如下:
(1)ModelNo 神经网络模型编号。
(2)NetPara 神经网络参数,它是一个三维数组,
分别表示输入层结点数、输出层结点数和中间层结点
数。
(3)SimulatePara 神经网络仿真输入参数,其维
数与神经网络输入参数个数相同
(4)InputFun 输入层到中间层的传递函数
(5)OutputFun 中间层到输出层的传递函数
例4-2 输入一组测试样本数据,对例4-1训练的网络模型进行仿真
%此为一仿真程序
%首先读入权域值参数
function retdouble =
LmSimu(ModelNo,NetPara,SimulatePara,InputFun,Outp utFun,DataDir)
NNTWARN OFF
%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%
% 这部分代码主要是方便用户调试用
ModelNo='1';
NetPara(1)=7;
☐SofmTrain
功能自组织特征映射网络训练函数。
格式
retstr = ofmTrain(ModelNo,NetPara,TrainPara,DataDir) 说明完成分类训练,并保存权值和分类后
各类别下的像素矩阵,各参数说明如下:(1)ModelNo 输入参数,模型编号。
(2)NetPara 输入参数,网络参数,包括输入层结点数,
分类数,训练数据组数。
(3)TrainPara 输入参数,网络训练参数,包括训练过程
显示频率,最大训练步数,学习率。
(4)DataDir 输入参数,当前应用程序路径。
例4-3 对ch4\nnToolKit工具箱\sofm文件夹中的数据
文件(input_para1.txt)进行自组织特征映射网络训练,以便实现对其数据进行分类。
% 自组织特征映射模型(Self-Organizing feature Map),认为一个神经网络接受外界输入模式时,将会分为不同的区域,各区域对输入模式具有不同的响应特征,同时这一过程是自动完成的。
各神经元的连接权值具有一定的分布。
最邻近的神经元互相刺激,而较远的神经元则相互抑制,更远一些的则具有较弱的刺激作用。
自组织特征映射法是一种无教师的聚类方法。
% 此为Sofm网络训练程序
function retstr =SofmTrain(ModelNo,NetPara,TrainPara,DataDir) NNTWARN OFF
retstr=-1;
%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%
% 方便调试程序用,程序调试时去掉这部分的注释
ModelNo='1';
% 网络参数
NetPara(1)=1; %输入层节点数
☐SofmSimu
功能自组织特征映射网络仿真函数。
格式
retstr = SofmSimu(ModelNo,NetPara,SimuData,DataDir) 说明根据训练好的网络模型,对预测数据
进行分类识别,各参数说明如下:
(1) ModelNo 输入参数,模型编号。
(2) NetPara 输入参数,网络参数,包括输入层结点数,
分类数,训练数据组数。
(3) SimuData 输入参数,网络仿真数据。
(4) DataDir 输入参数,当前应用程序路径。
例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;
☐SofmIntensity
功能图像增强处理函数。
格式retstr = SofmIntensity(ImgName,AdjustPara,DataDir) 说明图像增强处理,主要增强图像对比度,各参数说明如下:
(1) ImgName 输入参数,图像文件名。
(2) AdjustPara 输入参数,图像增强参数,介于(0,1)。
(3) DataDir 输入参数,当前应用程序路径。
☐SofmHist
功能绘制直方图函数。
格式retstr = SofmHist(ImgName,DataDir)
说明绘制图像直方图,各参数说明如下:
(1) ImgName 输入参数,图像文件名。
(2) DataDir 输入参数,当前应用程序路径。
☐SofmProcess
功能自组织特征映射网络分类处理函数。
格式
retstr=
ofmProcess(ModelNo,ClassifyNum,TrainPara,ImgName,DataDir) 说明主要用于图像分割处理,程序首先读入图像文
件,并将图像灰度特征值转化为一个一维矩阵,接下来
对该灰度矩阵进行竞争学习,最后根据训练结果,对矩
阵中的各数据进行仿真,并将分类结果写入相应的文件。
各参数说明如下:
(1) ModelNo 输入参数,模型编号。
(2) ClassifyNum 输入参数,分类数。
(3) TrainPara 输入参数,网络训练参数,包括:训练过程显示频
率,最大训练步数,学习率。
(4) ImgName 输入参数,图像文件名。
(5) DataDir 输入参数,当前应用程序路径。
例4-5 对ch4\nnToolKit工具箱\sofm文件夹中的图像
文件(image\imgrec_0.gif) 根据灰度特征进行分割,同时将分类结果写入文件
%此为Sofm网络处理程序,包含网络训练和仿真,同时将结果写入文件
function retstr =
SofmProcess(ModelNo,ClassifyNum,TrainPara,ImgName ,DataDir)
NNTWARN OFF
retstr=-1;
%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%%
% 方便调试程序用,程序调试时去掉这部分的注释ModelNo='1';
ClassifyNum=7; % 分类数
TrainPara(1)=50; % 训练时显示频率
TrainPara(2)=10000; % 最多训练步数
☐SofmRec
功能图像还原处理函数。
格式
retstr =
SofmRec(ModelNo,ClassifyNum,ClassifyNo,DataDir) 说明经自组织特征映射网络分割后的图像还原处理,各参数说明如下:
(1) ModelNo 输入参数,模型编号。
(2) ClassifyNum 输入参数,分类数。
(3) ClassifyNo 输入参数,需还原的类别。
(4) DataDir 输入参数,应用程序所在工作目录。
例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))];
end
f=im2uint8(e/256);
save pho2 f;
figure,imshow(f);
retstr=1;
%close all;
☐FnnTrain
功能
模糊神经网络训练函数。
格式
retstr = FnnTrain(dt,ld,tt,sp)。
说明对指定的样本数据进行训练,同时将训练结果写入权值文件,各参数说明如下:
(1) dt 输入参数,学习阈值。
(2) ld 输入参数,学习进度。
(3) tt 输入参数,训练次数。
(4) sp 输入参数,样本数据文件。
例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);
☐FnnSimu
功能
模糊神经网络仿真函数。
格式
retstr = FnnSimu(kd,sj,td)。
说明调用训练好的模糊神经网络模型,对输入样本进行仿真,各参数说明如下:
(1) kd 输入参数,学习阈值。
(2) sj 输入参数,学习进度。
(3) td 输入参数,仿真输入数据。
例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);
% %%%%%根据模糊规则计算预测结果
☐Initnet
功能遗传神经网络初始化函数。
格式
[net] = Initnet(W1, B1, W2, B2,paraments)。
说明根据指定的权值阈值,获得设置好的一个神经网络,参数说明如下:
(1) W1 输入参数,输入层到隐含层权值。
(2) B1 输入参数,输入层到隐含层阈值。
(3) W2 输入参数,隐含层到输出层权值。
(4) B2 输入参数,隐含层到输出层阈值。
(5) paraments 输入参数,神经网络参数信息:[最大迭
代次数最小误差]。
☐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 输出参数,遗传算法的适应值。
☐Gafitness
功能遗传算法的适应值计算函数。
格式 f = Gafitness(y)。
说明通过染色体个体计算染色体适应度,参数说明如下:
(1) y 输入参数,染色体个体。
(2) f 输出参数,染色体适应度。
☐Generatesample
功能训练样本生成函数。
格式[ ] = Generatesample(path)。
说明在指定路径生成适合于训练的样本,参数说明如下:path 输入参数,指定路径,用于保存样本文件。
☐GetWBbyga
功能获取遗传神经网络权值阈值参数函数。
格式[ W1, B1, W2, B2 ] = GetWBbyga(paraments)。
说明用遗传算法获取神经网络权值阈值参数,参数说明如下:paraments 输入参数,遗传算法的参数信息:[遗传代数最小适应值]。
☐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-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);
☐Compbpandgabp
功能传统BP和遗传BP训练示例程序。
格式retstr = Compbpandgabp()。
说明
对于指定的样本数据,分别用传统BP算法和遗传BP算法进
行训练,相比之下,用传统BP训练,可能收敛不到目标值,
或者收敛步数太长,而用遗传BP算法进行训练,遗传算法
寻找最优权值阈值会用一些时间,但比BP的训练还是快,
在很短的时间内就能收敛到目标值。
程序运行前需将ch3\
遗传算法工具箱加入到MATLAB的搜索路径中(方法:
File→Set Path,增加目录到MATLAB的搜索路径,然后保
存)。
例4-10 对ch4\nnToolKit工具箱\gabp文件夹中文件
(data\sample.mat)提供的样本数据,比较用传统BP算法进行网络训练和用结合遗传算法的神经网络进行训练的结果。
% 此为传统BP训练和遗传BP训练程序
function retstr = compbpandgabp()
NNTWARN OFF
retstr=-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');
☐.Gabpdemo
功能基于遗传神经网络的图像分割示例程序。
格式retstr = Gabpdemo()。
说明演示对特定类型的一类图像进行分割。
在分割之前要做好二项工作,一是提取前景和背景的特征值,二是用提取好的特征值进行遗传神经网络训练。
☐20.Wnninit
功能小波神经网络初始化。
格式[P,T,R,S1,S2,S ,Q]=Wnninit()。
说明初始化小波神经网络,返回网络的训练样本,输入、输出数及隐含神经元数等。
☐21.Gawnn
功能遗传算法优化小波神经网络后逼近非线性(内部调用遗传算法的初始化、适应度、解码函数)。
格式retstr = Gawnn()。
说明程序运行前需将ch3\小波网络工具箱及遗传算法工具箱加入到
MATLAB的搜索路径中(方法:File→Set Path,增加目录到MATLAB的搜索路径,然后保存)。
例4-11 演示遗传算法优化小波神经网络后逼近非线性。
b(1,j,n)=b(1,j,n-1)+bincrease(1,j);
end
end
%网络误差曲线
toc
plot(MSE(4:N+2)/Q);
title('遗传算法优化后的误差')
figure(3)
plot(T,'r')
hold on
plot(y,'g*');title('遗传算法优化后Wnn的输出')
☐Wnndemo
功能
基于小波神经网络的1-D插值示例程序。
格式
retstr = Wnndemo ()。
说明
程序运行前需将ch3\小波网络工具箱及遗传算法
工具箱加入到MATLAB的搜索路径中(方法:
File→Set Path,增加目录到MATLAB的搜索路径,
然后保存)。
基于小波神经网络的1-D插值示例程序function retstr = wnndemo()
NNTWARN OFF
retstr=-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类:无风险、风险较低、一般风险、
风险较高、风险很高,为了能对开发风险进行有效地评估和预测,
在此拟建立神经网络预测模型,实现对房地产开发风险的预测。
数据
结点类别结点名称结点描述转换
输入通货膨胀风险
升高0.8
不变0.5
降低0.2市场低供求风险
供大于求0.3
平衡0.6
供小于求0.8周期风险
第一阶段0.1
第二阶段0.3
第三阶段0.6
第四阶段0.8利率风险
提高0.2
不变0.5
降低0.9
数据
结点类别结点名称结点描述转换
输入政策风险
有利0.9
无新政策0.8
不利开发0.2区位风险
升值0.9
不变0.6
降值0.3开发期风险
较长0.2
正常0.5
缩短0.7
输出开发风险无风险1风险较低0.8一般风险0.5风险较高0.3风险很高0.1
☐建立一个网络结构为7-5-1的神经网络模型
☐构建专家样本数据
☐运行LmTrain.m文件,完成对专家样本数据的训练
☐将实际参数值传入LmSimu.m文件实现开发风险预测
程序
TrainPara(5)=0.001;
TrainPara(6)=10;
TrainPara(7)=0.1;
TrainPara(8)=1e10;
DataDir='.';
InputFun = 'tansig';
OutputFun = 'purelin';
%%%% 输入参数赋值结束 %%%%%%%%%%%%%%%%%%%%%%%% % 保留原工作目录
olddir=pwd;
% 切换到数据所在工作目录
cd(DataDir);
% 伪声明,以便打包生成COM组件时系统能加载相关函数deltalin(1);
deltalog(1);
4.3.2 自组织特征映射网络进行图像识别 在利用GMS红外卫星云图进行无眼台风自动定位方法的研究中,台风云系的分割是处理中关键的一步,本案例介绍一种基于自组织特征映射网络对图像进行分割的方法,首先利用图像的分形维数和灰度特征对台风云系中的卫星云图进行分类识别,然后再对不同的分类结果进行图像还原。
4.3.2 自组织特征映射网络进行图像识别☐案例分析
☐要实现本例的图像分割与还原,可按以下步骤来进行:
(1)图像预处理
在进行图像识别前,首先要对失真变质的图像进行预处理,
即先对图像进行滤波。
除了对图像进行滤波处理外,有时为了得到对具体应用来说
视觉效果更“好”、更“有用”的图像,还需要对图像做一
些增强的技术处理。
这里可直接采用工具包中的
SofmIntensity函数进行处理。
(2)确定图像分类数
进行神经网络聚类分析首先要根据等灰度图分析图像的灰度
集中点,据此确定神经网络的输出神经元个数,然后用神经
网络进行聚类分析。
图为运行SofmHist函数生成的灰度直方图,由图可发现原始图像的灰度集中点,据此可以确定Kohonen神经网络的输出神经元数为7,即分类数为7
(3)基于自组织特征映射的图像聚类处理
主要完成基于自组织特征映射的神经网络建模、
模型训练及根据训练的结果对图像像素进行分类,并将相关参数保存下来。
此步骤可通过运行工具
包中的SofmProcess来完成。
(4)图像识别
针对上一步的仿真结果,进行还原图像。
此步骤
可通过运行工具包中的SofmRec来完成。
程序
(1)图像预处理
function retstr =
SofmIntensity(ImgName,AdjustPara,DataDir) NNTWARN OFF
retstr=-1;
%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%% % 方便调试程序用,程序调试时去掉这部分的注释
% 图像增强参数,介于(0,1)
% AdjustPara(1)=0.25;
% AdjustPara(2)=0.6;
% 当前应用程序路径
% DataDir='.';
% 图像文件名
ImgName = 'image/imgrec_0.gif';
☐1.案例描述
建筑物在施工过程中和施工结束后,往往会产生一定的沉降量,而影响结果的主要因素,又主要与时间、土的性质、与施工面
的距离、支护结构参数、工程进度快慢、地下水渗水情况等因
素有关。
希望能根据前面一段时间的数据来预测后几天的沉降
量或最终沉降量。
☐2.案例分析
根据案例描述,为了能有效地预测下一阶段(如10天)将要发
生的沉降值或最终沉降量,这里介绍采用模糊神经网络算法,
实现预测过程。
经综合分析,归纳出如下几个指标作为影响预
测结果(累计沉降量)的影响因素:
⑴时间。
⑵与掌子面距离。
⑶断面埋置深度。
⑷围岩类型。
⑸地下水含量。
⑹钢拱架间距。
样本数据
程序
⑴ 网络训练
function retstr = FnnTrain(dt,ld,tt,sp)
retstr=-1;
%%%% 输入参数赋值开始 %%%%%%%%%%%%%%%%%%%%%%% % 方便调试程序用,程序调试时去掉这部分的注释
% dt=4; %学习阈值
% ld=0.05; %学习进度
% tt=10; %训练次数
% sp='data\sample.txt'; %一个点的监测数据%%%% 输入参数赋值结束 %%%%%%%%%%%%%%%%%%%%%%%% global recordDimention;
global sampleNumber;
global weightNumber;
global distanceThread;
global WW;
☐.案例描述
遗传神经网络在特征分类方面,有着非常广
泛的应用。
通过先期的学习,能够通过分类
得到特定的对象和特征。
将其用在图像分割
上面,主要对特定类型的一类图像进行分割。
如,在一副含有苹果和草莓的图像当中,分
割出苹果或者草莓;在一副含有人的图像中,分割出肤色区域。
在本例中,主要将其用在
医学图像的分割上。
☐分割实现步骤
(1) 提取特征值
主要通过手工对图像进行分析,确定前景色的范围和背景色的范围,
然后把前景色和背景色按顺序存入一个数组中,生成的这个数组就
为训练样本数组。
然后再建立一个同样大小的数组,来保存样本的
特征值。
如果为前景则特征值为1,背景色特征值为0。
(2) 遗传神经网络训练
将提取好的样本值和特征值送入遗传神经网络进行训练。
遗传神经
网络首先在权值、阈值的值空间中,搜索出一组最合适的权值和阈
值,将此设置为神经网络的初始权值、阈值。
然后再进行训练。
(3) 图像分割
将图像分割看成一个分类的过程。
图像中的每一个像素是一个待分
类的样本,将这个样本送入遗传神经网络进行分类,将输出一个特
征值,这个特征值决定该样本属于其中一类的概率,如果该值大于
0.5,那么认为它是前景,否则它就是背景。
程序
net = newcf([0 255],[6 1],{'tansig' 'purelin'}); net.trainParam.epochs = epochs;
net.trainParam.goal = goal ;
load('data\sample.mat');
net = train(net,p,t);
%
%遗传BP训练
%遗传算法寻找最优权值、阈值会用一些时间
%bp的训练还是非常快,38步就收敛到的目标值
gaP = [100 0.00001];
bpP = [500 0.00001];
gabptrain( gaP,bpP,p,t );
4.3.5 小波神经网络在1-D 插值上的应用
程序
% minimum number of covered data points 1, scanned levels 5.
else
th = wnetreg(y, x, [], 4, 3, 1, 5);
end
%
% 对结果进行检测和评价
xg = (-1:.01:1)';
yg = wavenet(xg, th);
%
% 绘制插值结果
plot(x,y,'o', xg,yg,':'); xlabel('x');
ylabel('y'); title('插值结果');。