神经网络-专题详述

【例子】如何用newrb训练RBF神经网络

作者 : 老饼 发表日期 : 2023-03-08 15:22:03 更新日期 : 2023-12-25 21:40:25
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com


newrb是matlab中用ols求解方法创建RBF径向基神经网络的一种方法

本文先讲解newrb的使用方法,然后进一步展示一个具体的代码例子来具体说明newrb是如何使用的

通过本文可以初步掌握如何利用matlab中的newrb函数来创建RBF神经网络



   01. RBF神经网络-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不需要自行训练,在调用构建函数时,工具箱自动训练,
网络构建完成后,只需要调用sim函数就可以使用网络进行预测


    训练记录tr    


在训练完成后,打开训练记录tr,
可以看到它共包含了两个数据:epoch,perf
 RBF神经网络训练过程记录 
以上图为例,它代表的意思是,
第0步(即一个隐节点也没有的时候),网络的误差为0.5600,
第1步(即添加了一个隐节点的时候),网络的误差为0.4000,
第2步(即添加了两个隐节点的时候),网络的误差为0.1333,
.....
如此类推
由这里也可以知道,最终网络一共添加了4个隐节点,此时满足误差要求,退出训练





   02. RBF神经网络-newrb的代码例子   



本节展示一个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')             % 添加图例



    代码运行结果    


运行结果如下:
newrb训练RBF神经网络结果  
newrb训练RBF神经网络预测结果 
可以看到,最终使用4个隐节点时,网络的误差已达到要求




以上就是如何在matlab中用newrb训练RBF径向基神经网络的全部内容了~






 End 




联系老饼