第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

自定義學(xué)習(xí)率調(diào)度程序 TF2 和 Keras

自定義學(xué)習(xí)率調(diào)度程序 TF2 和 Keras

千萬里不及你 2023-12-08 17:21:09
我正在嘗試編寫自定義學(xué)習(xí)率調(diào)度程序:帶預(yù)熱的余弦退火。但我既不能在 Keras 中使用它,也不能在 Tensorflow 中使用它。下面是代碼:import tensorflow as tfimport numpy as npdef make_linear_lr(min_lr, max_lr, number_of_steps):    def gen_lr(step):        return (max_lr - min_lr) / number_of_steps * step + min_lr    return gen_lrdef make_cosine_anneal_lr(learning_rate, alpha, decay_steps):    def gen_lr(global_step):        global_step = min(global_step, decay_steps)        cosine_decay = 0.5 * (1 + np.cos(np.pi * global_step / decay_steps))        decayed = (1 - alpha) * cosine_decay + alpha        decayed_learning_rate = learning_rate * decayed        return decayed_learning_rate    return gen_lrdef make_cosine_annealing_with_warmup(min_lr, max_lr, number_of_steps, alpha, decay_steps):    gen_lr_1 = make_linear_lr(min_lr, max_lr, number_of_steps)    gen_lr_2 = make_cosine_anneal_lr(max_lr, alpha, decay_steps)    def gen_lr(global_step):        if global_step < number_of_steps:            return gen_lr_1(global_step)        else:            return gen_lr_2(global_step - number_of_steps)            return gen_lrclass CosineAnnealingWithWarmUP(tf.keras.optimizers.schedules.LearningRateSchedule):  def __init__(self, min_lr, max_lr, number_of_steps, alpha, decay_steps):    super(CosineAnnealingWithWarmUP, self).__init__()    self.gen_lr_ca =  make_cosine_annealing_with_warmup(min_lr, max_lr, number_of_steps, alpha, decay_steps)  def __call__(self, step):    return tf.cast(self.gen_lr_ca(step), tf.float32)learning_rate_fn = CosineAnnealingWithWarmUP(.0000001, 0.01, 10_000, 0, 150_000)optimizer=tf.keras.optimizers.SGD(    learning_rate=learning_rate_fn, 當(dāng)我嘗試將它與 TensorFlow 一起使用時(shí),在 get_model_train_step_function 中傳遞優(yōu)化器 - 如果我刪除 @tf.function 裝飾器,它就會(huì)起作用。但它不適用于@tf.function,錯(cuò)誤顯示:OperatorNotAllowedInGraphError: using a tf.Tensoras a Python boolis not allowed: AutoGraph did conversion this function。這可能表明您正在嘗試使用不受支持的功能。我應(yīng)該如何編寫自定義學(xué)習(xí)率調(diào)度程序?另外,我想將此時(shí)間表與 Keras 一起使用。但它在那里根本不起作用。
查看完整描述

1 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

您需要排除 numpy 調(diào)用并用張量流運(yùn)算符替換 python 條件(“if”、“min”):


def make_cosine_anneal_lr(learning_rate, alpha, decay_steps):

    def gen_lr(global_step):


        #global_step = min(global_step, decay_steps)


        global_step = tf.minimum(global_step, decay_steps)

        cosine_decay = 0.5 * (1 + tf.cos(3.1415926 * global_step / decay_steps)) # changed np.pi to 3.14

        decayed = (1 - alpha) * cosine_decay + alpha

        decayed_learning_rate = learning_rate * decayed

        return decayed_learning_rate

    return gen_lr


def make_cosine_annealing_with_warmup(min_lr, max_lr, number_of_steps, alpha, decay_steps):

    gen_lr_1 = make_linear_lr(min_lr, max_lr, number_of_steps)

    gen_lr_2 = make_cosine_anneal_lr(max_lr, alpha, decay_steps)

    def gen_lr(global_step):


      #if global_step < number_of_steps:

      #    return gen_lr_1(global_step)

      #else:

      #    return gen_lr_2(global_step - number_of_steps)


      a = global_step < number_of_steps

      a = tf.cast(a, tf.float32)

      b = 1. - a

      return a * gen_lr_1(global_step) + b * gen_lr_2(global_step - number_of_steps)

        

    return gen_lr

這樣的時(shí)間表適用于 Keras。


查看完整回答
反對(duì) 回復(fù) 2023-12-08
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)