2017-08-03 18 views
7

Tôi đang bối rối về sự khác biệt giữa apply_gradientsminimize của trình tối ưu hóa trong lưu lượng. Ví dụ,Sự khác biệt giữa `apply_gradients` và` minim` của trình tối ưu hóa trong tensorflow

optimizer = tf.train.AdamOptimizer(1e-3) 
grads_and_vars = optimizer.compute_gradients(cnn.loss) 
train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step) 

optimizer = tf.train.AdamOptimizer(1e-3) 
train_op = optimizer.minimize(cnn.loss, global_step=global_step) 

Họ cùng thực sự?

Nếu tôi muốn phân hủy tốc độ học tập, tôi có thể sử dụng các mã sau không?

global_step = tf.Variable(0, name="global_step", trainable=False) 
starter_learning_rate = 1e-3 
learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step, 
             100, FLAGS.decay_rate, staircase=True) 
# Passing global_step to minimize() will increment it at each step. 
learning_step = (
    optimizer = tf.train.AdamOptimizer(learning_rate) 
    grads_and_vars = optimizer.compute_gradients(cnn.loss) 
    train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step) 
) 

Cảm ơn sự giúp đỡ của bạn!

Trả lời

6

Bạn có thể dễ dàng biết từ liên kết: https://www.tensorflow.org/get_started/get_started (phần API tf.train) rằng chúng thực sự làm cùng một công việc. Sự khác biệt là: nếu bạn sử dụng các hàm được tách riêng (tf.gradients, tf.apply_gradients), bạn có thể áp dụng cơ chế khác giữa chúng, chẳng hạn như cắt gradient.

+0

Một liên kết trên các tài liệu mà điều này được giải thích tốt hơn là https://www.tensorflow.org/api_docs/python/tf/train/Optimizer. –

Các vấn đề liên quan