matlab训练神经网络直接用编程实现
下面是一个ELMAN神经网络编程例子(直接新建一个M文件然后输入程序)
P=[0000 0055 0113 0173 0235 0299 0365 0432 0502 0573;
0645 0719 0795 0872 0950 1029 1109 1190 1273 1356;
1440 1525 1611 1698 1785 1873 1962 2051 2141 2232;
2323 2414 2506 2599 2692 2786 2880 2974 3069 3164;
3260 3356 3452 3549 3645 3743 3840 3938 4036 4135;
4234 4333 4432 4532 4632 4732 4832 4933 5034 5136;
5237 5339 5442 5544 5648 5751 5855 5960 6065 6169;
6274 6380 6486 6592 6699 6805 6913 7020 7128 7236;
7345 7454 7563 7672 7782 7892 8003 8114 8255 8336;
8448 8560 8673 8786 8899 9012 9126 9240 9355 9470;
9585 9700 9816 9932 10048 10165 10282 10400 10517 10635;
10754 10872 10991 11110 11229 11348 11467 11587 11707 11827;
11947 12067 12188 12308 12429 12550 12671 12792 12912 13034;
13155 13397 13197 13519 13640 13761 13883 14004 14125 14247;
14368 14470 14610 14731 14852 14973 15094 15215 15336 15456]';
T=[0 10 20 30 40 50 60 70 80 90;
100 110 120 130 140 150 160 170 180 190;
200 210 220 230 240 250 260 270 280 290;
300 310 320 330 340 350 360 370 380 390;
400 410 420 430 440 450 460 470 480 490;
500 510 520 530 540 550 560 570 580 590;
600 610 620 630 640 650 660 670 680 690;
700 710 720 730 740 750 760 770 780 790;
800 810 820 830 840 850 860 870 880 890;
900 910 920 930 940 950 960 970 980 990;
1000 1010 1020 1030 1040 1050 1060 1070 1080 1090;
1100 1110 1120 1130 1140 1150 1160 1170 1180 1190;
1200 1210 1220 1230 1240 1250 1260 1270 1280 1290;
1300 1310 1320 1330 1340 1350 1360 1370 1380 1390;
1400 1410 1420 1430 1440 1450 1460 1470 1480 1490;]';
pp=reshape(P,1,size(P,1)size(P,2));
tt=reshape(T,1,size(T,1)size(T,2));
pp_max=11max(pp);
pp_min=min(pp);
pp=(pp-pp_min)/(pp_max-pp_min);
tt_max=11max(tt);
tt_min=min(tt);
tt=(tt-tt_min)/(tt_max-tt_min);
net=newelm([0 1],[11,1],{'tansig','purelin'});
nettrainFcn='trainlm';
nettrainParamepochs = 1000;
nettrainParamgoal=0;
net=train(net,pp,tt);
p_input=input('input any data among P\n data=');
pp_input=(p_input-pp_min)/(pp_max-pp_min);
t_output=sim(net,pp_input);
tt_output=t_output(tt_max-tt_min)+tt_min;
fprintf('result is %f\n',tt_output);
将输入和输出作为样本,对BP神经网络进行训练,训练完成后的网络即具有了非线性映射的功能。其实不止BP算法,其他如RBF、Elman神经网络都可以的,只是RBF网络计算的是核函数中心和扩展因数。
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
优化神经网络结构。如BP神经网络改变隐层神经元数量、训练算法等;
使用其他神经网络。如Elman神经网络考虑了前一时刻的输出,比较适合用于预测,预测效果往往更好。RBF神经网络的训练速度很快,训练效果也很好。
改进的神经网络算法。例如BP神经网络增加动量项、自适应学习率等措施,防止陷入局部极小影响预测效果。
组合神经网络。取长补短,将全局搜索能力强的算法与局部逼近快的算法组合起来,如遗传算法优化初始权值,再训练。这种方法比较灵活,可以和许多算法融合。
全面考虑影响因素。未来的预测值受许多因素影响,所以应该在基于历史数据的基础上,充分考虑各种因素,考虑得越周全,预知信息越多,预测效果一般更好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)