一个简单的BP神经网络例子
原创文章,转载请说明来自《老饼讲解神经网络》:bp.bbbdata.com
关于《老饼讲解神经网络》:
本网结构化讲解神经网络的知识,原理和代码。
重现matlab神经网络工具箱的算法,是学习神经网络的好助手。
目录
一.数据
二.确定模型结构与训练算法
三.代码实现
四. 网络预测
五. 获取最终的数学表达式
在本文,展示一个matlab2014实现神经网络的例子。
一.数据
数据如下,x1,x2为输入,y为对应的输出,现需要训练一个网络,用x1,x2预测y.
二.确定模型结构与训练算法
我们这里采用的网络结构如下:
1:节点个数设置: 输入层、隐层、输出层的节点个数分别为[2 ,3,1]。
2:传递函数设置:隐层( tansig函数)。输出层(purelin函数)。
3:训练方式:trainlm。则模型结构拓扑图如下:
模型的数学表达式如下:
三.代码实现
在matlab2014b里写代码:
x1 = [-3,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,0.9,1.2,1.5,1.8];% x1:x1 = -3:0.3:2;
x2 = [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,-2.2204,0.2,0.4,0.6,0.8,1,1.2]; % x2:x2 = -2:0.2:1.2;
y = [0.6589,0.2206,-0.1635,-0.4712,-0.6858,-0.7975,-0.8040,...-0.7113,-0.5326,-0.2875 ,0,0.3035,0.5966,0.8553,1.0600,1.1975,1.2618]; % y: y = sin(x1)+0.2*x2.*x2;inputData = [x1;x2]; % 将x1,x2作为输入数据
outputData = y; % 将y作为输出数据
setdemorandstream(88888);%指定随机种子,这样每次训练出来的网络都一样。%使用用输入输出数据(inputData、outputData)建立网络,
%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');%设置一些常用参数
net.trainparam.goal = 0.0001; % 训练目标:均方误差低于0.0001
net.trainparam.show = 400; % 每训练400次展示一次结果
net.trainparam.epochs = 15000; % 最大训练次数:15000.
[net,tr] = train(net,inputData,outputData); % 调用matlab神经网络工具箱自带的train函数训练网络simout = sim(net,inputData); % 调用matlab神经网络工具箱自带的sim函数得到网络的预测值
figure; % 新建画图窗口窗口
t=1:length(simout);
plot(t,y,t,simout,'r') % 画图,对比原来的y和网络预测的y
运行后得到训练的图:
四. 网络预测
若果想知道x1=0.5,x2=0.5时的值,可输入
x =[0.5;0.5];
simy = sim(net,x)
命令窗口输出:
这样,就得到了输入为 [0.5,0.5] 时,y的预测值。
五. 获取最终的数学表达式
实际上训练好的网络net, 就是上面的(1)式的数学函数,
预测的时候可以直接使用神经网络工具箱的 sim(net,x) 函数进行预测,
但如果一定要把这个数学表达式提取出来呢?
以下两张文章都有所介绍:
(1)《 提取神经网络数学表达式 》
(2)《一个BP的完整代码实现》
相关文章
《BP神经网络梯度推导》
《BP神经网络提取的数学表达式》
《一个BP的完整建模流程》
一个简单的BP神经网络例子相关推荐
- MATLAB从入门到精通:搭建一个 简单的Bp神经网络(附代码)
01 | 构建数据集 构造一个1行1000列的一维矩阵,这1000个数全部都在(0,1)这个区间内.规定当某一列的数字大于等于0.5时,输出为1,否则输出-1.构造数据集的代码如下. %% 构造数据集 ...
- 使用python自己搭建一个简单的BP神经网络
from numpy import exp,array,random,dot #import randomclass NeuralNetwork(object):def __init__(self): ...
- 一个简单的BP神经网络matlab程序(附函数详解)
说明:20180604更新 1.此文的程序来自博客:http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html 2.本人对其中涉及到的函数 ...
- 一个简单的epoll测试例子
一个简单的epoll测试例子 一段简单的epoll测试例子,编译运行后可以直接用浏览器访问localhost来测试. 1 #include <unistd.h> 2 #include &l ...
- 一个简单的三层架构例子(.NET入门)
最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...
- 一个简单的iBatis入门例子
一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. ibatis-2.3.4.726.jar ojdbc14.jar 2.创建类com/ ...
- 构建一个简单的卷积神经网络,使用DRL框架tianshou匹配DQN算法
在之前的文章中,我们做了如下工作: 如何设计一个类flappy-bird小游戏:[python实战]使用pygame写一个flappy-bird类小游戏 | 设计思路+项目结构+代码详解|新手向 DF ...
- 练习推导一个最简单的BP神经网络训练过程【个人作业/数学推导】
写在前面: 各式资料中关于BP神经网络的讲解已经足够全面详尽,故不在此过多赘述.本文重点在于由一个"最简单"的神经网络练习推导其训练过程,和大家一起在练习中一起更好理解神经网络训练 ...
- linux下glew例子,一个简单的GLSL Shader例子
本例子选自OpenGL Shading Language中的第一个Shader例子,使用颜色平滑地表示一个表面的温度.温度及其颜色的范围在应用程序中进行设置. //先看顶点着色器temp.vert: ...
最新文章
- oracle表空间更改用户,ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限...
- 2017年7个主要的金融行业数据趋势
- 关于未来50年的工作与生活,三星联合未来学家们做出了这些预测
- jtabel 遍历_单击按钮更新JTable
- 重构增长:如何从价值创造出发,打造企业的成长思维
- 作为开发人员,你都听产品经理的,做的累不累?
- JAVA基础之自定义容器实现
- webbrowser加载地图网页出现脚本错误解决
- 四则运算03(附第四周进度条)
- OpenCV-数组加权和cv::addWeighted
- ospf避免环路_13、OSPF的选路规则及路由控制
- 幻想影院添加html渲染,幻想影院无毒版-幻想影院清爽版预约 _5577安卓网
- Java后端开发实习面试
- MAX30102 血氧调试笔记
- spring事务管理tx:Advice详解
- 对于图片倾斜做矫正处理
- adminLTE框架chart图表的使用
- 加速度运动/弹性运动/模拟重力场/拖拽运动
- 好用的ROS开发软件(持续更新~)
- 链接和二维码被微信拦截(被封锁、被屏蔽、被和谐)的最新解决方法——MaxJump
热门文章
- Github 上最大的开源算法库,还能学机器学习
- 微机----------------可编程并行接口8255A
- Java集合框架——一个编程小白的Java SE学习日志11【极客BOY-米奇】
- 【常见问题】云视通开放平台播放地址有效期
- 实践篇 | 构建下一代云上数据湖,助力车企数字化转型
- win10 WSL NAS搭建Time Machine服务器
- HTML5挂号,基于SSH的医院在线挂号
- web前端大作业`电影介绍网站设计——电影资讯博客(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板
- 国家标准团体标准答疑
- python网络爬虫笔记05:request进阶