本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文简单讲述BP神经网络建模的相关内容,是具体建模的知识铺垫和初识
本节先介绍BP神经网络建模的两种流程
两种BP神经网络建模的流程
借助matlab神经网络工具箱构建BP神经网络模型有两种流程,
标准流程
简捷流程
标准流程需要自行做数据归一化、数据分割等预处理,matlab工具箱只是充当训练权重阈值的工具,最后再自行评估建模效果
简捷流程则将归一化、数据划分等工作都交给工具箱 ,并且利用工具箱返回的预测结果来评估建模效果
两种流程的比较
简捷流程由于matlab高度封装,好处是使用起来较便捷,
特别是省去了归一化、数据分割,基本能少60%的代码
高度封装同时的坏处在于细节自主性更低,
例如我们要自行定义哪些数据用于预测,
那么使用工具箱就不方便了
在实际中,我们追求优质建模效果时,往往仍然需要使用标准流程,
即自己归一化数据、分割数据,只利用matlab的工具箱来训练神经网络。
所以,两种建模流程都是需要的,看我们是否需要自主设置一些细节。
本节介绍在训练好模型后,如何使用模型进行预测新数据
数据没自行归一化
如果数据没做归一化,直接丢给工具箱建模,
那么模型使用时,只需要使用sim函数就可以了,如下
sim_y = sim(net,X);
数据自行归一化
如果数据已经自行做过归一化,再丢给工具箱建模,
那么工具箱训练出的模型是针对归一化数据的,
在模型使用时,必须遵守:
PASS:归一化使用的参数(xmin,xmax,ymin,ymax)需要与训练模型时的参数保持一致
如果要投入生产使用,则我们需要将模型提取出来。
模型提取有两种方式:提取模型程序对象和提取模型表达式
提取模型程序对象
提取matlab模型程序对象方式是指先提取出训练好的模型程序对象,
然后在外部使用时再用混合编程调用模型程序对象
使用时与在matlab内部使用时一致,
如果没做过归一化,直接调用sim就可以,
如果自行做过数据归一化,就需要在前后分别做归一化和反归一化
提取模型数学表达式
提取模型的数学表达式是指提取出类似如下的模型数学表达式:
通过直接计算模型的表达式来获得模型的预测结果
需要注意的是,
不管有没有自行做过归一化,提取的表达式是针对归一化数据的
在使用表达式时必须在前后分别做归一化和反归一化,
也可以进一步将模型表达式进行反归一化,
使用时直接用反归一化后的模型表达即可,而无需再归一反归一
老饼小故事
老饼当年刚参加工作时,不知道如何提取出模型的表达式,只能以matlab的模型程序对象形式输出模型。
由于模型是matlab,而生产上的系统是java,需要系统用java与matlab进行混合编程的方式调用matlab的对象,
而生产环境是linux,为了支持matlab环境,需要再布署一个matlab installer,非常折腾。
所以,后来老饼踏踏实实研究了一遍,怎么将表达式提取出来,并如何做反归一,这样,一步到位,干爽的感觉油然而生。
End