
嗯,挺不错的, 不过现在已经有《matlab神经网络43个案例分析》了,是30个案例的升级版 。
它是matkabsky论坛出版的,还有个matlab中文论坛出版的,《MATLAB神经网络原理与实例精解(附光盘)》也是挺不错的。。 这两本里面都有比较多的干货。
另外《神经网络之家》网,nnetinfo也推荐你去看看,上面也有些视频可以下载。
使用神经网络工具箱可以非常简便地实现网络建立和训练,实例代码如下:
%% BP算法function Out=bpnet(p,t,p_test)
%p,t为样本需要提前组织好
global S1
net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm'); %trainlm训练函数最有效
%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法
nettrainParamepochs=1000;
nettrainParamgoal=000001;
nettrainParamlr=001;
nettrainParamshowWindow = false; %阻止训练窗口的d出
nettrainParamshowCommandLine = false; %阻止训练窗口的d出
net=train(net,p,t);
Out=sim(net,p_test);
end
上面的代码不完整,完整的带训练样本数据的程序见附件。
1)局部极小化问题:从数学角度看,传统的BP神经网络为一种局部搜索的优化方法,它要解决的是一个复杂非线性化问题,网络的权值是通过沿局部改善的方向逐渐进行调整的,这样会使算法陷入局部极值,权值收敛到局部极小点,从而导致网络训练失败。加上BP神经网络对初始网络权重非常敏感,以不同的权重初始化网络,其往往会收敛于不同的局部极小,这也是很多学者每次训练得到不同结果的根本原因。
2)BP神经网络算法的收敛速度慢:由于BP神经网络算法本质上为梯度下降法,它所要优化的目标函数是非常复杂的,因此,必然会出现“锯齿形现象”,这使得BP算法低效;又由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿。
3)BP神经网络结构选择不一:BP神经网络结构的选择至今尚无一种统一而完整的理论指导,一般只能由经验选定。网络结构选择过大,训练中效率不高,可能出现过拟合现象,造成网络性能低,容错性下降,若选择过小,则又会造成网络可能不收敛。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题。
4)应用实例与网络规模的矛盾问题:BP神经网络难以解决应用问题的实例规模和网络规模间的矛盾问题,其涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题。
5)BP神经网络预测能力和训练能力的矛盾问题:预测能力也称泛化能力或者推广能力,而训练能力也称逼近能力或者学习能力。一般情况下,训练能力差时,预测能力也差。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)