老饼讲解:一步一步上手学习
newrb是matlab中用来创建RBF径向基神经网络的一个函数,它使用的是OLS求解方法,本文讲解newrb函数的出参说明、入参说明,并通过具体的代码例子来展示newrb的使用。
本节讲解newrb函数的使用方法和相关参数的意义。
在matlab只需要调用newrb就可以用OLS求解的方式构建一个RBF神经网络。
(一) newrb的调用形式
newrb的调用形式如下:
net = newrb(P,T,goal,spread,MN,DF) % 全部入参net = newrb(P,T,goal,spread) % 常用入参 (二) newrb的入参说明
newrb共有六个入参:
P: R行Q列的输入矩阵,R个输入变量,Q个样本。T: S行Q列的目标输出矩阵,S个输出变量,Q个样本。goal: 均方误差目标(默认=0.0)。spread: 径向基函数的扩展系数(默认=1.0)。MN: 隐层神经元的最大个数(默认是Q)。DF: 每添加DF个神经元,在command窗口打印一次当前结果
备注:需要注意的是,输入输出数据每列代表一个样本,每行代表一个变量。
(三) newrb的出参说明
newrb的出参共有两个:
[net,tr] = newrb(P,T,goal,spread)net :返回的构建好的RBF神经网络。
tr :tr是一个结构体,里面包含一些训练过程中的记录。
RBF不需要自行训练,在调用构建函数时,工具箱自动训练,RBF神经网络构建完成后,只需要调用sim函数就可以使用模型进行预测。
训练记录tr
在newrb训练完成后,打开训练记录tr,可以看到它共包含了两个数据:epoch,perf

以上图为例,它代表的意思如下:
第0步(即一个隐节点也没有的时候),模型的误差为0.5600,
第1步(即添加了一个隐节点的时候),模型的误差为0.4000,
第2步(即添加了两个隐节点的时候),模型的误差为0.1333,
.....如此类推
由这里也可以知道,最终网络一共添加了4个隐节点,此时满足误差要求,退出训练。
本节展示一个newrb训练RBF神经网络的具体例子和代码实现。
输入输出的数据如下:

下面展示如何用newrb构建一个RBF神经网络,并用x1,x2来预测y。
% 本代码用于展示如何使用newrb构建一个RBF径向基神经网络
% 来自《老饼讲解-RBF神经网络》www.bbblearn.com ,matlab版本:2018a
%--------数据准备----------
x = [-2,-1,0,1,2;-6,-2,0,3,8]; % 输入数据
y = [3,2,3,1,2]; % 输出数据
%--------网络训练----------
[net,tr] = newrb(x, y, 0.01,0.5); % 以X,Y建立RBF神经网络,目标误差0.01,RBF宽度参数spread=0.5
py = sim(net,x); % 用建好的网络进行预测,这里的x是要用来进行预测的输入
% -------打印结果----------
disp('------训练过程-------') % 标题
train_record = [tr.epoch;tr.perf] % 训练过程
disp('------训练结果-------') % 标题
hn = size(net.lw{2,1},2); % 计算隐节点个数
mae = mean(abs(py-y)); % 计算MAE
disp(['隐节点个数:' ,num2str(hn)]) % 打印隐节点个数
disp(['MAE:' ,num2str(mae)]) % 打印隐节点个数
plot(1:length(y),y,'*',1:length(y),py,'o') % 绘制结果,x轴代表样本
legend('原始数据的y','网络预测的y') % 添加图例代码运行结果如下:


可以看到,最终使用4个隐节点时,网络的误差已达到要求。
以上就是matlab中newrb函数的说明与示例了,主要平时使用时经常会忘记参数的格式或意义,所以这篇文章方便平时使用时进行查阅,可以方便使用时快速复制、快速理解newrb函数的使用方法。
评论