本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
在matlab中训练完RBF神经网络后,往往希望查看RBF神经网络具体的模型数学表达式
本文通过一个具体的例子,展示如何在matlab中提取出RBF神经网络的隐层、输出层的权重、阈值
通过本文,可以了解如何在训练完RBF神经网络后获得RBF神经网络的模型数学表达式
本节介绍在训练好RBF神经网络后如何提取网络的权重阈值
RBF神经网络的数学公式提取方法
在训练好RBF网络后,往往我们需要提取出它的数学表达式
也就是提取出如下形式的数学表达式:
要提取数学表达式,其实就是提取网络的权重和阈值:和
假设net是我们训练好的RBF网络,
那么只需用如下语句就可以提取RBF网络的权重和阈值:
w2 = net.iw{1} % 提取隐层的权重(即径向基的中心)
b2 = net.b{1} % 提取隐层的阈值
w3 = net.lw{2,1} % 提取输出层权重
b3 = net.b{2} % 提取输出层的阈值
备注:它同时适用于newrbe和newrb
RBF神经网络的数学公式提取方法-代码示例
下面先构建一个RBF神经网络,并提取出权重阈值
然后用RBF模型公式计算网络的输出,并与工具箱的sim函数进行比较
这里以newrb为例,同样适用于newrbe
% 本代表用于展示如何查看RBF径向基神经网络的权重和阈值
% 本代码来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2018a
%----数据准备----
x = [-2,-1,0,1,2;-6,-2,0,3,8]; % 输入数据
y = [3,2,3,1,2]; % 输出数据
%----网络训练----
net = newrb(x, y, 0.1,0.5); % 以X,Y建立RBF神经网络,目标误差为0.01,径向宽度系数spread=0.5
% 提取网络的权重、阈值
w2 = net.iw{1} % 提取隐层的权重(即径向基的中心)
b2 = net.b{1} % 提取隐层的阈值
w3 = net.lw{2,1} % 提取输出层权重
b3 = net.b{2} % 提取输出层的阈值
% 检验公式的正确性:比较工具箱的结果与用公式计算的结果的最大差异
py_tool = sim(net,x); % 直接调用工具箱的sim函数来预测y
rbf = exp(-(repmat(b2,1,size(x,2)).*dist(w2,x)).^2); % 用权重、阈值代入公式计算RBF
py = sum(repmat(w3',1,size(x,2)).*rbf )+ b3; % 用权重、阈值代入公式计算最终的输出
max_err = max(abs(py(:) - py_tool(:))) % 比较工具箱的结果与用公式计算的结果的最大差异
代码运行结果如下:
![]()
将上述权重、阈值代回数学表达式,即如下:
其中,dist函数是欧氏距离公式,它的计算如下:
可以看到,提取出的权重阈值代入公式计算的结果与调用工具箱是一致的
说明这就是我们要提取的RBF神经网络的数学表达式了
在实际应用中,数据样本较多,网络的权重、阈值相对也较大
所以一般都不会像文中那样打印出来,而是以窗口方式查看变量
好了,通过上述例子的解说,应该都知道如何在matlab查看RBF神经网络的数学表达式了~
End