BP神经网络Matlab实例(1)
(2009-06-14 21:56:17)
标签:
matlabsimulink神经网络杂谈 |
分类: Matlab实例 |
采用Matlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考Matlab帮助文档。
% 例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')