文档库 最新最全的文档下载
当前位置:文档库 › BP网络权值和阀值

BP网络权值和阀值

想请问一下一个四层BP网怎么显示下面参数:
输入到隐层权值:
第一隐层阈值:
第一隐层到第二隐层权值(需要修改):
第二隐层层阈值:
第二隐层到输出层权值(需要修改):
输出层层阈值:

我只知道三层网络怎么设置:
输入到隐层权值: w1=net.iw{1,1}
隐层阈值: theta1=net.b{1}
隐层到输出层权值: w2=net.lw{2,1};
输出层阈值:theta2=net.b{2}


w1=net.iw{1,1}%输入到隐层权值:
theta1=net.b{1}%第一隐层阈值:
w2=net.lw{2,1};%第一隐层到第二隐层权值:
theta2=net.b{2}%第二隐层层阈值:
w3=net.lw{3,2};%第二隐层到输出层权值:
theta3=net.b{3}%输出层层阈值:
已解决,谢谢~


我要建立的模型训练样本很多,一个一个输入P=[ ]是不可能的,应该怎么调用这些数据?把EXCEL放入work文件夹里么?怎么写程序呢?


A=xlsread('excel文件名','sheet名');
其中若未给出'sheet名',就默认是'sheet1'
注意要将excel文件放在当前目录下或指出具体路径
函数将数据存放在 矩阵A 中(但不会把文本格式的字也放在A中,例如每一列有一列名,函数不会把列名也读到A中,如果想读取列名,可指定另外的输出变量,具体见matlab的帮助)。




%%%训练前后bp网络仿真结果分析
clc;
clear;
%设定初始值和终值,终值为一cos序列
p=[-1:0.05:1];
t=0:0.314:6.28*2;
t=cos(t);
%建立相应的BP网络
net=newff(minmax(p),[10,1],{'tansig','purelin'},'trainlm');
%对没有训练的网络进行仿真
y1=sim(net,p);
%训练网络
net.trainParam.epochs=50;
net.trainParam.goal=0.01;
net=train(net,p,t);
%对训练后的网路进行仿真
y2=sim(net,p);
% 画出各种情况
% plot(p,t,'r-')
% hold on;
% plot(p,y1,'g-')
% plot(p,y2,'b-') ;
% plot(p,t,'-',p,y1,'--',p,y2,'--')
legend('目标值','未训练结果','训练结果');



我用MATLAB仿真基于LM算法的BP神经网络训练,为什么学习率、激发函数等参数都不改变的情况下,每次训练结果的误差及训练次数都不一样呢?是否因为是初始阈值等产生的?要怎么样才能解决这个问题?另外,若改变隐层节点数,也要求在同样的条件下进行网络性能对比,要怎么做?谢谢

问题找到了,可能是归一化公式premnmx中min和max的问题,很多文献中都说测试数据的归一化也用训练数据归一化时得出的min和max值,用了tramnmx导致测试数据输出结果错的离谱。在现在的程序中不使用tramnmx,而是在训练时,用premnmx归一化,训练网络的误差达到1e-5,再对测试数据用premnmx进行归一化得出另一组min和max值,通过训练好的网络进行结果运算后,再用postmnmx(A2,mint,maxt)【mint和maxt为测试数据归一化时得出

的最小最大值;A2为测试输入通过网络得出的输出】对输出进行处理后,得出的结果与测试集的期望输出比较,但误差并未达到1e-5,但是误差绝对值都小于1,不知有何问题?
1、训练数据回代入网络测试,比上面说的另外测试数据测试误差要小很多,虽然也没有达到1e-5这么小,不知为何?
2、[net,tr]=train(net,Pn,Tn); %训练后,网络误差达到1e-5停止
A=sim(net,Pn);
E=A-Tn;
执行后,为何E中每个值并不是1e-5的数量级,最小的为0.0001,最大的可以达到0.0191呢?
谢谢


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

训练误差是否降到一定范围内,比如1e-3,
将训练样本回代结果如何,
训练样本进行了预处理,比如归一化,而测试样本未进行同样的处理

这样的归一化似有问题,我也认为“测试数据的归一化也用训练数据归一化时得出的min和max值”,
请参考这个帖子https://www.wendangku.net/doc/6615868599.html,/thread-27021-1-1.html
测试数据带入训练好的神经网络误差当然不会达到1e-5,这是预测啊。
但将训练数据带入误差必然是1e-5,算法终止就是因为达到这个误差才终止,这个误差是由训练数据的输入、输出以及神经网络的权值、激活函数共同决定的,神经网络训练完后,权值、激活函数定了,同样的数据再代入神经网络,误差会不等于1e-5?
第二个问题:不可能每个值都达到1e-5,1e-5是MSE(mean square error),它们的平方和除以总数再开方,mse(E)必为1e-5
另外,LM算法虽然训练最快,但是预测精度一般不好,不如gdm,gdx











相关文档