TensorFlow VS PyTorch之學習率衰減

在訓練神經網絡時,有些情況下,需要對學習率進行調整。在這裏分別介紹TensorFlow和PyTorch的一種方法。

tf.train.exponential_decay()

TensorFlow提供了指數衰減法

tf.train.exponential_decay(learning_rate, global_step=global_step, decay_steps=100,decay_rate=0.99, staircase=True)

計算公式:

learning_rate * decay_rate^(global_step / decay_steps)

參數

  • learning_rate:初始學習率
  • global_step:計數器,每進行一次更新,加1
  • decay_steps:衰減步長
  • decay_rate:衰減係數
  • staircase:若爲True,則學習率呈階梯形式下降,即global / decay_steps爲整數。相當於每隔decay_steps更新一次學習率;若爲False,則學習率呈連續下降,即global / decay_steps爲浮點型,每一步都會更新一次學習率。
    在這裏階梯狀的藍色部分爲staircase爲True的情況;連續的紅色部分爲staircase爲False的情況。

torch.optim.lr_scheduler.StepLR()

PyTorch提供了基於epoch的學習率下降方法。該方法只是其中一種

torch.optim.lr_scheduler.StepLR(optimizer,step_size=100,gamma=0.99,last_epoch=-1)

計算公式:

learning_rate * gamma^(epoch / step_size)

參數

  • optimizer:自己定義的優化器
  • step_size:衰減步長,即每隔step_size個epoch,更新一次學習率
  • gamma(float):衰減係數
  • last_epoch(int):最後一次epoch的索引默認爲-1
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=100, gamma=0.99)

# 之後搭配 scheduler.step()進行操作。

參考文獻:https://www.cnblogs.com/happystudyeveryday/p/11144433.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章