Closed bird0401 closed 2 years ago
https://www.kaggle.com/aikhmelnytskyy/happywhale-arcface-baseline-eff7-tpu-768-inference で学習率を動的に変動させている。
# 学習率を動的に変動させる def get_lr_callback(plot=False): lr_start = 0.000001 lr_max = 0.000005 * config.BATCH_SIZE #学習率はバッチサイズに比例するように増加させる lr_min = 0.000001 lr_ramp_ep = 4 # lr_sus_ep = 0 lr_decay = 0.9 def lrfn(epoch): if config.RESUME: epoch = epoch + config.RESUME_EPOCH if epoch < lr_ramp_ep: lr = (lr_max - lr_start) / lr_ramp_ep * epoch + lr_start elif epoch < lr_ramp_ep + lr_sus_ep: lr = lr_max else: lr = (lr_max - lr_min) * lr_decay**(epoch - lr_ramp_ep - lr_sus_ep) + lr_min return lr if plot: epochs = list(range(config.EPOCHS)) learning_rates = [lrfn(x) for x in epochs] plt.scatter(epochs,learning_rates) plt.show() lr_callback = tf.keras.callbacks.LearningRateScheduler(lrfn, verbose=False) return lr_callback get_lr_callback(plot=True)
これ以外に良い方法があればそれを用いる。
他の上位解法を見ていても上記の方法をしている場合が多い。変える必要はそこまでなさそう。
https://www.kaggle.com/aikhmelnytskyy/happywhale-arcface-baseline-eff7-tpu-768-inference で学習率を動的に変動させている。
これ以外に良い方法があればそれを用いる。