本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文描述使用matlab神经网络工具箱训练BP神经网络的一些最常用的调用方法和参数
本文旨在说明BP神经网络工具箱的常用方法(newff,train,sim等)及其参数意义
本节对matlab工具箱的BP神经网络使用进行详细说明
包括newff函数、train函数、sim函数等常用函数的相关说明
BP神经网络DEMO
本文讲述用matlab建立BP神经网络的详细使用
让我们开始吧!
先来一个简单的BP神经网络的DEMO
以matlab2018a为例,可以如下实现:
%用于训练的数据
X = linspace(-3,3,100);
y = 10*sin(X);
%网络训练
net = newff(X,y,3,{'tansig','purelin'},'trainlm');
net.trainparam.goal = 0.00001; % 设置训练误差目标
net.trainparam.epochs = 15000; % 设置最大训练次数.
[net,tr,net_y] = train(net,X,y); % 训练
sim_y = sim(net,X); % 预测
从上面可以看到
newff是建立一个BP神经网络
建立网络后,可以设置网络的相关参数
只需修改net.tainparam的相关值就可以了
最后,调用train函数对网络进行训练
训练好BP神经网络后,就可以用sim函数来对进行预测
下面我们对newff、train、sim这三个关键函数进行特别说明
newff的使用说明
newff用于建立一个BP神经网络,
newff的完整参数用例、参数说明如下
newff的完整参数
net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
newff的入参说明
P:输入数据X,每列代表一个样本的X
T:target,拟合目标,也即输出数据y,每列代表一个样本的Y
S:行向量,隐节点个数,
例如 [3,2]代表两个隐层,第一个隐层3个神经元,第2个隐层2个神经元
TF:Transfer function,传递函数(激活函数)
{'tansig','purelin'} 代表隐层传递函数为tansig,输出层为purelin
BTF:Backprop network training function,训练函数,默认用'trainlm'
BLF:Backprop learning function,反向传播权重/阈值 学习函数,
默认learngdm.(adapt时调用,一般不需用到)
PF:Performance function,性能函数,即误差函数,默认为均方差'mse',
可选:mse,sse,mae,sae(均方差,总方差,均绝对差,总绝对差)
IPF:input processing functions,输入处理函数,
默认{'fixunknowns','removeconstantrows','mapminmax'}
OPF:output processing functions,输出处理函数,
默认 {'removeconstantrows','mapminmax'}
DDF:Data division function,数据分割函数
默认值'dividerand',即随机分割
出参说明
net:训练好的网络
BP神经网络-train的使用说明
train函数用于对newff创建的网络进行训练
下面讲解BP神经网络train函数的调用方法与出入参
train的调用方法
train支持多种参数格式,最常用的是:
[net,tr,out_T] = train(net,P,T);
train的出入参说明
net:需要训练的网络
P:用于训练的输入数据
T:用于训练的输出数据
train的出出参说明
net :训练好的网络
tr :训练过程
out_T:网络对训练数据的预测
BP神经网络-sim的使用说明
sim用于BP神经网络的预测,
sim的使用方法及出入参说明如下:
sim的使用方法
sim的使用相对较简单,如下
sim_y = sim(net,X)
sim的出入参说明
sim的出入参说明如下
net : 用于预测的网络
X : 需要预测的数据
X为矩阵格式 ,每列代表一个样本
sim_y : 网络的预测结果
关于BP神经网络的常用训练参数
在BP神经网络训练前,可以设置相关的训练参数
BP神经网络的常用训练参数有:
net.trainparam.goal = 0.00001; % 训练目标,均方误差低于0.0001
net.trainparam.show = 400; % 每训练400次展示一次结果
net.trainparam.epochs = 15000; % 最大训练次数:15000
net.divideParam.trainRatio = 0.7; % 用于训练的数据比例
net.divideParam.valRatio = 0.15 ; % 用于验证过拟合的数据比例
net.divideParam.testRatio = 0.15; % 用于比例
net.trainparam.max_fail = 6; % 过拟合验证失败次数
好了,以上就是matlab的BP神经网络newff,train,sim等常用函数的详细说明了~
End