TensorFlow经常使用的优化器

简介

目前TensorFlow支持11种不一样的经典优化器(参考TensorFlow API tf.train文档python

  • tf.train.Optimizer
  • tf.train.GradientDescentOptimizer
  • tf.train.AdadeltaOptimizer
  • tf.train.AdagtadOptimizer
  • tf.train.AdagradDAOptimizer
  • tf.train.MomentumOptimizer
  • tf.train.AdamOptimizer
  • tf.train.FtrlOptimizer
  • tf.train.ProximalGradientDescentOptimizer
  • tf.train.ProximalAdagradOptimizer
  • tf.train.RMSProOptimizer

 

介绍三种经常使用优化器

下面重点介绍 tf.train.GradientDescentOptimizer、tf.train.MomentumOptimizer、tf.train.AdamOptimizer算法

 

 

 

  1. tf.train.GradientDescentOptimizer

        这个优化器主要实现的是 梯度降低算法api

 
  1. __init__(ide

  2. learning_rate,学习

  3. use_locking=False,优化

  4. name='GradientDescent'ui

  5. )spa

  • learning_rate: (学习率)张量或者浮点数
  • use_locking: 为True时锁定更新
  • name: 梯度降低名称,默认为"GradientDescent".

     

   2. tf.train.MomentumOptimizer

 

        实现 动量梯度降低算法 ,可参考 简述动量Momentum梯度降低.net

 

其中, 即momentum,表示要在多大程度上保留原来的更新方向,这个值在0-1之间,在训练开始时,因为梯度可能会很大,因此初始值通常选为0.5;当梯度不那么大时,改成0.9。 是学习率,即当前batch的梯度多大程度上影响最终更新方向,跟普通的SGD含义相同。与 code

 之和不必定为1。

 
  1. __init__(

  2. learning_rate,

  3. momentum,

  4. use_locking=False,

  5. name='Momentum',

  6. use_nesterov=False

  7. )

  • learning_rate: (学习率)张量或者浮点数
  • momentum: (动量)张量或者浮点数
  • use_locking: 为True时锁定更新
  • name:  梯度降低名称,默认为 "Momentum".
  • use_nesterov:  为True时,使用 Nesterov Momentum. 

 

   3.  tf.train.AdamOptimizer

        实现 Adam优化算法(  Adam 这个名字来源于 adaptive moment estimation,自适应矩估计。)

可参考博客梯度优化算法Adam

 
  1. __init__(

  2. learning_rate=0.001,

  3. beta1=0.9,

  4. beta2=0.999,

  5. epsilon=1e-08,

  6. use_locking=False,

  7. name='Adam'

  8. )

  • learning_rate: (学习率)张量或者浮点数
  • beta1:  浮点数或者常量张量 ,表示 The exponential decay rate for the 1st moment estimates.
  • beta2:  浮点数或者常量张量 ,表示 The exponential decay rate for the 2nd moment estimates.
  • epsilon: A small constant for numerical stability. This epsilon is "epsilon hat" in the Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm 1 of the paper.
  • use_locking: 为True时锁定更新
  • name:  梯度降低名称,默认为 "Adam".
相关文章
相关标签/搜索