网络优化改进

网络优化的方法有很多,在这里我们使用其中一种优化方式。在我们的模型训练时候,会有一个重要的因素需要设定,就是学习率。那么在手动设定学习率的时候不一定准确。 这种人为的设定对于模型的输出影响较大。所以在这里引入了一种自动更新学习率的函数。

指数衰减学习率exponential_decay

class tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)
  """
  实现学习率指数衰减

  :param learning_rate:初始的学习率

  :param global_step:全局的训练步数(样本学习了多少次)

  :param decay_steps:衰减系数(每多少步衰减decay_rate)

  :param decay_rate:衰减的速度

  :param staircase:默认为False,如果设置为True时,将(global_step / decay_ steps)转换成整数
  """

那么衰减的公式为learningrate * decay_rate ^ (global_step / decay steps)

使用

# 让学习率根据步伐,自动变换学习率,指定了每10步衰减基数为0.99,0.001为初始的学习率
lr = tf.train.exponential_decay(0.001,
                                global_step,
                                10,
                                0.99,
                                staircase=True)

# 优化器
train_op = tf.train.GradientDescentOptimizer(lr).minimize(loss, global_step=global_step)