अधिकांश टेनसफ़्लो कोड में मैंने देखा है कि एडम ऑप्टिमाइज़र का उपयोग 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)
मैं सोच रहा हूँ, क्या यह एडाम ऑप्टिमाइज़र का उपयोग करते समय घातीय क्षय का उपयोग करने के लिए उपयोगी है, अर्थात निम्नलिखित कोड का उपयोग करें:
...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
।