train sgd optimizer gradientdescentoptimizer tensorflow

optimizer - sgd tensorflow



Diferencia entre `apply_gradients` y` minimizar` del optimizador en tensorflow (1)

Puede saber fácilmente en el enlace: https://www.tensorflow.org/get_started/get_started (parte de la API de tf.train) que realmente hacen el mismo trabajo. La diferencia es que: si usa las funciones separadas (tf.gradients, tf.apply_gradients), puede aplicar otro mecanismo entre ellos, como el recorte de gradiente.

Estoy confundido acerca de la diferencia entre apply_gradients y minimize of optimizer en tensorflow. Por ejemplo,

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)

y

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

¿Son de hecho los mismos?

Si quiero disminuir la tasa de aprendizaje, ¿puedo usar los siguientes códigos?

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) )

¡Gracias por tu ayuda!