人工智能神器——TensorFlow入门基础(激励函数与优化器)
TensorFlow流程图
TensorFlow流程图
人工智能神器TensorFlow流程图包括输入层、隐藏层、训练层等
输入层:主要是构建图的节点输入数据,主要是我们输入神经网络的权重(W)与偏差(biases)或者其他数据 隐藏层:本层是神经网络的内部结构,数据通过隐藏层降维计算后,输出给训练层,本层主要的算法就是神经网络的Activation Function(激励函数) 训练层:本层就是神经网络的核心层,主要对数据进行训练,达到设计目的,本层主要的核心就是Optimizer(优化器)
Activation Function(激励函数):
激励函数 activation function
我们为什么要使用激励函数?这个问题需要讨论高等数学里面的线性函数(y=Wx+b)与非线性函数y=AF(Wx+b)(AF就是激励函数),虽然线性函数特别美好,但是它并不符合实际的数据应用。现实数据由于多种因素的存在,不会像我们想象的那么美好。且线性函数不能收敛,这在实际应用中,并不是所有的事情是符合线性关系。
直接构建神经网络的输入与输出是一个线性关系,如下:
线性神经网络
激励函数的实质是非线性方程。Tensorflow 的神经网络里面处理较为复杂的问题时都会运用激励函数 activation function。 通过加入激励函数可实现张量计算的非线性化,从而提升TensorFlow神经网络模型的泛化能力。如果不使用激励函数,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。通过使用激励函数引入非线性因素后,使神经网络的训练更强大。
常用的激励函数主要有:
tf.nn.relu tf.nn.relu6 tf.nn.elu tf.nn.softplus tf.nn.softsign tf.nn.dropout tf.nn.bias_add tf.sigmoid tf.tanh
在少量层结构中, 我们可以尝试很多种不同的激励函数,但在卷积神经网络CNN中, 推荐 relu. 在循环神经网络中RNN, 推荐的是 tanh 或者是 relu,当然你也可以尝试不同的激励函数
TensorFlow optimizer(优化器)
TensorFlow optimizer(优化器)主要用来训练神经网络(利用不同的算法来优化我们的神经网络)
常用的优化器主要有:
tf.train.Optimizer tf.train.GradientDescentOptimizer tf.train.AdadeltaOptimizer tf.train.AdagradOptimizer tf.train.AdagradDAOptimizer tf.train.MomentumOptimizer tf.train.AdamOptimizer tf.train.FtrlOptimizer tf.train.ProximalGradientDescentOptimizer tf.train.ProximalAdagradOptimizer tf.train.RMSPropOptimizer
具体每个优化器如何使用,大家可以参考官方的文档。
下期预告:
通过以上的介绍,我们简单了解了TensorFlow如何构建图,启动图以及激励函数与优化器的概念,下期通过代码介绍一个简单的例子介绍TensorFlow流程,(y=Wx+b)如何让TensorFlow训练,找到我们的(W,b)
TensorFlow神经网络