BP神经网络学习

本文详细介绍了BP神经网络的工作原理,包括前向传播和反向传播两个阶段,以及网络初始化、权值调整的具体流程。重点讲解了net、sim、init、sign、tansig、purelin和newp等关键函数的功能和使用示例,帮助读者深入理解BP神经网络的实现和操作。
摘要由CSDN通过智能技术生成

基本介绍

BP神经网络是一种多层前馈网络,可以进行学习和存储输入输出映射关系,不需要去建立数学方程式,是一种常用的神经网络模型

BP神经网络的过程

BP神经网络的过程主要分为两个阶段,第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。
在这里插入图片描述

BP网络运行的具体流程

第一步:网络初始化
第二步:随机选取
第三部:隐含层计算
第四步:求偏导数
第五步:修正权值
第六步:修正权值
第七部:修正权值
第八步:计算全局误差
第九步:判断模型合理性
在这里插入图片描述
在这里插入图片描述

函数介绍

net函数

net = newff(minmax§,[隐层的神经元的个数,输出层的神经元的个数],{隐层神经元的传输函数,输出层的传输函数},‘反向传播的训练函数’),其中p为输入数据,t为输出数据。

sim函数

sim执行simulink模型用的命令 相当于windows里的run命令。
sim函数用来运行Simulink模型。需要注意的是,用户无法控制其仿真过程(例如暂停、继续),一旦运行就会直到达到结束条件为止——这一点和通过模型窗口界面运行仿真不同。
调用格式:
[t,x,y] = sim(model,timespan,options,ut);
[t,x,y1, y2, …, yn] = sim(model,timespan,options,ut);
输入参数:
model:模型的名字,用单引号括起来(注意不带扩展名.mdl);
timespan:指定仿真时间范围,可以有几种情况:
标量tFinal,指定仿真结束时间。这种情况下开始时间为0;
两个元素的向量[tStart tFinal],同时指定开始时间和结束时间;
向量[tStart OutputTimes tFinal],除起止时间外,还指定输出时间点(通常输出时间t会包含更多点,这里指定的点相当于附加的点)。
options:指定仿真选项,是一个结构体,该结构体通过simset创建,包括模型求解器、误差控制等都可以通过这个参数指定(不修改模型,但使用和模型对话框里设置的不同选择)。

init函数

功能:
在matlab中init 用于初始化神经网络。
语法:
net = init(net)
性质:
init(net)根据最新的网络初始化函数返回神经网络的权值和误差,其结果由net.initFcn,和参数值,net.initparam影响。
示例:
在这里,我们创建一个双输入(范围在0到1,和-2到2)单神经元感知器。而一旦建立了模型我们就可以得到其权值和阈值。
net = newp([0 1;-2 2],1);
net.iw{1,1}
net.b{1}
对感知器进行训练,改变其权值和阈值。
P = [0 1 0 1; 0 0 1 1];
T = [0 0 0 1];
net = train(net,P,T);
net.iw{1,1}
net.b{1}
重新将权值和阈值初始化。
net = init(net);
net.iw{1,1}
net.b{1}
上面最后的命令已经将权值和阈值重新归零,这就是 init函数在感知器中的应用。

sign函数

sign(x):符号函数 (Signum function)。
当x<0时,sign(x)=-1;
当x=0时,sign(x)=0;
当x>0时,sign(x)=1。

tansig函数

tansig函数是神经网络层传递函数。传递函数将神经网络层的净输入转换为净输出。
tansig()使用格式:
A = tansig(N,FP) %净输出
N——净输入,s-by-q矩阵(列)向量
FP——函数的参数结构(可以忽略)

purelin函数

线性传递函数 y=a*x+b;

newp函数

作用:构造感知器模型。
句法:net=newp[PR,S,TF,LF]
解释:PR:Rx2的输入向量最大值和最小值构成的矩阵,即每一行的最大值最 小值构成一行。
S:构造的神经元的个数
TF:激活函数的设置,可设置为hardlim函数或者hardlins函数,默认为 hardlim函数
LF:学习修正函数的设置,可设置为learnp函数或者learnpn函数,默认 为learnp函数(关于权值误差修正函数learnp函数的使用可看我的上 篇博文learnp)
net:生成的感知器网络

代码及结果

代码

% BP网络
% BP神经网络的构建
net=newff([-1 2;0 5],[3,1],{
   'tansig','purelin'},'traingd')
%net = newff(minmax(p),[隐层的神经元的个数,输出层的神经元的个数],{
   隐层神经元的传输函数,输出层的传输函数},'反向传播的训练函数'),其中p为输入数据,t为输出数据

net.IW{
   1}
net.b{
   1}

p=[1;2];
a=sim(net,p)
%sim执行simulink模型用的命令 相当于windows里的run命令
net=init(net);
net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值