MATLAB神经网络实例及训练结果各参数解释
matlab脚本程序实例源码:
clear;
clc;
%一个简单的BP网络拟合问题
%训练样本的生成
X=-1:0.1:1; %X为输入 这里是在[-1 1]区间内以0.1为步进值(相邻两数的差值)生成的21组数据,用来表示该网络的输入
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...
0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201]; %D为X每一项数据对应的输出(实际x对应的实际y值)
figure; %创建一个新窗口
plot(X,D,'+'); %绘制原始数据分布图
%创建网络
net = newff([-1 1],[5 1],{'tansig','tansig'}); %newff:前馈网络创建函数,即创建一个前馈神经网络net
%设置训练参数
net.trainParam.epochs = 100; %设定训练的最大次数
net.trainParam.goal = 0.005; %设定全局最小误差,此处为mse:均方误差(mean squared error)
%训练网络
net = train(net,X,D); %网络学习函数
%仿真
O = sim(net,X);
%作出拟合图形
figure;
plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线
V = net.iw{1,1}%输入层到中间层权值
theta1 = net.b{1}%中间层各神经元阈值
W = net.lw{2,1}%中间层到输出层权值
theta2 = net.b{2}%输出层各神经元阈值
运行结果:
MATLAB神经网络训练结果各参数解释:
如上图形显示的是神经网络的结构图,可知有一个隐层一个输出层
第二部分显示的是训练算法,这里为学习率自适应的梯度下降BP算法;误差指标为MSE
第三部分显示训练进度:
Epoch:训练次数;在其右边显示的是最大的训练次数,可以设定,上面例子中设为100;而进度条中显示的是实际训练的次数,上面例子中实际训练次数为7次。
Time:训练时间,也就是本次训练中,使用的时间
Performance:性能指;进度条中显示的是当前的均方误差;进度条右边显示的是设定的均方误差(如果当前的均方误差小于设定值,则停止训练),这个指标可以用用.trainParam.goal参数设定。
Gradiengt:梯度;进度条中显示的当前的梯度值,其右边显示的是设定的梯度值。如果当前的梯度值达到了设定值,则停止训练。
validation check为泛化能力检查(若连续6次训练误差不降反升,则强行结束训练)
第四部分为作图。分别点击三个按钮能看到误差变化曲线,分别用于绘制当前神经网络的性能图,训练状态和回归分析。