【机器学习】径向基(RBF)神经网络的tensorflow实现
一、tensorflow简介
1.1、基础概念
1.1.1计算图
Tensorflow是一个基于计算图(数据流图)的的数值计算系统,计算图是一个有向图,图中的节点代表数学计算操作的算子(函数),节点之间连接的边代表参与计算的高维数组数据。计算图本质上就是构造模型数据的前向流动路径(参考文献【1】)。
1.1.2 Session会话
前面介绍了计算图是构造模型数据的前向流动路径。Session是驱动Tensorflow系统执行计算的交互入口,Session负责完成多计算设备或集群分布式的节点布置和数据传输节点的添加,负责将子图分配给相应的执行器单元来运行。是不是没看懂,我们换言之,Session会话会根据上述前向计算图来反向传播优化模型参数(参考文献【1】)。
1.2、应用流程
步骤一:构建计算图
(1)、声明样本特征和标签的占位符
(2)、声明模型参数
(3)、构造计算图
(4)、声明代价函数和寻优算法
步骤二:以tf.Session()为入口训练模型参数
二、RBF神经网络的tensorflow实现
本人之前的博文(参考文献【2】)已经介绍过RBF神经网络的网络结构、前向传播计算误差和反向传播计算模型参数。反向传播需要计算损失函数对各个参数的偏导,采用梯度下降算法不断迭代获得最优的模型参数。但是因为损失函数对各个参数的偏导计算比较复杂,所以在本人的上一篇博文中介绍的RBF神经网络是简化的版本,输出层的激活函数采用线性函数 y = x y=x y=x,而不是分类效果更好的sigmoid函数。为了避免需要手动推导损失函数对各个参数的偏导,本博文介绍采用tensorflow框架构建RBF神经网络的方法。首先介绍构建RBF神经网络需要用到的几个tensorflow函数,然后根据tensorflow的应用流程介绍RBF神经网络的构建方法。
2.1、需要介绍的tensorflow函数
t f . t i l e ( ) tf.tile() tf.tile()表示平铺复制一个已知矩阵(参考资料【3】)。
t f . s u b t r a c t ( ) tf.subtract() tf.subtract()表示tensorflow中算术运算中的减操作(两个矩阵中对应元素各自相减)。
t f . s q u a r e ( ) tf.square() tf.square()表示对给定对象中的每一个元素求平方。
t f . r e d u c e s u m ( ) tf.reduce_sum() tf.red