先用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}的实际意思。
楼主的程序最好全部贴出,数据也贴出 这样才能知道它的具体意思。
纯手打
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)