1、BP神经网络是一种前馈型网络(各神经元接受前一层的输入,并输出给下一层,没有反馈),分为input层,hide层,output层

2、BP神经网络的步骤:

1)创建一个神经网络:newff

a.训练样本:归一化(premnmx ,postmnmx ,tramnmx)

b.确定节点数:输出层的节点数可直接获得

c.确定各层神经元的激活函数

常见的激活函数:purelin:线性/logsig:对数S型/tansig:正切S型

d.确定训练函数

traingd :梯度下降BP训练函数/traingdx :梯度下降自适应学习率训练函数

%Format:net = newff ( A, B, {C} ,‘trainFun’)

A:n×2的矩阵,第i行元素为输入信号xi的最小值和最大值

B:k维行向量,其元素为网络中各层节点数

C:k维字符串行向量,每一分量为对应层神经元的激活函数

trainFun :为学习规则采用的训练算法

2)学习:train

学习是一个调整权重的过程,使得通过神经网络的输出不断逼近应有的输出

网络配置参数

net.trainparam.goal:神经网络训练的目标误差

net.trainparam.show:显示中间结果的周期

net.trainparam.epochs:最大迭代次数

net.trainParam.lr:学习率

%Farmat:net=train( net, X, Y )

X:网络实际输入

Y:网络应有输出

3)仿真模拟

选择测试集X进行模拟

%Farmat:Y=sim(net,X)

3、举例

下面将举大量的例子来说明BP神经网络的应用。

1)对函数f(x)=sinx(0=<x<=pi/2)进行逼近

 %%%使用BP神经网络逼近函数cos(x)%%%
clc;clear;
x=:0.1:1.5;%训练样本
y=sin(x);%真实的输出值
net=newff(minmax(x),[,],{'logsig','logsig'});%建立bp神经网络
net.trainParam.show = ;
net.trainParam.lr = 0.01;
net.trainParam.goal = 0.0001;
net.trainParam.epochs = ;
net=train(net,x,y);%训练样本
testx=0.01:0.1:1.51;
testy=sim(net,testx);%测试
plot(x,y,testx,testy,'r');

2)对两种蠓虫(Af 与Apf)进行鉴别:

依据的资料是触角和翅膀的长度,已经测得了9 支Af 和6 支Apf 的数据如下:
Af: (1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),
(1.48,1.82),(1.54,1.82),(1.56,2.08).
Apf: (1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).

Q:对触角和翼长分别为(1.24,1.80),(1.28,1.84)与(1.40,2.04)的3 个标本加以识别。

 clear
p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;
1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];
p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00
1.28,2.00;1.30,1.96];
p=[p1;p2]';
pr=minmax(p);
net=newff(pr,[,],{'logsig','logsig'});
net.trainParam.show = ;
net.trainParam.lr = 0.05;
net.trainParam.goal = 1e-;
net.trainParam.epochs = ;
net = train(net,p,goal);
x=[1.24 1.80;1.28 1.84;1.40 2.04]';
y0=sim(net,p)
y=sim(net,x)

数模学习笔记(五)——BP神经网络的更多相关文章

  1. 【学习笔记】BP神经网络

    转自 huaweizte123的CSDN博客  链接 https://blog.csdn.net/huaweizte123/article/details/78803045 第一步.向前传播得到预测数 ...

  2. 数模学习笔记(四)——AHP

    1.层次分析法是对复杂.较为模糊的问题作出决策的简易方法. 2.步骤: (i)建立递阶层次结构模型:最高层(目标层),中间层(准则层),最底层(措施层) (ii)构造出各层次中的所有判断矩阵 各准则在 ...

  3. python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍

    python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...

  4. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...

  5. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  6. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  7. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  8. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  9. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. Android Bluetooth Stack: Bluedroid(五岁以下儿童):The analysis of A2DP Source

    1. A2DP Introduction The Advanced Audio Distribution Profile (A2DP) defines the protocols and proced ...

  2. MVC 6 写法

    MVC 6 一些不晓得的写法 今天在看 Scott Guthrie 的一篇博文<Introducing ASP.NET 5>,在 MVC 6 中,发现有些之前不晓得的写法,这边简单记录下, ...

  3. 初创互联网公司简明创业指南 - YC新掌门Sam Altman

    本文只是一个创业指南的简明版 - 更详细的版本请查看:http://startupclass.samaltman.com 创业之前,你更应该去拥有一个好的创意,而不是一个公司.如果开始前你拥有一个好的 ...

  4. 讲故事的人写的谈判手册——Leo锦书64

    正如其名称所暗示这本书"谈判无处不在".从决定谈判的成功或失败的因素一个不同的观点,测量中详细给出的同一时间. 图书出版不错,这是阅读的样车.阅读收获压力较小的方式.   书能给读 ...

  5. ArcGIS课程:表面数据转换成矢量数据

    虽然TIN (TIN) 和 terrain 数据收集被认为是载体表面.但它们实际上包括基于其他信息元素.并且该信息是在图象点.线或多边形原始格这可能是更实用的公式.在 ArcGIS 在,你可以很容易的 ...

  6. C语言生成2000w行数据

    最近一直抽空学习shell,脚本语言看多了多多少少有些蛋疼不适,所以捡起以前遇到的一个C语言的问题看看. 原先应该是在C++吧关注的一个帖子,楼主为了测试数据库性能需要如下形式的数据要求: 字符串长度 ...

  7. [Android 性能优化系列]降低你的界面布局层次结构的一部分

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...

  8. [译]Java 垃圾回收的监控和分析

    说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi 在这个系列的Java垃圾回收教程中,我们将看到可用于垃圾 ...

  9. 在openwrt上编译最简单的一个ipk包文件

    1 什么是opkg Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准.常用于路由.交换机等嵌入式设备中,用来管理软件包的安装升级与下载. opkg updat ...

  10. ASP.NET MVC进阶

    ASP.NET MVC进阶 一.ASP.NET MVC中的AJAX应用 首先,在ASP.NET MVC中使用自带的ajax功能,必须要导入2个js文件(顺序不能颠倒): ASP.NET MVC提供了2 ...