MATLAB中BP神经网络的训练算法具体是怎么样的

MATLAB中BP神经网络的训练算法具体是怎么样的,第1张

先用newff函数建立网络,再用train函数训练即可。

1)正向传播:输入样本->输入层->各隐层(处理)->输出层

注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程)

2)误差反向传播:输出误差(某种形式)->隐层(逐层)->输入层

其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。

BP算法实现步骤(软件):

1)初始化

2)输入训练样本对,计算各层输出

3)计算网络输出误差

4)计算各层误差信号

5)调整各层权值

6)检查网络总误差是否达到精度要求

满足,则训练结束;不满足,则返回步骤2)

注:改进算法—增加动量项、自适应调整学习速率(这个似乎不错)及引入陡度因子。

%% BP算法

function Out=bpnet(p,t,p_test)

S1=5; 

%threshold=[0 pi/2;0 pi/2];

%net=newff(threshold,[5,2],{'tansig','purelin'},'trainlm');

net=newff(minmax(p),[S1,2],{'tansig','purelin'},'trainlm');

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

nettrainParamepochs=1000;

nettrainParamgoal=000001;

nettrainParamlr=001;

nettrainParamshowWindow = false;      %阻止训练窗口的d出

nettrainParamshowCommandLine = false; %阻止训练窗口的d出

net=train(net,p,t);

Out=sim(net,p_test);

end

上次那个问题也是你问的吧?

把上次产生的p和t,用mapminmax函数进行归一化后,传递给这个函数即可,测试的p也可以现在就加进去。

BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

贴出的代码比较少,从贴出的代码来看,trtestMask{1}的{1}代表trtestMask是一个cell格式,{1}是cell中的第一个元素。

因为matlab的工具箱中,通常会储存很多信息,信息格式不同,就要用cell来存储,

楼主可以打开trtestMask来看看其它trtestMask{2},trtestMask{3}里存的什么信息,可能能推出trtestMask{1}的实际意思。

楼主的程序最好全部贴出,数据也贴出 这样才能知道它的具体意思。

纯手打

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/11675876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存