如题,我用的是三层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)