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