㈠ 如何用matlab训练BP神经网络
net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes,
PR - Rx2 matrix of min and max values for R input elements.
Si - Size of ith layer, for Nl layers.
TFi - Transfer function of ith layer, default = 'tansig'.
BTF - Backprop network training function, default = 'trainlm'.
BLF - Backprop weight/bias learning function, default = 'learngdm'.
PF - Performance function, default = 'mse'.
然后train一下就可以了,具体其他参数查阅相关文档,一般有前四个参数就够了。
看一个简单的例子:
有两个向量或者矩阵,pn和tn:
net=newff(minmax(pn),[3,1],{'tansig','purelin'},'trainlm');
net.trainParam.epochs=1000;
net.trainParam.goal =1e-5;
net=train(net,pn,tn);
照葫芦画瓢就行,具体参数意义就不说了,自己查阅matlab帮助。
㈡ BP神经网络进行数字识别训练过程的原理
这段程序的流程就是1.随机产生一些带噪声的样本;2.用这些样本对神经网络进行训练;3.训练完成。训练好的网络就具有了数字识别的功能,你用一个带噪声的样本去检验它,其输出就是识别结果。给你提供一个车牌智能识别的matlab代码,你可以参考一下。
㈢ 自学bp神经网络要有什么基础
简介:BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer) 摘 要:BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定一组权值,将给定的目标输出直接作为线性方程的代数和来建立线性方程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。关键词:固定权值;gauss消元法;BP算法人工神经网络(artificial neural networks,ANN)系统是20世纪40年代后出现的,它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理、分布式信息存储、良好的自组织自学习能力等特点,在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其误差反向传播算法(Error Back-propagation Training,简称BP网络)可以逼近任意连续函数,具有很强的非线性映射能力,而且网络的中间层数、各层的处理单元数及网络的学习系数等参数可根据具体情况设定,灵活性很大,所以它在许多应用领域中起到重要作用。近年来,为了解决BP神经网络收敛速度慢、不能保证收敛到全局最小点,网络的中间层及它的单元数选取无理论指导及网络学习和记忆的不稳定性等缺陷,提出了许多改进算法。1 传统的BP算法简述BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。具体步骤如下:(1)初始化,随机给定各连接权[w],[v]及阀值θi,rt。(2)由给定的输入输出模式对计算隐层、输出层各单元输出bj=f(■wijai-θj) ct=f(■vjtbj-rt)式中:bj为隐层第j个神经元实际输出;ct为输出层第t个神经元的实际输出;wij为输入层至隐层的连接权;vjt为隐层至输出层的连接权。dtk=(ytk-ct)ct(1-ct) ejk=[■dtvjt] bj(1-bj)式中:dtk为输出层的校正误差;ejk为隐层的校正误差。(3)计算新的连接权及阀值,计算公式如下:vjt(n+1)=vjt(n)+琢dtkbj wij(n+1)=wij(n)+茁ejkaik rt(n+1)=rt(n)+琢dtk θj(n+1)=θj(n)+茁ejk 式中:琢,茁为学习系数(0<琢<1,0<茁<1)。(4)选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。传统的BP算法,实质上是把一组样本输入/输出问题转化为一个非线性优化问题,并通过负梯度下降算法,利用迭代运算求解权值问题的一种学习方法,但其收敛速度慢且容易陷入局部极小,为此提出了一种新的算法,即高斯消元法。
㈣ 关于MATLAB的bp神经网络模型的训练和验证
可能发生了过度拟合的问题,导致网络泛化能力不足。
你训练的样本波动性很强,但是你检验的样本波动性很弱,神经网络在适应变化极大的问题时,效果不太好。
泛化:当某一反应与某种刺激形成条件联系后,这一反应也会与其它类似的刺激形成某种程度的条件联系,这一过程称为泛化。在心理学心理咨询中所谓泛化指的是:引起求助者目前不良的心理和行为反应的刺激事件不再是最初的事件,同最初刺激事件相类似、相关联的事件(已经泛化),甚至同最初刺激事件不类似、无关联的事件(完全泛化),也能引起这些心理和行为反应(症状表现)。
㈤ 菜鸟求教,BP神经网络在训练时,我的输入P不止一组那该怎么训练呀。
神经网络训练本来就是多组数据进行的。一组输入对应一个输出,n组输入完成后得到n组输出,计算n组输出与n个实际值的误差,调整网络参数
㈥ 训练BP神经网络对函数进行拟合
去掉这一句:[Pn]=tramnmx(P,minp,maxp) 你这一句不开玩笑吗?
??? Error using ==> network.subsasgn>network_subsasgn at 535
"layers{1}.transferFcn" cannot be set to non-existing function "tasing'purelin".
这一错误是因为,你漏掉了逗号,而且tansig拼错了,应该是{'tansig','purelin'}
我直接帮你把代码全部改好吧,复制到m文件或命令窗口运行即可:
clc,clear;
P=-pi/2+0.1:pi/10:pi/2-0.1;
T=tan(P);
plot(P,T,'-*');
[Pn,pps]=mapminmax(P,0,1);%p归一化
[Tn,tps]=mapminmax(T,0,1);%t归一化
net=newff(minmax(Pn),[51],{'tansig','purelin'},'trainlm');
net.trainParam.show=10;
net.trainParam.lr=0.05;
net.trainParam.epochs=500;
net.trainParam.goal=0.01;
[net,tr]=train(net,Pn,Tn);
r=sim(net,Pn);
r=mapminmax('reverse',r,tps);%反归一化
plot(P,r,'-ro',P,T,'-b*');
㈦ BP人工神经网络方法
(一)方法原理
人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统。理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势。人工神经元是神经网络的基本处理单元,其接收的信息为x1,x2,…,xn,而ωij表示第i个神经元到第j个神经元的连接强度或称权重。神经元的输入是接收信息X=(x1,x2,…,xn)与权重W={ωij}的点积,将输入与设定的某一阈值作比较,再经过某种神经元激活函数f的作用,便得到该神经元的输出Oi。常见的激活函数为Sigmoid型。人工神经元的输入与输出的关系为
地球物理勘探概论
式中:xi为第i个输入元素,即n维输入矢量X的第i个分量;ωi为第i个输入与处理单元间的互联权重;θ为处理单元的内部阈值;y为处理单元的输出。
常用的人工神经网络是BP网络,它由输入层、隐含层和输出层三部分组成。BP算法是一种有监督的模式识别方法,包括学习和识别两部分,其中学习过程又可分为正向传播和反向传播两部分。正向传播开始时,对所有的连接权值置随机数作为初值,选取模式集的任一模式作为输入,转向隐含层处理,并在输出层得到该模式对应的输出值。每一层神经元状态只影响下一层神经元状态。此时,输出值一般与期望值存在较大的误差,需要通过误差反向传递过程,计算模式的各层神经元权值的变化量
(二)BP神经网络计算步骤
(1)初始化连接权值和阈值为一小的随机值,即W(0)=任意值,θ(0)=任意值。
(2)输入一个样本X。
(3)正向传播,计算实际输出,即根据输入样本值、互联权值和阈值,计算样本的实际输出。其中输入层的输出等于输入样本值,隐含层和输出层的输入为
地球物理勘探概论
输出为
地球物理勘探概论
式中:f为阈值逻辑函数,一般取Sigmoid函数,即
地球物理勘探概论
式中:θj表示阈值或偏置;θ0的作用是调节Sigmoid函数的形状。较小的θ0将使Sigmoid函数逼近于阈值逻辑单元的特征,较大的θ0将导致Sigmoid函数变平缓,一般取θ0=1。
(4)计算实际输出与理想输出的误差
地球物理勘探概论
式中:tpk为理想输出;Opk为实际输出;p为样本号;k为输出节点号。
(5)误差反向传播,修改权值
地球物理勘探概论
式中:
地球物理勘探概论
地球物理勘探概论
(6)判断收敛。若误差小于给定值,则结束,否则转向步骤(2)。
(三)塔北雅克拉地区BP神经网络预测实例
以塔北雅克拉地区S4井为已知样本,取氧化还原电位,放射性元素Rn、Th、Tc、U、K和地震反射
S4井位于测区西南部5线25点,是区内唯一已知井。该井在5390.6m的侏罗系地层获得40.6m厚的油气层,在5482m深的震旦系地层中获58m厚的油气层。取S4井周围9个点,即4~6线的23~25 点作为已知油气的训练样本;由于区内没有未见油的钻井,只好根据地质资料分析,选取14~16线的55~57点作为非油气的训练样本。BP网络学习迭代17174次,总误差为0.0001,学习效果相当满意。以学习后的网络进行识别,得出结果如图6-2-4所示。
图6-2-4 塔北雅克拉地区BP神经网络聚类结果
(据刘天佑等,1997)
由图6-2-4可见,由预测值大于0.9可得5个大封闭圈远景区,其中测区南部①号远景区对应着已知油井S4井;②、③号油气远景区位于地震勘探所查明的托库1、2号构造,该两个构造位于沙雅隆起的东段,其西段即为1984年钻遇高产油气流的Sch2井,应是含油气性好的远景区;④、⑤号远景区位于大涝坝构造,是yh油田的组成部分。
㈧ MATLAB BP神经网络训练
你的程序训练完毕后根本就没达到目标误差,就是说训练效果不好,不能进行预测,只有训练结果好了才能预测仿真,你再改一下隐含层神经元数或者训练和传递函数试试吧~
另外输入层的值可以归一化也可以不归一化,归一化后在仿真之前要反归一化。
㈨ BP神经网络(误差反传网络)
虽然每个人工神经元很简单,但是只要把多个人工
神经元按一定方式连接起来就构成了一个能处理复杂信息的神经网络。采用BP算法的多层前馈网络是目前应用最广泛的神经网络,称之为BP神经网络。它的最大功能就是能映射复杂的非线性函数关系。
对于已知的模型空间和数据空间,我们知道某个模型和他对应的数据,但是无法写出它们之间的函数关系式,但是如果有大量的一一对应的模型和数据样本集合,利用BP神经网络可以模拟(映射)它们之间的函数关系。
一个三层BP网络如图8.11所示,分为输入层、隐层、输出层。它是最常用的BP网络。理论分析证明三层网络已经能够表达任意复杂的连续函数关系了。只有在映射不连续函数时(如锯齿波)才需要两个隐层[8]。
图8.11中,X=(x1,…,xi,…,xn)T为输入向量,如加入x0=-1,可以为隐层神经元引入阀值;隐层输出向量为:Y=(y1,…,yi,…,ym)T,如加入y0=-1,可以为输出层神经元引入阀值;输出层输出向量为:O=(o1,…,oi,…,ol)T;输入层到隐层之间的权值矩阵用V表示,V=(V1,…,Vj,…,Vl)T,其中列向量Vj表示隐层第j个神经元的权值向量;隐层到输出层之间的权值矩阵用W表示,W=(W1,…,Wk,…,Wl)T,
其中列向量Wk表示输出层第k个神经元的权值向量。
图8.11 三层BP网络[8]
BP算法的基本思想是:预先给定一一对应的输入输出样本集。学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经过各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播。将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有神经元,获得各层的误差信号,用它们可以对各层的神经元的权值进行调整(关于如何修改权值参见韩立群着作[8]),循环不断地利用输入输出样本集进行权值调整,以使所有输入样本的输出误差都减小到满意的精度。这个过程就称为网络的学习训练过程。当网络训练完毕后,它相当于映射(表达)了输入输出样本之间的函数关系。
在地球物理勘探中,正演过程可以表示为如下函数:
d=f(m) (8.31)
它的反函数为
m=f-1(d) (8.32)
如果能够获得这个反函数,那么就解决了反演问题。一般来说,难以写出这个反函数,但是我们可以用BP神经网络来映射这个反函数m=f-1(d)。对于地球物理反问题,如果把观测数据当作输入数据,模型参数当作输出数据,事先在模型空间随机产生大量样本进行正演计算,获得对应的观测数据样本,利用它们对BP网络进行训练,则训练好的网络就相当于是地球物理数据方程的反函数。可以用它进行反演,输入观测数据,网络就会输出它所对应的模型。
BP神经网络在能够进行反演之前需要进行学习训练。训练需要大量的样本,产生这些样本需要大量的正演计算,此外在学习训练过程也需要大量的时间。但是BP神经网络一旦训练完毕,在反演中的计算时间可以忽略。
要想使BP神经网络比较好地映射函数关系,需要有全面代表性的样本,但是由于模型空间的无限性,难以获得全面代表性的样本集合。用这样的样本训练出来的BP网络,只能反映样本所在的较小范围数据空间和较小范围模型空间的函数关系。对于超出它们的观测数据就无法正确反演。目前BP神经网络在一维反演有较多应用,在二维、三维反演应用较少,原因就是难以产生全面代表性的样本空间。