【数学建模】之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神经网络参数
- 设置训练集输入和标签变量(我这里使用的是第一步里创建的x和y变量)
- 设置数据类型与占比
trainning:用来训练的数据。 validtion:测量网络泛化的数据(泛化停止改善时停止训练) testing:用来测试神经网络的数据。
- 设置隐藏层神经单元的数量
一般来说,隐藏层神经单元()和输入层神经单元()、输出层神经单元()之间存在如下的关系。
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)都可选择,前者简单,后者可拓展性强。
保存完毕后,下一次可以直接运行脚本而无需打开工具箱。
- WPF:自动执行"机器人"程序若干注意事项
- javascript:查找“跳号”号码
- 谁能拯救我糟心的出行?
- Python常见数据结构整理 Python常见数据结构整理
- “共享洗车机”落户咸阳,你怎么看?
- 蒋涛——软件是一个非常特殊的产业,一旦进入就再难挣脱
- Pechkin:html -> pdf 利器
- C#执行XSL转换
- javascript:算法笔记
- spring boot 登录注册 demo (一)
- linux学习:CentOS、Mac上SSH的设置以及SceureCRT中的文件上传下载
- 中关村成为北京“高精尖”产业发展主阵地
- jquery-barcode:js实现的条码打印
- 页面json 格式化+颜色高亮
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- spring的缓存(cache)-(缓存穿透、缓存击穿、缓存雪崩、热点数据)
- spring-配置文件外化
- 腾讯地图获取全国行政区划检索列表Demo
- iOS开发~UIView layer 之前的关系
- iOS进阶_KVC(&KVC赋值取值过程分析&KVC自定义&异常处理)
- python 学习笔记(8)——python绝对路径相对路径
- 设计模式-访问者模式
- 设计模式-空对象模式
- 设计模式-观察者模式
- Selenium自动化最佳实践技巧(上)
- 如何同时压测创建和删除接口
- 为什么测试覆盖率如此重要
- 5行Python就能爬取 3000+ 上市公司的信息?
- iOS 代码染色原理及技术实践
- 微信小程序【常用组件及自定义组件】