대부분의 Tensorflow 코드에서 Adam Optimizer가 일정한 학습 속도 1e-4
(예 : 0.0001) 와 함께 사용되는 것을 보았습니다 . 코드는 일반적으로 다음과 같습니다.
...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)
adam 최적화 프로그램을 사용할 때 지수 붕괴를 사용하는 것이 유용한 지 궁금합니다. 예를 들어 다음 코드를 사용하십시오.
...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)
일반적으로 사람들은 일종의 학습 속도 감소를 사용합니다. Adam은 드물게 보입니다. 이것에 대한 이론적 인 이유가 있습니까? Adam 옵티 마이저와 쇠퇴를 결합하는 것이 유용 할 수 있습니까?
global_step
매개 변수를 사용하십시오 minimize
. 편집을 참조하십시오.
1e-4
= 0.0001
, not 0.0004
.