bp神经网络的设计实例(matlab编程)(编辑修改稿)内容摘要:

训练迭代至 320 步时,网络训练收敛,此时 SSE 和 SSW 均为恒值,当前有效网络的参 数(有效权值和阈值)个数为。 例 3 采用 “提前停止 ”方法提高 BP 网络的推广能力。 对于和例 2相同的问题,在本例中我们将采用训练函数 traingdx 和 “提前停止 ”相结合的方法来训练 BP 网络,以提高 BP 网络的推广能力。 解: 在利用 “提前停止 ”方法时,首先应分别定义训练样本、验证样本或测试样本,其中,验证样本是必不可少的。 在本例中,我们只定义并使用验证样本,即有 验证样本输入矢量: = [:.05:] 验证样本目标矢量: = sin(2*pi*)+*randn(size()) 值得注意的是,尽管 “提前停止 ”方法可以和任何一种 BP 网络训练函数一起使用,但是不适合同训练速度过快的算法联合使用,比如 trainlm 函数,所以本例中我们采用训练速度相对较慢的变学习速率算法 traingdx 函数作为训练函数。 第 5 页 共 8 页 本例的 MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 pause % 敲任意键开始 clc % 定义训练样本矢量 % P 为输入矢量 P = [1::1]。 % T 为目标矢量 randn(39。 seed39。 ,78341223)。 T = sin(2*pi*P)+*randn(size(P))。 % 绘制训练样本数据点 plot(P,T,39。 +39。 )。 echo off hold on。 plot(P,sin(2*pi*P),39。 :39。 )。 % 绘制不含噪声的 正弦曲线 echo on clc pause clc % 定义验证样本 = [::]。 % 验证样本的输入矢量 = sin(2*pi*)+*randn(size())。 % 验证样本的目标矢量 pause clc % 创建一个新的前向神经网络 =newff(minmax(P),[5,1],{39。 tansig39。 ,39。 purelin39。 },39。 traingdx39。 )。 pause clc % 设置训练参数 = 500。 = init()。 pause clc % 训练 BP 网络 [,tr]=train(,P,T,[],[],val)。 第 6 页 共 8 页 pause clc % 对 BP 网络进行仿真 A = sim(,P)。 % 计算仿真误差 E = T A。 MSE=mse(E) pause clc % 绘制仿真拟合结果曲线 close all。 plot(P,A,P,T,39。 +39。 ,P,sin(2*pi*P),39。 :39。 )。 pause。 clc echo off 下面给出了网络的某次训练结果,可见,当训练至第 136 步时,训练提前停止,此时的网络误差为 0.0102565。 给出了训练后的仿真数据拟合曲线,效果是相当满意的。 [,tr]=train(,P,T,[],[],val)。 TRAI。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。