(2)径向基神经网络
径向基神经网络*(radial basis function networks, RBF)本质上就是FFNN,结构没有任何改变,只不过使用“径向基函数(radial basis functions)”作为激活函数。
RBF神将网络是一种三层神经网络,其包括输入层、隐层、输出层。从输入空间到隐层空间的变换是非线性的,而从隐层空间到输出层空间变换是线性的。流图如下:
RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。其中,**隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。**这样,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。
- 代码
class BRF(object):
"""
RBF神经网络
"""
def __init__(self,n_input,n_output,n_centers):
self.n_input=n_input
self.n_output=n_output
self.n_centers=n_centers
#扩展系数
self.beta = tf.Variable(tf.random_normal([1,self.n_centers]),name='Beta')
#中心个数(n_input,n_centers)
self.centers = tf.Variable(tf.random_normal([self.n_centers,self.n_input],name='Centers'))
#输出层权重和偏置
self.weight