আপনি যদি ইওকগুলির অন্তরগুলির জন্য নির্দিষ্ট শিক্ষার হার নির্ধারণ করতে চান 0 < a < b < c < ...
। তারপরে আপনি আপনার শিক্ষার হারকে শর্তসাপেক্ষ টেনসর হিসাবে সংশ্লেষ করতে পারেন, বৈশ্বিক পদক্ষেপে শর্তসাপেক্ষে এবং এটি অপ্টিমাইজারকে সাধারণ হিসাবে খাওয়ান।
আপনি একসাথে নেস্টেটেড tf.cond
স্টেটমেন্ট দিয়ে এটি অর্জন করতে পারেন , তবে ট্যান্সার পুনরাবৃত্তভাবে তৈরি করা সহজ:
def make_learning_rate_tensor(reduction_steps, learning_rates, global_step):
assert len(reduction_steps) + 1 == len(learning_rates)
if len(reduction_steps) == 1:
return tf.cond(
global_step < reduction_steps[0],
lambda: learning_rates[0],
lambda: learning_rates[1]
)
else:
return tf.cond(
global_step < reduction_steps[0],
lambda: learning_rates[0],
lambda: make_learning_rate_tensor(
reduction_steps[1:],
learning_rates[1:],
global_step,)
)
তারপরে এটি ব্যবহার করার জন্য আপনাকে জানতে হবে যে একটি একক যুগে প্রশিক্ষণের কতগুলি পদক্ষেপ রয়েছে, যাতে আমরা বিশ্বব্যাপী পদক্ষেপটি সঠিক সময়ে স্যুইচ করতে পারি এবং অবশেষে আপনি চান সেই যুগ এবং শিক্ষার হারগুলি সংজ্ঞায়িত করতে পারেন। সুতরাং আমি যদি যথাক্রমে [0.1, 0.01, 0.001, 0.0001]
যুগের ব্যবধানের সময় শিখার হারগুলি চাই [0, 19], [20, 59], [60, 99], [100, \infty]
, আমি তা করতাম:
global_step = tf.train.get_or_create_global_step()
learning_rates = [0.1, 0.01, 0.001, 0.0001]
steps_per_epoch = 225
epochs_to_switch_at = [20, 60, 100]
epochs_to_switch_at = [x*steps_per_epoch for x in epochs_to_switch_at ]
learning_rate = make_learning_rate_tensor(epochs_to_switch_at , learning_rates, global_step)
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value beta2_power