关于神经网络的问题

关于神经网络的问题,第1张

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神经网络增加动量项、自适应学习率等措施,防止陷入局部极小影响预测效果。

组合神经网络。取长补短,将全局搜索能力强的算法与局部逼近快的算法组合起来,如遗传算法优化初始权值,再训练。这种方法比较灵活,可以和许多算法融合。

全面考虑影响因素。未来的预测值受许多因素影响,所以应该在基于历史数据的基础上,充分考虑各种因素,考虑得越周全,预知信息越多,预测效果一般更好。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/12179231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存