bp神经网络matlab实例
采用 Matlab 工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考 Matlab 帮助文档。实例一% 例 1 采用动量梯度下降算法训练 BP 网络。 % 训练样本定义如下: % 输入矢量为 % p =[-1 -2 3 1; -1 1 5 -3] % 目标矢量为 t = [-1 -1 1 1] close all clear clc % ---------------------------------------------------------------% NEWFF——生成一个新的前向神经网络,函数格式:% net = newff(PR,[S1 S2.SNl],{TF1 TF2.TFNl},BTF,BLF,PF) ,% PR -- R x 2 matrix of min and max values for R elements% (对于 R 维输入,PR 是一个 R x 2 的矩阵,每一行是相应输入的边界值)% Si -- 第 i 层的维数% TFi -- 第 i 层的传递函数, default = tansig % BTF -- 反向传播网络的训练函数, default = traingdx % BLF -- 反向传播网络的权值/阈值学习函数, default = learngdm % PF -- 性能函数, default = mse % ---------------------------------------------------------------% TRAIN——对 BP 神经网络进行训练,函数格式:% [net,tr,Y]=train(NET,P,T,Pi,Ai,VV,TV),输入参数:% net -- 所建立的网络% P -- 网络的输入% T -- 网络的目标值, default = zeros% Pi -- 初始输入延迟, default = zeros% Ai -- 初始网络层延迟, default = zeros% VV -- 验证向量的结构, default = []% TV -- 测试向量的结构, default = []% 返回值:% net -- 训练之后的网络% TR -- 训练记录(训练次数及每次训练的误差)% Y -- 网络输出% E -- 网络误差% Pf -- 最终输入延迟% Af -- 最终网络层延迟% ---------------------------------------------------------------% SIM——对 BP 神经网络进行仿真,函数格式:% [Y,Pf,Af,E,perf] = sim(net,P,PiAi,T)% 参数与前同。% ---------------------------------------------------------------% % 定义训练样本 % P 为输入矢量 echo onP=[-1, -2, 3, 1;-1, 1, 5, -3]; % T 为目标矢量 T=[-1, -1, 1, 1]; % 创建一个新的前向神经网络 net=newff(minmax(P),[3,1],{ tansig , purelin }, traingdm ) % ---------------------------------------------------------------% 训练函数:traingdm,功能:以动量 BP 算法修正神经网络的权值和阈值。% 它的相关特性包括:% epochs:训练的次数,默认:100% goal:误差性能目标值,默认:0% lr:学习率,默认:0.01% max_fail:确认样本进行仿真时,最大的失败次数,默认:5% mc:动量因子,默认:0.9% min_grad:最小梯度值,默认:1e-10% show:显示的间隔次数,默认:25% time:训练的最长时间,默认:inf% ---------------------------------------------------------------% 当前输入层权值和阈值 Weights=net.IW{1,1} bias=net.b{1} % 当前网络层权值和阈值 layerWeights=net.LW{2,1} layerbias=net.b{2} % 设置网络的训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; % 调用 TRAINGDM 算法训练 BP 网络 [net,tr]=train(net,P,T); % 对 BP 网络进行仿真 A = sim(net,P) % 计算仿真误差 E = T - A MSE=mse(E) echo offfigure;plot((1:4),T, -* ,(1:4),A, -o )实例 2% 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法%(trainlm)和贝叶斯正则化算法(trainbr),% 用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下% MATLAB 语句生成: % 输入矢量:P = [-1:0.05:1]; % 目标矢量:randn(’seed’,78341223); % T = sin(2*pi*P)+0.1*randn(size(P)); % MATLAB 程序如下: close all clear all clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 % 定义训练样本矢量 % P 为输入矢量 P = [-1:0.05:1]; % T 为目标矢量 randn( seed ,78341223); T = sin(2*pi*P)+0.1*randn(size(P)); % 创建一个新的前向神经网络 net=newff(minmax(P),[20,1],{ tansig , purelin }); disp( 1. L-M 优化算法 TRAINLM ); disp( 2. 贝叶斯正则化算法 TRAINBR ); choice=( 请选择训练算法(1,2): ); if(choice==1)% 采用 L-M 优化算法 TRAINLM net.trainFcn= trainlm ; % 设置训练参数 net.trainParam.epochs = 500; net.trainParam.