【问题标题】:how can I develop a stochastic gradient descent optimizer for CNNs algorithm in TensorFlow?如何在 TensorFlow 中为 CNN 算法开发随机梯度下降优化器?
【发布时间】:2017-07-19 05:47:07
【问题描述】:

我在 CNN、python 中使用 TensorFlow 库。

我想为具有以下参数的 CNN 优化器开发一个随机梯度下降优化器:

learning rate = 0.05,
decay = 1e-6, 
Nesterov momentum 0.9

我想知道我应该如何更改我的代码来实现这一点。这是我到目前为止的代码:

optimizer = tf.train.AdamOptimizer(learning_rate=0.05).minimize(cost)

谢谢。

【问题讨论】:

    标签: python-2.7 tensorflow deep-learning


    【解决方案1】:

    这可以通过使用 MomentumOptimizer(https://www.tensorflow.org/api_docs/python/tf/train/MomentumOptimizer) 和指数衰减(https://www.tensorflow.org/versions/r0.12/api_docs/python/train/decaying_the_learning_rate) 轻松实现:

    global_step = tf.Variable(0, trainable=False)
    starter_learning_rate = 0.05
    learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step,
                                           1000, 0.96, staircase=True)
    
    optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate, momentum=0.9, use_nesterov=True).minimize(cost, global_step=global_step)
    

    【讨论】:

    • 我使用您的算法,但成本函数返回 nan 值。这是我的成本函数:cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))
    • 是的,它与亚当一起工作,但是当我使用动力时,这是我的结果:
    • Iter 88320, Minibatch Loss= nan, Training Accuracy= 0.03125////// Iter 89600, Minibatch Loss= nan, Training Accuracy= 0.02344
    • 感谢 Thomas,当我更改衰减值时,它就可以了。感谢您的帮助
    猜你喜欢
    • 2018-08-18
    • 2016-06-13
    • 2016-07-02
    • 2017-02-18
    • 2016-10-30
    • 1970-01-01
    • 2018-01-09
    • 2016-09-25
    • 1970-01-01
    相关资源
    最近更新 更多