ในรหัส 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 optimizer หรือไม่เช่นใช้รหัสต่อไปนี้:
...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)
โดยปกติแล้วผู้คนมักใช้อัตราการเรียนรู้ที่ลดลงเพราะอดัมดูเหมือนผิดปกติ มีเหตุผลทางทฤษฎีสำหรับสิ่งนี้หรือไม่? การรวมเครื่องมือเพิ่มประสิทธิภาพของอดัมกับการสลายตัวเป็นประโยชน์หรือไม่
global_step
minimize
ดูการแก้ไข
1e-4
= ไม่0.0001
0.0004