【数学建模】之Matlab实现BP神经网络

时间:2022-07-23
本文章向大家介绍【数学建模】之Matlab实现BP神经网络,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

点击【拇指笔记】,关注我的公众号。

STEP 1 导入数据。

可以直接导入Excel数据。

[~, ~, raw] = xlsread('C:sz000004.xlsx','Sheet1','A2:I7');

也可以命令行创建数据,

x = [(-10:0.1:10)];y = [sin(-10:0.1:10)];

STEP 2 启动nftool工具箱

直接在APP里搜索nftool即可。

STEP 3 设置BP神经网络参数

  1. 设置训练集输入和标签变量(我这里使用的是第一步里创建的x和y变量)
  1. 设置数据类型与占比

trainning:用来训练的数据。 validtion:测量网络泛化的数据(泛化停止改善时停止训练) testing:用来测试神经网络的数据。

  1. 设置隐藏层神经单元的数量

一般来说,隐藏层神经单元()和输入层神经单元()、输出层神经单元()之间存在如下的关系。

STEP 4 训练神经网络

这里可以设置训练算法。一般选LM算法

点击进行训练神经网络

STEP 5 检查参数

训练完神经网络后会生成一张训练卡。

给出了学习周期(Epoch),训练花费的时间(Time),精度(Performance),梯度(Gradient),验证检查(Validation checks).

停止准则:在1000次训练中,如果Performance,Gradient,Mu中的一个达到了目标精度或六次训练误差都没有降低,则停止训练。

这四个进度条哪个满了,就代表根据那一准则停止训练。

STEP 6 绘制训练过程图

训练卡的下半部分是Plots区。

比如第一个,绘制最高精度出现的过程

一般来说第四个(regression)可以看出训练效果,R越接近于1,预测结果越准确。

STEP 7 导出神经网络

一般来说用第二种方式导出。

导出后得到

STEP 8 命令行调用神经网络

首先创建一组新变量x1

x1 = [(10:0.1:30)]

然后调用。

y1 = myNeuralNetworkFunction(x1)

通过神经网络预测的y1

如果神经网络预测结果出现问题,可以通过以下几种方法解决试试。

解决方案:

1.增加样本数量(我的样本数量过少,只有两百个)

2.减少神经元的数量

3.增加训练次数

STEP 9 保存

两种方法(Simple Script和Advanced Script)都可选择,前者简单,后者可拓展性强。

保存完毕后,下一次可以直接运行脚本而无需打开工具箱。