Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-05-11
年龄: 38
帖子: 1
声望力: 0 ![]() |
![]()
如题,我用的是三层BP神经网络,同样的语句,在MATLAB工作界面每次训练结果不一样,不知道为什么?望高手帮我解答!谢谢!
![]() ![]() ![]() 下面是我的程序: clear all % newff——生成一个新的前向神经网络 % train——对 BP 神经网络进行训练 % sim——对 BP 神经网络进行仿真 % 定义训练样本 % P为输入矢量 P=[ 0.9048 0.3843 0.0786 0.7434 0.4639 0.6454 0.3651 0.7755 0.4339 0.8790 0.2597 0.6142 0.0279 0.0321 0.1560 0.7589 0.8566 0.1540 0.9088 0.3959 0.7791 0.5917 0.0159 0.0013 0.1682 0.8232 0.0071 0.8534 0.1650 0.0167 0.4252 0.3944 0.2276 0.3114 0.0070 0.5242 0.0940 0.1935 0.4940 0.8934 0.9593 0.6144 0.8823 0.9551 0.1928 0.1678 0.8414 0.9798 0.0915 0.7809 0.9458 0.0753 0.4468 0.4257 0.0630 0.2755 0.1504 0.3064 0.6532 0.1679 0.2747 0.5175 0.2851 0.0120 0.4664 0.1832 0.0267 0.5155 0.1912 0.2841 0.9422 0.9674 0.0184 0.4881 0.0343 0.4249 0.6242 0.8306 0.4189 0.0651 0.8672 0.8494 0.9905 0.4193 0.9706 0.3988 0.4552 0.2914 0.7643 0.5938 0.9460 0.0301 0.1373 0.0844 0.1221 0.5681 0.9795 0.6954 0.1372 0.7212 0.2770 0.2448 0.7609 0.6607 0.3298 0.9518 0.2740 0.5428 0.0956 0.1889 0.8227 0.5928 0.6254 0.8962 0.0385 0.2683 0.2702 0.1291 0.9124 0.7335 0.9566 0.7645 0.5851 0.2067 0.6189 0.1482 0.2159 0.8937 0.1552 0.3242 0.1300 0.2966 0.1206 0.1216 0.2417 0.7207 0.1848 0.7670 0.8952 0.2688 0.2905 0.4965 0.2372]; % T为目标矢量 T=[1 0 0 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0 0; 0 0 0 0 1 0 0 0 0 0; 0 0 0 0 0 1 0 0 0 0; 0 0 0 0 0 0 1 0 0 0; 0 0 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 0 0 0 0]'; threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1]; inputNums=13; %输入层节点 outputNums=25; %输出层节点 hideNums=10; %隐层节点数 net=newff(threshold,[22,10],{'tansig','logsig'},'trainlm'); % 创建前向BP网络;传递函数--tansig:S型的正切函数;logsig:S型的对数函数;trainlm:训练函数; net.trainParam.show=25; % 显示两次之间的训练步数 net.trainParam.lr=0.05; a=0.5; %BP优化算法的一个设定值,对上组训练的调整值按比例修改 % 学习速率 net.trainParam.max_fail=20 % 确认失败的最大次数 net.trainParam.epochs=200; % 最大训练步数 net.trainParam.min_grad=1e-7 % 最小性能梯度 net.trainParam.goal=0.001; % 性能参数,训练目标 net=train(net,P,T); % 调用train函数训练 Y=sim(net,P) |
![]() |
![]() |
![]() |
#2 |
版主
注册日期: 2008-12-03
年龄: 41
帖子: 43
声望力: 17 ![]() |
![]()
你的程序运行不了,我的版本是7.1~!
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-05-11
帖子: 2
声望力: 0 ![]() |
![]()
应该是bp神经网络每次初始化权值是随机导致的
|
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2009-03-05
年龄: 41
帖子: 17
声望力: 17 ![]() |
![]()
同意楼上的看法,程序没什么问题。如果偏差过大,我感觉隐含层节点数太小了。
__________________
缘起,在人群中,我看见你 缘灭,我看见你,在人群中 |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2009-09-21
年龄: 38
帖子: 2
声望力: 0 ![]() |
![]()
因为在训练过程有随机数的产生
|
![]() |
![]() |
![]() |
#6 | |
初级会员
注册日期: 2008-11-26
年龄: 42
帖子: 6
声望力: 0 ![]() |
![]() 引用:
|
|
![]() |
![]() |