MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   深度神经网络/深度学习 (https://www.labfans.com/bbs/forumdisplay.php?f=45)
-   -   bp神经网络为什么每次训练结果不一样 (https://www.labfans.com/bbs/showthread.php?t=8256)

379848134 2009-05-11 17:48

bp神经网络为什么每次训练结果不一样
 
如题,我用的是三层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)

karl_wang 2009-05-11 20:31

回复: bp神经网络为什么每次训练结果不一样
 
你的程序运行不了,我的版本是7.1~!

winner007 2009-05-11 22:16

回复: bp神经网络为什么每次训练结果不一样
 
应该是bp神经网络每次初始化权值是随机导致的

倏忽 2009-05-12 10:42

回复: bp神经网络为什么每次训练结果不一样
 
同意楼上的看法,程序没什么问题。如果偏差过大,我感觉隐含层节点数太小了。

空军中尉 2009-09-22 08:43

回复: bp神经网络为什么每次训练结果不一样
 
因为在训练过程有随机数的产生

neu_cnlj 2010-01-08 15:32

回复: bp神经网络为什么每次训练结果不一样
 
[QUOTE=379848134;27646]如题,我用的是三层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)[/QUOTE]

在newff函数建立网络结构的时候,初始的网络参数都是随机产生的!只要达到收敛,网络参数不唯一,所以每次训练结果肯定不一样,但是对于网络是没影响的。


所有时间均为北京时间。现在的时间是 05:10

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.