专栏首页拇指笔记【数学建模】之Matlab实现BP神经网络

【数学建模】之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)都可选择,前者简单,后者可拓展性强。

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

本文分享自微信公众号 - 拇指笔记(shuzhi990),作者:拇指笔记

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【动手学深度学习笔记】之模型选择、过拟合与欠拟合

    机器学习过程中,评估候选模型并从中选择模型的过程叫做模型选择。模型选择的对象不仅是不同的模型也可以是有着不同超参数的同一模型。

    树枝990
  • 【动手学深度学习笔记】之线性回归

    线性回归是单层神经网络,设计的概念和技术适用于大多数深度学习模型;因此,我们以线性回归为例,学习深度学习模型的基本要素和表示方法。

    树枝990
  • 【Python】Scrapy爬虫入门(一)Scrapy的基本用法和爬取静态网站

    通过之前的学习,我们对于爬虫和爬取一些静态网站和简单的动态网站都有了一定了解。现在,是时候开始学习更强大的爬虫框架了。

    树枝990
  • 业界 | 苹果发文:全局语义信息能否改进神经语言模型?

    在 iPhone 上输入文本、发掘用户可能感兴趣的新闻、查明用户遇到问题的答案,以及其他语言相关的任务都取决于稳健的自然语言处理(NLP)模型。词嵌入是一类 N...

    机器之心
  • 深入seajs源码系列二

    模块类和状态类 参照上文的demo,我们结合源码分析在简单的API调用的背后,到底使用了什么技巧来实现各个模块的依赖加载以及模块API的导出。        ...

    欲休
  • bootstrap treeview实现target功能,iframe中打开页面

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • 第016课 Nand Flash操作原理及裸机程序分析

    NAND FLASH原理图 NAND FLASH是一个存储芯片 那么: 这样的操作很合理”读地址A的数据,把数据B写到地址A”

    韦东山
  • js中的二叉树以及二叉搜索树的实现及应用

    二叉树中的节点最多只能有2个子节点,一个是左侧子节点,一个是右侧子节点,这样定义的好处是有利于我们写出更高效的插入,查找,删除节点的算法。

    徐小夕
  • 记一次挖矿病毒分析

    上午接到同事通知,有客户中了挖矿病毒,所以通过 ssh 登陆服务器检查,简单记录后遂有此文。

    FB客服
  • 第6章 Jenkins系统权限划分与授权管理

    Jenkins基础部分最后一篇公开的博文了,后续系列博文仅对Jenkins课程学员提供,如果有需要请大家可以支持下今天刚刚推出的DevOps教程,感谢支持!

    泽阳

扫码关注云+社区

领取腾讯云代金券