数模学习笔记(五)——BP神经网络

 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)进行逼近

 

 1 %%%使用BP神经网络逼近函数cos(x)%%%
 2 clc;clear;
 3 x=0:0.1:1.5;%训练样本
 4 y=sin(x);%真实的输出值
 5 net=newff(minmax(x),[10,1],{'logsig','logsig'});%建立bp神经网络
 6 net.trainParam.show = 50;
 7 net.trainParam.lr = 0.01;
 8 net.trainParam.goal = 0.0001;
 9 net.trainParam.epochs = 500;
10 net=train(net,x,y);%训练样本
11 testx=0.01:0.1:1.51;
12 testy=sim(net,testx);%测试
13 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 个标本加以识别。

 1 clear
 2 p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;
 3 1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];
 4 p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00
 5 1.28,2.00;1.30,1.96];
 6 p=[p1;p2]';
 7 pr=minmax(p);
 8 net=newff(pr,[3,2],{'logsig','logsig'});
 9 net.trainParam.show = 10;
10 net.trainParam.lr = 0.05;
11 net.trainParam.goal = 1e-10;
12 net.trainParam.epochs = 50000;
13 net = train(net,p,goal);
14 x=[1.24 1.80;1.28 1.84;1.40 2.04]';
15 y0=sim(net,p)
16 y=sim(net,x)

 

 

转载于:https://www.cnblogs.com/wl142857/p/3182799.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值