Dans la plupart des codes Tensorflow, j'ai constaté qu'Adam Optimizer est utilisé avec un taux d'apprentissage constant 1e-4
(0,0001). Le code a généralement l'aspect suivant:
...build the model...
# Add the optimizer
train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# Add the ops to initialize variables. These will include
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()
# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
sess.run(train_op)
Je me demande s'il est utile d'utiliser la décroissance exponentielle lors de l'utilisation d'Adam Optimizer, c'est-à-dire d'utiliser le code suivant:
...build the model...
# Add the optimizer
step = tf.Variable(0, trainable=False)
rate = tf.train.exponential_decay(0.15, step, 1, 0.9999)
optimizer = tf.train.AdamOptimizer(rate).minimize(cross_entropy, global_step=step)
# Add the ops to initialize variables. These will include
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()
# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
sess.run(train_op)
Habituellement, les gens utilisent une sorte de décroissance du taux d’apprentissage; pour Adam, cela semble rare. Y a-t-il une raison théorique à cela? Peut-il être utile de combiner Adam Optimizer avec Decay?
global_step
paramètre de minimize
. Voir éditer.
1e-4
= 0.0001
pas 0.0004
.