目录
老饼讲解:一步一步上手学习

【说明】matlab-BP使用函数-说明

作者 : 老饼 发表日期 : 2025-11-17 14:14:39 更新日期 : 2026-05-14 22:21:47
老饼讲解-简单易懂,干货满满,爽过嗦螺!


newff、train、sim三个函数是通过matlab使用BP神经网络的三把斧,那么这节我们详细地展示一下这三个函数的了入参,好在使用的时候有个参考。

前言

在matlab中,一个简单BP神经网络使用示例代码如下:

%用于训练的数据
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);               % 预测

如代码所示,matlab中,构建一个BP神经网络,最主要就是newff、train、sim三个函数。那么下面我们展示这三个函数完整、具体的使用说明。

一、newff方法详述

newff用于建立一个BP神经网络,下面我们来看看newff函数的详细使用方法。

1.1. newff-调用方法

newff的完整参数如下:

net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

下面展示一个完整的使用示例,如下:
net = newff(X,y,3,{'tansig','purelin'},'trainlm','learngdm','mse',
                   {'fixunknowns','removeconstantrows','mapminmax'}, 
                   {'removeconstantrows','mapminmax'},'dividerand');

1.2. newff-入参说明

newff函数的入参说明如下:

   P:    输入数据X。

          输出数据X的每行代表一个变量,每列代表一个样本。

   T:  target,拟合目标。

          也就是输出数据y,每行代表一个变量,每列代表一个样本。

   S:  行向量,隐节点个数。

          例如 [3,2]代表两个隐层,第一个隐层3个神经元,第2个隐层2个神经元。

   TF:Transfer function,传递函数(激活函数)。

         {'tansig','purelin'} 代表只有一个隐层,隐层传递函数为tansig,输出层传递函数为purelin。

      注意,TF要与S对齐,也就是在S中有多少层,这里对应地设置每层的激活函数。

   BTF: Backprop network training function,训练函数,默认用'trainlm'。

   BLF:   Backprop learning function,反向传播中权重/阈值的学习函数。

             默认learngdm. (adapt时调用,一般不需用到)

   PF:     Performance function,性能函数,即误差函数。

        默认为均方差'mse',可选:mse,sse,mae,sae(均方差,总方差,均绝对差,总绝对差)。

        trainlm只支持mse,sse

   IPF:    input processing functions,输入处理函数。

            默认{'fixunknowns','removeconstantrows','mapminmax'}

   OPF:output processing functions,输出处理函数

             默认 {'removeconstantrows','mapminmax'}

   DDF:Data division function,数据分割函数。

            默认值'dividerand',即随机分割。

1.3. newff-出参说明

newff只有一个出参net,如下:

net:构建好的网络

1.4. 关于newff的训练方法

newff的训练方法只推荐两种:

1. 数据量小,内存够时,用'trainlm',
2. 数据量大,trainlm不能用时,用'trainscg'
trainlm为Levenberg-Marquardt方法,会利用二阶导信息,trainscg则为量化共轭梯度法

关于newff的数据处理函数:

mapminmax:将数据按最小最大值线性缩放到[-1,1],即2(x - min(x))/(max(x) - min(x))-1,
removeconstantrows:删除常数变量
fixunknowns:处理NaN数据


二、train方法详述

train函数用来训练BP神经网络,下面我们详细说下train函数的使用方法。

2.1. train的调用方法

train支持多种参数格式,最常用的调用方法为:

 [net,tr,out_T] = train(net,P,T);

2.2. train的入参说明

train函数的详细入参说明如下:

net:需要训练的网络

P   :用于训练的输入数据

T   :用于训练的输出数据

2.3. train的出参说明

train函数的详细出参说明如下:

net:训练好的网络

tr   :训练过程

out_T:网络对训练数据的预测                                       

2.4. train函数的工作流程

调用train函数,train函数则会执行如下三部分工作:

1. 数据处理

train函数就会将X进行数据预处理(例如归一化),并将数据分割成三分:训练数据,验证数据和测试数据。

 2. 模型训练

数据分割完成后,train利用训练数据对net进行训练,使用的训练方法为net里设置的训练函数(例如trainlm) ,并且在训练的过程,用验证数据不断检验训练是否走向过拟合,如果走向过拟合,就终止训练。

3. 返回结果

训练完成后,train输出训练好的网络、训练过程和训练好的BP神经网络的预测结果,其中,哪些样本属于训练数据,哪些属于测试数据,可以在train输出的训练过程中找到,例如tr.testInd就是测试数据的索引。


三、sim方法详述

sim函数就是simulate(模拟)的意思,它用来预测BP神经网络的输出。

3.1. sim的调用方法

sim函数的调用方法如下:

sim的使用方法:sim_y = sim(net,X)

3.2. sim函数的入参说明

sim函数的入参说明如下:

net  : 用于预测的网络 

X    : 需要预测的数据(X为矩阵格式 ,每列代表一个样本)

3.3. sim函数的出参说明

sim函数的出参说明如下:

 sim_y  : 网络的预测结果                                                


总结

好了 ,以上就是newff、train、sim三个函数的详细说明了,事实上我们不需要去理解它,只有在使用时需要要再来详细参考就可以了。



图标 评论
添加评论