% 例1 采用动量梯度下降算法训练 BP 网络。 % 训练样本定义如下: % 输入矢量为 % % % 目标矢量为 close all clear clc % --------------------------------------------------------------- % NEWFF——生成一个新的前向神经网络,函数格式: % net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes, % PR -- R x 2 matrix of min and max values for R input elements % (对于R维输入,PR是一个R x 2 的矩阵,每一行是相应输入的边界值) % Si -- 第i层的维数 % TFi -- 第i层的传递函数, default = 'tansig' % BTF -- 反向传播网络的训练函数, default = 'traingdx' % BLF -- 反向传播网络的权值/阈值学习函数, default = 'learngdm' % PF -- 性能函数, default = 'mse' % --------------------------------------------------------------- % TRAIN——对 BP 神经网络进行训练,函数格式: % % 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 on P=[-1, % 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 % --------------------------------------------------------------- % inputWeights=net.IW{1,1} inputbias=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; % [net,tr]=train(net,P,T); % A = sim(net,P) % E = T - A MSE=mse(E) echo off figure; plot((1:4),T,'-*',(1:4),A,'-o') |
|
来自: xiaowuzi863 > 《增广贤文》