tensorflow优化器

反向传播算法和梯度下降算法用来调整神经网络中参数的取值,梯度下降算法主要用于优化单个参数的取值,反向传播算法给出了高效的方式在所有参数上使用梯度下降算法,来使得神经网络模型的损失函数尽可能小。Tensorflow提供了多种方式实现反向传播和梯度下降过程,通用的方式为:tf.train.GradientDescentOptimizer(learning_rate = 0.1).minimize(loss), 设置学习率以及要优化的损失函数即可。需要注意的是目前都是通过一个batch的训练数据上调整参数。

 

##tf.train.GradientDescentOptimizer

旨在对所有步骤中的所有变量使用恒定的学习率,是目前最常用的梯度下降算法,一般来说能够有效地找到局部最优解。常常搭配一种自动呈指数衰减的学习率方法tf.train.exponential_decay

 

##tf.train.AdagradOptimizer

 adagrad方法是将每一个参数的每一次迭代的梯度取平方累加再开方,用基础学习率除以这个数,来做学习率的动态更新。学习率不再是一个固定的值,此算法学习率会单调猛烈地下降。

 

##tf.train.AdadeltaOptimizer

为了避免adagrad单调猛烈下降的学习率,Adadelta产生了。Adadelta限制把历史梯度累积窗口限制到固定的尺寸,而不是累加所有的梯度平方和。

 

##tf.train.AdamOptimizer

Adam优化算法是随机梯度下降算法的扩展式,在计算机视觉与自然语言处理等任务中很出色。

优势:

高效地计算;

所需内存少;

适合解决含大规模数据和参数的优化问题;

Adam通常被认为对超参数的选择相当棒;

适合解决包含很高噪声或稀疏梯度的问题;

 

 Adam算法可以看作是修正后的 AdaGrad+RMSProp算法;动量直接并入梯度一阶矩估计中;学习率建议为0.001。

你可能感兴趣的:(tensorflow)