Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 人工智能 > 深度神经网络/深度学习
深度神经网络/深度学习 A discussion board for Deep Neural Network|Deep Learning.
回复
 
主题工具 显示模式
旧 2009-05-11, 17:48   #1
379848134
初级会员
 
注册日期: 2009-05-11
年龄: 38
帖子: 1
声望力: 0
379848134 正向着好的方向发展
默认 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)
379848134 当前离线   回复时引用此帖
旧 2009-05-11, 20:31   #2
karl_wang
版主
 
注册日期: 2008-12-03
年龄: 41
帖子: 43
声望力: 17
karl_wang 正向着好的方向发展
默认 回复: bp神经网络为什么每次训练结果不一样

你的程序运行不了,我的版本是7.1~!
karl_wang 当前离线   回复时引用此帖
旧 2009-05-11, 22:16   #3
winner007
初级会员
 
注册日期: 2009-05-11
帖子: 2
声望力: 0
winner007 正向着好的方向发展
默认 回复: bp神经网络为什么每次训练结果不一样

应该是bp神经网络每次初始化权值是随机导致的
winner007 当前离线   回复时引用此帖
旧 2009-05-12, 10:42   #4
倏忽
初级会员
 
注册日期: 2009-03-05
年龄: 41
帖子: 17
声望力: 17
倏忽 正向着好的方向发展
默认 回复: bp神经网络为什么每次训练结果不一样

同意楼上的看法,程序没什么问题。如果偏差过大,我感觉隐含层节点数太小了。
__________________
缘起,在人群中,我看见你
缘灭,我看见你,在人群中
倏忽 当前离线   回复时引用此帖
旧 2009-09-22, 08:43   #5
空军中尉
初级会员
 
注册日期: 2009-09-21
年龄: 38
帖子: 2
声望力: 0
空军中尉 正向着好的方向发展
默认 回复: bp神经网络为什么每次训练结果不一样

因为在训练过程有随机数的产生
空军中尉 当前离线   回复时引用此帖
旧 2010-01-08, 15:32   #6
neu_cnlj
初级会员
 
注册日期: 2008-11-26
年龄: 42
帖子: 6
声望力: 0
neu_cnlj 正向着好的方向发展
默认 回复: bp神经网络为什么每次训练结果不一样

引用:
作者: 379848134 查看帖子
如题,我用的是三层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)
在newff函数建立网络结构的时候,初始的网络参数都是随机产生的!只要达到收敛,网络参数不唯一,所以每次训练结果肯定不一样,但是对于网络是没影响的。
neu_cnlj 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 19:57


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