本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
newrb是matlab中用ols求解方法创建RBF径向基神经网络的一种方法
本文先讲解newrb的使用方法,然后进一步展示一个具体的代码例子来具体说明newrb是如何使用的
通过本文可以初步掌握如何利用matlab中的newrb函数来创建RBF神经网络
本节讲解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不需要自行训练,在调用构建函数时,工具箱自动训练,
网络构建完成后,只需要调用sim函数就可以使用网络进行预测
训练记录tr
在训练完成后,打开训练记录tr,可以看到它共包含了两个数据:epoch,perf
以上图为例,它代表的意思是,
第0步(即一个隐节点也没有的时候),网络的误差为0.5600,
第1步(即添加了一个隐节点的时候),网络的误差为0.4000,
第2步(即添加了两个隐节点的时候),网络的误差为0.1333,
.....
如此类推
由这里也可以知道,最终网络一共添加了4个隐节点,此时满足误差要求,退出训练
本节展示一个newrb训练RBF神经网络的具体例子和代码实现
newrb的Demo代码
输入输出的数据如下:
下面展示如何用newrb构建一个RBF神经网络,并用x1,x2来预测y
%代码说明:用newrb构建一个径向基神经网络
%来自《老饼讲解神经网络》www.bbbdata.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建立径向基网络,目标误差mes为0.01,径向基的宽度参数spread = 0.5
py = sim(net,x) % 用建好的网络拟合原始数据
% ----打印结果----------
err_rate = mean(abs(py-y)./abs(y)) % 计算相对误差占比
hn = size(net.lw{2,1},2); % 计算隐节点个数
disp(['最终使用的隐节点个数:' ,num2str(hn)]) % 打印隐节点个数
plot(1:length(y),y,'*',1:length(y),py,'o') % 绘制结果,x轴代表样本
legend('原始数据的y','网络预测的y') % 添加图例
代码运行结果如下:
可以看到,最终使用4个隐节点时,网络的误差已达到要求
以上就是如何在matlab中用newrb训练RBF径向基神经网络的全部内容了~
End