BP神经网络算法

释放双眼,带上耳机,听听看~!

BP神经网络算法

本文根据. 大佬博客推导出公式及表达的个人见解
1.1直接调包的过程
matlab的神经网络工具箱功能强大。
1.2强推过程
实验的目的:强推BP神经网络算法,并且增加了噪声数据,增加了误差分析和图形效果,采用数据集来验证效果和预测未来的情况。
1.2.1数据加载和网络节点确定
本人在写python代码时,数据的加载未命名函数,直接以list数组形式来确定1990——2009的数据集的数据集,包括:
(1)numberOfPeople数据(人数(单位:万人))
(2)numberOfAutomobile数据(机动车数(单位:万辆))
(3)roadArea数据(公路面积(单位:万平方公里))
(4)passengerVolume数据(公路客运量(单位:万人))
(5)freightVolume数据(公路货运量(单位:万吨))
其中numberOfPeople数据,numberOfAutomobile数据,roadArea数据做为输入数据集,即神经网络的输入节点(变量名用inputDimension表示)的值为3,passengerVolume数据和freightVolume数据为输出数据集,即神经网络的输出节点(变量名用outputDimension表示)的值为2.最后确定中间隐藏层的值,根据经验公式l=√(n+m)+a,可得到隐藏层个数范围在[2,12],于是隐藏层的值(变量名用numberOfHiddenNeure表示)在2到12中任意取,本代码中隐藏层取数值为8。
BP神经网络算法
1.2.2归一化处理
BP神经网络算法
1.2.3噪声处理
目的:给样本输出矩阵进行噪声处理,防止网络过度拟合
python代码中本人定义了Noiseman函数。
1.2.4神经网络算法迭代训练(5000次)
根据matlab代码强推BP神经网络算法的过程中,我学习到了其算法的执行公式。
BP神经网络算法
(1)随机初始化过程
BP神经网络算法
BP神经网络算法
(2)迭代过程:
BP神经网络算法
BP神经网络算法
(3)测试样本处理过程:
BP神经网络算法
BP神经网络算法
1.2.4.1 python根据matlab版本编写的代码步骤:
python代码中本人定义了InterTrain()函数,根据数学公式写函数体。
(1)初始化各种网络层之间的权值和阈值
(2)开始迭代
(2.1)计算 隐含层和输出层的输出
(2.2)实际输出与网络输出之差并求误差平方和
(2.3)实际输出与网络输出之差大于训练网络所要达到的目标误差时结

(2.4)更新各种网络层之间的权值和阈值
(3)样本测试
(4)对测试集输出的结果矩阵进行反归一化。
1.2.4.2 内部执行过程
从图1.1可以看出,
(1)输入层与隐含层之间的权值是一个8行3列的数组
(2)输入层与隐含层之间的阈值是一个8行1列的数组
(3)输出层与隐含层之间的权值是一个2行8列的数组
(4)输出层与隐含层之间的阈值是一个2行1列的数组
1.2.5真实值与模型值的比较
python代码中本人定义了Plot()函数,将网络输出客运量和实际客运量,网络输出货运量和实际输出货运量进行比较,结果图如下:
BP神经网络算法

1.2.6未来的预测
python代码中本人定义了Predict()函数,函数体执行过程:
1.输入2010年和2011年的人数数据、机动车数数据、公路面积数据,做为输入数据集
2.原始输入数据的归一化参数对新输入的数据进行归一化处理,调用本人定义的Normalization2()函数,其函数体根据归一化公式编写。
3.根据隐藏层和输出层的输出公式,带入训练好的隐藏层和输出层的权值和阈值求出最终的预测结果
4.将结果进行反归一化
5.以画图的形式进行可视化1990——2009年数据集的模型值和实际值及预
测值的情况,并且可视化出迭代1——100次的误差情况,结果图如下:
BP神经网络算法
BP神经网络算法
1.3 比较图
本人按照作者的神经网络的思路过程,直接使用matlab调用神经网络工具箱,拟合出未去噪音的时拟合的模型值。并且进行了输入数据去噪音的模型值,未将输入数据去噪音,实际值三者间的比较。明显可以看出对输入数据去噪音操作,增加了拟合的准确性。
BP神经网络算法

1.首先根据matlab代码逐条翻译成python代码,matlab版本的迭代50000立刻就出结果,但是python编辑器里5000都运行了好几分钟,50000迭代运行好几个小时没有结果,可能编程的复杂度太大,python编辑器内存溢出。
2.然后根据代码理解思路,将每个过程进行函数封装
3.最后写报告
1.5.LSTM模型
属于递归神经网络,其对于时间间隔较大的预测输入数据,得出预测输出数据的准确性较好。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索