溫馨提示×

如何調(diào)整PyTorch中的學習率

小樊
169
2024-03-05 18:51:59
欄目: 編程語言

在PyTorch中,可以通過以下幾種方式來調(diào)整學習率:

  1. 使用torch.optim.lr_scheduler模塊中的學習率調(diào)度器來自動調(diào)整學習率??梢赃x擇不同的學習率調(diào)度策略,如StepLR、ReduceLROnPlateau、CosineAnnealingLR等。在每個epoch或batch結(jié)束時,調(diào)用學習率調(diào)度器的step方法即可更新學習率。
import torch.optim as optim
from torch.optim.lr_scheduler import StepLR

optimizer = optim.SGD(model.parameters(), lr=0.1)
scheduler = StepLR(optimizer, step_size=30, gamma=0.1)

for epoch in range(num_epochs):
    # Train the model
    ...
    
    # Update learning rate
    scheduler.step()
  1. 手動設置學習率??梢栽谟柧氝^程中根據(jù)需要手動調(diào)整學習率,例如在特定的epoch或條件下改變學習率。
optimizer = optim.SGD(model.parameters(), lr=0.1)

for epoch in range(num_epochs):
    # Train the model
    ...
    
    if epoch == 30:
        for param_group in optimizer.param_groups:
            param_group['lr'] = 0.01
  1. 使用torch.optim模塊中的optimizer.param_groups來調(diào)整學習率。通過修改optimizer.param_groups中的lr參數(shù)來更新學習率。
optimizer = optim.SGD(model.parameters(), lr=0.1)

for epoch in range(num_epochs):
    # Train the model
    ...
    
    if epoch % 10 == 0:
        for param_group in optimizer.param_groups:
            param_group['lr'] *= 0.1

以上是幾種常見的調(diào)整學習率的方法,在訓練神經(jīng)網(wǎng)絡時可以根據(jù)實際情況選擇合適的方式調(diào)整學習率。

0