溫馨提示×

pytorch train學習率衰減

小樊
119
2024-12-26 03:31:36
欄目: 深度學習

在PyTorch中,學習率衰減是一種優化技術,用于在訓練過程中逐漸減小學習率。這有助于模型在訓練初期快速收斂,同時在后期獲得更精確的解。以下是在PyTorch中實現學習率衰減的幾種方法:

  1. 使用torch.optim.lr_scheduler模塊中的StepLR類:
import torch
import torch.optim as optim
from torch.optim.lr_scheduler import StepLR

# 創建一個簡單的模型
model = torch.nn.Linear(10, 1)
optimizer = optim.SGD(model.parameters(), lr=0.1, momentum=0.9)

# 創建一個StepLR調度器,每隔10個epoch將學習率乘以0.1
scheduler = StepLR(optimizer, step_size=10, gamma=0.1)

# 訓練循環
for epoch in range(100):
    # 訓練模型...
    
    # 更新學習率
    scheduler.step()
  1. 使用torch.optim.lr_scheduler模塊中的ReduceLROnPlateau類:
import torch
import torch.optim as optim
from torch.optim.lr_scheduler import ReduceLROnPlateau

# 創建一個簡單的模型
model = torch.nn.Linear(10, 1)
optimizer = optim.SGD(model.parameters(), lr=0.1, momentum=0.9)

# 創建一個ReduceLROnPlateau調度器,當驗證集上的損失不再降低時,將學習率乘以0.1
scheduler = ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, verbose=True)

# 訓練循環
for epoch in range(100):
    # 訓練模型...
    
    # 計算驗證集上的損失
    val_loss = ...
    
    # 更新學習率
    scheduler.step(val_loss)
  1. 使用自定義學習率衰減函數:
import torch
import torch.optim as optim

# 創建一個簡單的模型
model = torch.nn.Linear(10, 1)
optimizer = optim.SGD(model.parameters(), lr=0.1, momentum=0.9)

def custom_lr_decay(epoch, lr):
    decay_rate = 0.1
    decay_step = 10
    if epoch % decay_step == 0:
        return lr * decay_rate
    else:
        return lr

# 訓練循環
for epoch in range(100):
    # 訓練模型...
    
    # 更新學習率
    lr = custom_lr_decay(epoch, optimizer.param_groups[0]['lr'])
    for param_group in optimizer.param_groups:
        param_group['lr'] = lr

這些方法都可以幫助你在PyTorch中實現學習率衰減。你可以根據自己的需求選擇合適的方法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女