510 likes | 735 Views
第 4 章 nnToolKit 神经网络工具包. 4.1 nnToolKit 简介. nnToolKit 神经网络工具包是基于 MATLAB 神经网络工具箱自行开发的一组神经网络算法函数库 可在 MATLAB 环境下均独立运行,也可打包成 DLL 组件,直接被 VB 、 V C 、 C++ 、 C# 、 JAVA 或其他支持 COM 的语言所调用 本工具包中增加了一些 MATLAB 中没有的神经网络算法,如模糊神经网络、小波神经网络、遗传神经网络算法等. 4.2 nnToolKit 函数库. 4.2nnToolKit 函数库. 4.2nnToolKit 函数库.
E N D
4.1 nnToolKit简介 • nnToolKit神经网络工具包是基于MATLAB神经网络工具箱自行开发的一组神经网络算法函数库 • 可在MATLAB环境下均独立运行,也可打包成DLL组件,直接被VB、VC、C++ 、C#、JAVA或其他支持COM的语言所调用 • 本工具包中增加了一些MATLAB中没有的神经网络算法,如模糊神经网络、小波神经网络、遗传神经网络算法等
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)提供的专家样本数据进行网络训练。
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训练的网络模型进行仿真
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)进行自组织特征映射网络训练,以便实现对其数据进行分类。
4.2nnToolKit函数库 • SofmSimu • 功能 自组织特征映射网络仿真函数。 • 格式 • retstr = SofmSimu(ModelNo,NetPara,SimuData,DataDir) • 说明 根据训练好的网络模型,对预测数据进行分类识别,各参数说明如下: • (1) ModelNo 输入参数,模型编号。 • (2) NetPara 输入参数,网络参数,包括输入层结点数,分类数,训练数据组数。 • (3) SimuData 输入参数,网络仿真数据。 • (4) DataDir 输入参数,当前应用程序路径。
4.2nnToolKit函数库 • 例4-4 输入一组测试样本数据,检验例4-3训练好自组织特征映射网络模型。
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) 根据灰度特征进行分割,同时将分类结果写入文件
4.2nnToolKit函数库 • SofmRec • 功能 图像还原处理函数。 • 格式 • retstr = SofmRec(ModelNo,ClassifyNum,ClassifyNo,DataDir) • 说明 经自组织特征映射网络分割后的图像还原处理,各参数说明如下: • (1) ModelNo 输入参数,模型编号。 • (2) ClassifyNum 输入参数,分类数。 • (3) ClassifyNo 输入参数,需还原的类别。 • (4) DataDir 输入参数,应用程序所在工作目录。
4.2nnToolKit函数库 • 例4-6 对经例4-5分割后的图像进行还原。
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)提供的专家样本数据进行模糊神经网络训练。
4.2nnToolKit函数库 • FnnSimu • 功能 • 模糊神经网络仿真函数。 • 格式 • retstr = FnnSimu(kd,sj,td)。 • 说明 调用训练好的模糊神经网络模型,对输入样本进行仿真,各参数说明如下: • (1) kd 输入参数,学习阈值。 • (2) sj 输入参数,学习进度。 • (3) td 输入参数,仿真输入数据。
4.2nnToolKit函数库 • 例4-8 输入一组测试样本数据,对例4-7训练的网络模型进行仿真。
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的搜索路径中(方法:FileSet Path,增加目录到MATLAB的搜索路径,然后保存),函数参数说明如下: • (1) gaP 输入参数,遗传算法的参数信息:[遗传代数 最小适应值]。 • (2) bpP 输入参数,神经网络参数信息:[最大迭代次数 最小误差]。 • (3) P 输入参数,样本数组。 • (4) T 输入参数,目标数组。 • (5) net 输出参数,训练好的网络结构。
4.2nnToolKit函数库 • 例4-9 对ch4\nnToolKit工具箱\gabp文件夹中文件(data\sample.mat)提供的样本数据,用结合遗传算法的神经网络进行训练。
4.2nnToolKit函数库 • Compbpandgabp • 功能 传统BP和遗传BP训练示例程序。 • 格式 retstr = Compbpandgabp()。 • 说明 • 对于指定的样本数据,分别用传统BP算法和遗传BP算法进行训练,相比之下,用传统BP训练,可能收敛不到目标值,或者收敛步数太长,而用遗传BP算法进行训练,遗传算法寻找最优权值阈值会用一些时间,但比BP的训练还是快,在很短的时间内就能收敛到目标值。程序运行前需将ch3\遗传算法工具箱加入到MATLAB的搜索路径中(方法:FileSet Path,增加目录到MATLAB的搜索路径,然后保存)。
4.2nnToolKit函数库 • 例4-10 对ch4\nnToolKit工具箱\gabp文件夹中文件(data\sample.mat)提供的样本数据,比较用传统BP算法进行网络训练和用结合遗传算法的神经网络进行训练的结果。
4.2nnToolKit函数库 • .Gabpdemo • 功能 基于遗传神经网络的图像分割示例程序。 • 格式 retstr = Gabpdemo()。 • 说明 演示对特定类型的一类图像进行分割。在分割之前要做好二项工作,一是提取前景和背景的特征值,二是用提取好的特征值进行遗传神经网络训练。 • Wnninit • 功能 小波神经网络初始化。 • 格式 [P,T,R,S1,S2,S ,Q]=Wnninit()。 • 说明 初始化小波神经网络,返回网络的训练样本,输入、输出数及隐含神经元数等。 • Gawnn • 功能 遗传算法优化小波神经网络后逼近非线性(内部调用遗传算法的初始化、适应度、解码函数)。 • 格式 retstr = Gawnn()。 • 说明 程序运行前需将ch3\小波网络工具箱及遗传算法工具箱加入到MATLAB的搜索路径中(方法:FileSet Path,增加目录到MATLAB的搜索路径,然后保存)。
4.2nnToolKit函数库 • 例4-11 演示遗传算法优化小波神经网络后逼近非线性。
4.2nnToolKit函数库 • Wnndemo • 功能 • 基于小波神经网络的1-D插值示例程序。 • 格式 • retstr = Wnndemo ()。 • 说明 • 程序运行前需将ch3\小波网络工具箱及遗传算法工具箱加入到MATLAB的搜索路径中(方法:FileSet Path,增加目录到MATLAB的搜索路径,然后保存)。
4.2nnToolKit函数库 • 基于小波神经网络的1-D插值示例程序
4.3 应用举例 • 4.3.1 基于LM神经网络的房地产开发风险预测模型 • 1.案例描述 • 房地产开发存在风险,其影响因素(输入)主要包括: • 1)通货膨胀风险:可分为升高、不变、降低。 • 2)市场低供求风险,可分为供大求、平衡、供小求。 • 3)周期风险,可分为第一阶段、第二阶段、第三阶段、第四阶段。 • 4)利率风险,可分为提高、不变、降低。 • 5)政策风险,可分为有利、无新政策、不利开发。 • 6)区位风险,可分为升值、不变、降值。 • 7)开发期风险,可分为较长、正常、缩短。 • 开发风险(输出)可分为5类:无风险、风险较低、一般风险、风险较高、风险很高,为了能对开发风险进行有效地评估和预测,在此拟建立神经网络预测模型,实现对房地产开发风险的预测。
4.3.1 基于LM神经网络的房地产开发风险预测模型 • 数据
4.3.1 基于LM神经网络的房地产开发风险预测模型 • 数据
4.3.1 基于LM神经网络的房地产开发风险预测模型 • 建立一个网络结构为7-5-1的神经网络模型 • 构建专家样本数据 • 运行LmTrain.m文件,完成对专家样本数据的训练 • 将实际参数值传入LmSimu.m文件实现开发风险预测
4.3.1 基于LM神经网络的房地产开发风险预测模型 • 程序
4.3.2 自组织特征映射网络进行图像识别 • 在利用GMS红外卫星云图进行无眼台风自动定位方法的研究中,台风云系的分割是处理中关键的一步,本案例介绍一种基于自组织特征映射网络对图像进行分割的方法,首先利用图像的分形维数和灰度特征对台风云系中的卫星云图进行分类识别,然后再对不同的分类结果进行图像还原。
4.3.2 自组织特征映射网络进行图像识别 • 案例分析 • 要实现本例的图像分割与还原,可按以下步骤来进行: • (1)图像预处理 • 在进行图像识别前,首先要对失真变质的图像进行预处理,即先对图像进行滤波。 • 除了对图像进行滤波处理外,有时为了得到对具体应用来说视觉效果更“好”、更“有用”的图像,还需要对图像做一些增强的技术处理。这里可直接采用工具包中的SofmIntensity函数进行处理。 • (2)确定图像分类数 • 进行神经网络聚类分析首先要根据等灰度图分析图像的灰度集中点,据此确定神经网络的输出神经元个数,然后用神经网络进行聚类分析。
4.3.2 自组织特征映射网络进行图像识别 • 图为运行SofmHist函数生成的灰度直方图,由图可发现原始图像的灰度集中点,据此可以确定Kohonen神经网络的输出神经元数为7,即分类数为7
4.3.2 自组织特征映射网络进行图像识别 • (3)基于自组织特征映射的图像聚类处理 • 主要完成基于自组织特征映射的神经网络建模、模型训练及根据训练的结果对图像像素进行分类,并将相关参数保存下来。此步骤可通过运行工具包中的SofmProcess来完成。 • (4)图像识别 • 针对上一步的仿真结果,进行还原图像。此步骤可通过运行工具包中的SofmRec来完成。
4.3.3 模糊神经网络预测地基沉降量 • 1.案例描述 • 建筑物在施工过程中和施工结束后,往往会产生一定的沉降量,而影响结果的主要因素,又主要与时间、土的性质、与施工面的距离、支护结构参数、工程进度快慢、地下水渗水情况等因素有关。希望能根据前面一段时间的数据来预测后几天的沉降量或最终沉降量。 • 2.案例分析 • 根据案例描述,为了能有效地预测下一阶段(如10天)将要发生的沉降值或最终沉降量,这里介绍采用模糊神经网络算法,实现预测过程。经综合分析,归纳出如下几个指标作为影响预测结果(累计沉降量)的影响因素: • ⑴ 时间。 • ⑵ 与掌子面距离。 • ⑶ 断面埋置深度。 • ⑷ 围岩类型。 • ⑸ 地下水含量。 • ⑹ 钢拱架间距。
4.3.3 模糊神经网络预测地基沉降量 • 样本数据
4.3.3 模糊神经网络预测地基沉降量 • 程序
4.3.4 基于遗传神经网络的图像分割 • .案例描述 • 遗传神经网络在特征分类方面,有着非常广泛的应用。通过先期的学习,能够通过分类得到特定的对象和特征。将其用在图像分割上面,主要对特定类型的一类图像进行分割。如,在一副含有苹果和草莓的图像当中,分割出苹果或者草莓;在一副含有人的图像中,分割出肤色区域。在本例中,主要将其用在医学图像的分割上。
4.3.4 基于遗传神经网络的图像分割 • 分割实现步骤 • (1) 提取特征值 • 主要通过手工对图像进行分析,确定前景色的范围和背景色的范围,然后把前景色和背景色按顺序存入一个数组中,生成的这个数组就为训练样本数组。然后再建立一个同样大小的数组,来保存样本的特征值。如果为前景则特征值为1,背景色特征值为0。 • (2) 遗传神经网络训练 • 将提取好的样本值和特征值送入遗传神经网络进行训练。遗传神经网络首先在权值、阈值的值空间中,搜索出一组最合适的权值和阈值,将此设置为神经网络的初始权值、阈值。然后再进行训练。 • (3) 图像分割 • 将图像分割看成一个分类的过程。图像中的每一个像素是一个待分类的样本,将这个样本送入遗传神经网络进行分类,将输出一个特征值,这个特征值决定该样本属于其中一类的概率,如果该值大于0.5,那么认为它是前景,否则它就是背景。
4.3.4 基于遗传神经网络的图像分割 • 程序