matlab - 中bp神经网络算法应该怎么实现

来源:趣味经验馆 2.89W

BP神经网络是最基本、最常用的神经网络,Matlab有专用函数来建立、训练它,主要就是newff()、train()、sim()这三个函数

BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数、离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法。

方法

这里以一个普遍实用的简单案例为例子进行编程的说明。

额。。。 一种启发式的改进就是,为学习速率选用自适应值,它依赖于连续迭代步骤中的误差函数值。 自适应调整学习速率的梯度下降算法,在训练的过程中,力图使算法稳定,同时又使学习的步长尽量地大,学习速率则是根据局部误差曲面作出相应的调整。

假设一组x1,x2,x3的值对应一个y值,有2000组这样的数字,我们选择其中1900组x1,x2,x3和y作为样本,其余100组x1,x2,x3作为测试数据来验证。

1.初始权值不一样,如果一样,每次训练结果是相同的 2.是 3.在train之前修改权值,IW,LW,b,使之相同 4.取多次实验的均值 一点浅见,仅供参考

matlab 中bp神经网络算法应该怎么实现

首先需要读取这些数据,并把数据赋值给input 和 output 。

clear; %输入数据矩阵 p1=zeros(1,1000); p2=zeros(1,1000); for i=1:1000 p1(i)=rand; p2(i)=rand; end p=[p1;p2]; %目标(输出)数据矩阵 t = cos(pi*p1)+sin(pi*p2); %对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理 [pn, inputStr]

我是把数据存储在excel表中,所以用xlsread函数来读取数据。读取出来的数据是2000*4的矩阵。

matlab中BP神经网络的训练算法(traingd)与学习算法(learngd)的具体关系? 两者有什么区别?如何共同实现神经网络的训练的? 两者有什么区别?如何共同实现神经网络的

matlab 中bp神经网络算法应该怎么实现 第2张

将样本数据进行归一化处理。

lr=0.05; %lr为学习速率; err_goal=0.1; %err_goal为期望误差最小值 max_epoch=15000; %max_epoch为训练的最大次数; a=0.9; %a为惯性系数 Oi=0; Ok=0; %置隐含层和输出层各神经元输出初值为0 这些初始参数是谁提供给你? 调整一下这些参数看看.

matlab 中bp神经网络算法应该怎么实现 第3张

初始化网络结果,设置参数,并用数据对网络进行训练。

第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set 找到。这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分

newff函数是给出了最简单的设置,即输入样本数据,输出样本数据和隐含层节点数;epochs是设置迭代次数;lr是设置学习率;goal是设置目标值。

如果你的式子写对了,那出来的结果肯定和sim函数输出的结果是一样的。 % 计算S1与S2层的输出A1=tansig(W1*p,B1);A2=purelin(W2*A1,B2);隐层为tansig函数,输出层简单的线性相加,再附上阈值,不可能会错的。sim函数的原理也就是如此。

matlab 中bp神经网络算法应该怎么实现 第4张

设置好参数,需要将预测数据进行归一化处理,然后将预测结果输出,并将输出的结果进行反归一化处理,神经网络就完成了。BPoutput为预测结果。

你提供的代码是一个基本的BP神经网络训练过程。一般都是用GA训练,之后再用改进动量法继续训练,直至最后达到目标。 遗

matlab 中bp神经网络算法应该怎么实现 第5张

程序运行时显示的网络结构和运行过程如下图。

使用神经网络工具箱可以非常简便地实现网络建立和训练,实例代码如下: %% BP算法function Out=bpnet(p,t,p_test)%p,t为

matlab 中bp神经网络算法应该怎么实现 第6张

如果以后需要用到已训练好的网络可以把训练好的网络储存起来,下次可以直接进行预测,具体方法见下图。

如果你的式子写对了,那出来的结果肯定和sim函数输出的结果是一样的。 % 计算S1与S2层的输出A1=tansig(W1*p,B1);A2=purelin(W2*A1,B2);隐层为tansig函数,输出层简单的线性相加,再附上阈值,不可能会错的。sim函数的原理也就是如此。

matlab 中bp神经网络算法应该怎么实现 第7张

扩展阅读,以下内容您可能还感兴趣。

matlab遗传算法改进bp神经网络

你提供的代码是一个基本的BP神经网络训练过程。一般都是用GA训练,之后再用改进动量法继续训练,直至最后百达到目标。

遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(度population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。

如何用MATLAB的神经网络工具箱实现三层BP网络

使用神经网络工具箱可以非常简便地实现网络建立和训练复,实例代码如下:%%制 BP算法

function Out=bpnet(p,t,p_test)

%p,t为样本需要提前组织好

global S1

net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm');    %trainlm训练函数最有效

%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法

net.trainParam.epochs=1000;

net.trainParam.goal=0.00001;

net.trainParam.lr=0.01;

net.trainParam.showWindow = false;      %阻止训知练窗口的弹出

net.trainParam.showCommandLine = false; %阻止训练窗口的弹出

net=train(net,p,t);

Out=sim(net,p_test);

end

上面的代码不完道整,完整的带训练样本数据的程序见附件。

matlab 实现BP神经网络 怎样根据隐含层和输入层的权值阈值得到输入到输出的计算公式

如果你百的式子写对了,那出来的结果肯定和sim函数输度出的结果是一样的。

% 计算S1与S2层的输出

A1=tansig(W1*p,B1);

A2=purelin(W2*A1,B2);

隐层为tansig函数,输出层简单的知线性相加,再附上阈值,不可能会错的。sim函数的原道理也就是如此。更多追问追答追问这里w1是权值,B1是阈值?w2是权值,B2是阈值?这样的话是说A2与sim(net,P)是相等的?可是算出来还是不一样的。追答注意阈值是负号,或者你可以认为b为正数,而x0=-1!追问这里x0是什么? 或者我把文件发给你看看或者QQ讨教一下。按照输入层到隐含层的权值乘以输入值加阈值放在tansig函数中,然后隐含层到输出层的权值乘以隐含层的输出加阈值,应该就是输出层的输出,可是结果总是不对,但是sim(net,P)的结果是对的,按照你的所写,A2就应该等于输出层输出吧,结果还是sim(net,P)不一样。

能得到你的帮助不胜感激。追答就是阈值不是加,而是减。再试试。

求基于BP神经网络实现汽车牌照识别的matlab代码或者是汽车牌照识别系统(用matlab写的,有用到BP神经网络

这是基于模板匹配法的车牌识别

基于BP神经网络的车牌识别程序网上有

追问有是有,但找不到可以成功运行的。您有资源吗?可以发一个给我吗?我是matlab小白,不会修改他的错误。帮帮我吧(*/∇\*)!好可惜我选的不是模版匹配不然你这个程序就很棒!或者是您可以把这个模板匹配的源码资源共享给我吗?我可以留着做个对比资料

您好,请问您有基于BP神经网络算法的车牌识别的程序代码吗?用matlab可以运行的那种。

1、对样本集进行归一化

2、创建BP神经网络

3、设置网络的训练参数

4、把样本输入BP网络进行训练

5、把代识别的样本输入样本进行训练得到相应的结果,并输出。

这就是构建BP神经网络的大致步骤更多追问追答追问您好,有没有这种程序源码资源可以共享给我。最近就要交了,找了很久matlab基于BP神经网络的车牌识别的源码,但运行的时候总是报错。您好,有没有这种程序源码资源可以共享给我。最近就要交了,找了很久matlab基于BP神经网络的车牌识别的源码,但运行的时候总是报错。追答这个又不难,你是大学生,多看一下书,你也会写。追问但是我老师说在一周内就要交程序成功运行的视屏录制给她,时间太赶了

热门标签