বেশিরভাগ টেনসরফ্লো কোডে আমি দেখেছি অ্যাডাম অপ্টিমাইজারটি ধ্রুবক শেখার হারের 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
।