Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-05-08
年龄: 37
帖子: 2
声望力: 0 ![]() |
![]()
我的毕业设计老师让用神经网络,但是老师自己也不知道。我也是刚学。写出来的程序很不稳定。我也不知道要怎么办。
问题有:1,对于每一组数据结果总是差很多,有的时候说Maximum MU reached,我不知道MU 是什么,有的时候说梯度达到最小,有的时候说矩阵达到奇异化(Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.122506e-017. > In trainlm at 318 In network.train at 278)。可是我不知道要怎么改程序,不知道是什么问题。 2,我用三组数据进行训练,可是误差很大,有的组的数据MSE误差达到0.001,有的组却又12.334,差别这么大,崩溃了。 现在介绍一哈我的系统,输入为两个节点(温度和黏度),输出一个节点(液体含油量这个是固定的,别的都是我自己写的。 另外参数要怎么选择我也不是很明白,还有就是输入数据和输出数据我也不是很明白要怎么选择。因为我看的书也没有介绍要怎么选择。 源代码如下:P1=[32 32 32 26 26 8 8 16 16 22 12 20 20 30 30 30 10 10 14 14 18 28 24]; P2=[80 88 94 84 94 82 86 84 94 86 90 88 94 84 90 94 88 96 82 90 90 90 84]; T=[34.9 30.8 25.4 36.4 29.7 49.1 48.0 43.0 39.1 38.0 43.8 38.5 35.4 33.6 29.4 26.7 46.1 44.1 45.0 42.1 39.0 30.7 37.8]; PTEST1=[18 18 14 14 14 8 8 32 32 26 22 10 10 30 30 28 24 24 12 12 12 16 20]; PTEST2=[88 92 80 86 92 92 84 90 84 86 90 90 84 96 80 86 82 90 80 86 96 90 90]; TTEST=[40.0 38.0 45.5 43.6 41.5 46.6 48.6 28.0 32.2 35.0 35.4 45.4 47.0 25.9 36.0 33.9 38.7 34.0 46.8 45.1 42.1 40.6 37.4]; P=[P1;P2]; PTEST=[PTEST1;PTEST2]; plot3(P1,P2,T); title('目标矢量与输入关系'); xlabel('黏度'); ylabel('温度'); zlabel('含油量'); net=newff([8 32;80 96],[7,1],{'tansig','purelin'},'trainlm') [R,Q]=size(P); [S2,Q]=size(T); S1=5; [w1,b1]=rands(S1,R); [w2,b2]=rands(S2,S1); A2=purelin(w2*tansig(w1*P,b1),b2); figure(2); plot3(P1,P2,A2); title('初始网络输出图'); xlabel('黏度'); ylabel('温度'); zlabel('含油量'); net.trainParam.epochs = 1000; net.trainParam.show = 10; net.trainParam.lr = 0.01; net.trainParam.goal = 0.001; [net,tr,A,E,Pf,Af] = train(net,P,T,[],[]); A=sim(net,P); figure(3); plot3(P1,P2,A); title('训练后网络输出图'); xlabel('黏度'); ylabel('温度'); zlabel('含油量'); E=T-A MSE=mse(E) A=sim(net,P) 另外一组输入和输出的数据是: P1=[8 8 8 10 10 24 24 24 26 30 32 18 18 18 26 20 16 14 12 22 22 28 28]; P2=[80 88 96 82 92 80 88 96 90 92 96 80 86 94 82 82 82 96 92 84 96 84 94]; T=[49.5 47.7 45.9 47.5 45.0 39.7 35.3 30.1 32.2 28.0 24.1 43.0 40.8 37.1 37.5 41.1 43.6 40.1 43.1 39.0 31.9 35.0 28.0]; 还有就是把训练数据和检测数据调换,误差还是差别很大。崩溃了。马上就要答辩。 怎么样才能把系统弄得稳定一些,误差要在 0.02以下 谢谢 谢谢各位。我在线等。也可以加QQ :506177678 |
![]() |
![]() |
![]() |
#2 |
版主
注册日期: 2008-12-03
年龄: 41
帖子: 43
声望力: 17 ![]() |
![]()
你好,你这个系统:输入为两个节点(温度和黏度),输出一个节点;那你就测量这两个节点的数据,再测得在这个两个数据条件下输出数据;多做得到些这样的数据,就可以训练神经网络了。
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-05-08
年龄: 37
帖子: 2
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#4 |
版主
注册日期: 2008-12-03
年龄: 41
帖子: 43
声望力: 17 ![]() |
![]()
至于输入多少比较合适这个也没有看到相关的资料有;不过这个隐层的神经元个数一般至少是输入神经元个数的:2n+1个。
|
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2013-05-28
年龄: 35
帖子: 7
声望力: 0 ![]() |
![]()
请问这个程序为什么不出图
|
![]() |
![]() |