溫馨提示×

首頁 > 教程 > AI深度學(xué)習(xí) > PyTorch教程 > 優(yōu)化器(Optimizers)

優(yōu)化器(Optimizers)

在PyTorch中,優(yōu)化器(Optimizer)是用來更新模型參數(shù)的工具。優(yōu)化器采用梯度下降等優(yōu)化算法來不斷調(diào)整模型參數(shù),使得模型在訓(xùn)練過程中的損失函數(shù)值逐漸降低。在訓(xùn)練模型時,選擇合適的優(yōu)化器是非常重要的。

PyTorch提供了多種優(yōu)化器,如SGD、Adam、Adagrad等。每種優(yōu)化器都有不同的優(yōu)化算法和超參數(shù),需要根據(jù)具體問題選擇合適的優(yōu)化器。

下面是一個簡單的示例,展示如何在PyTorch中使用優(yōu)化器來訓(xùn)練一個簡單的線性回歸模型:

import torch
import torch.nn as nn
import torch.optim as optim

# 準(zhǔn)備數(shù)據(jù)
x = torch.randn(100, 1)
y = 3*x + 2 + 0.2*torch.randn(100, 1)

# 定義模型
model = nn.Linear(1, 1)
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 訓(xùn)練模型
num_epochs = 1000
for epoch in range(num_epochs):
    # 前向傳播
    y_pred = model(x)
    loss = criterion(y_pred, y)
    
    # 反向傳播
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
    if (epoch+1) % 100 == 0:
        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}')

# 查看模型參數(shù)
print('模型參數(shù):', model.state_dict())

在上面的代碼中,我們首先準(zhǔn)備了一組輸入數(shù)據(jù)x和對應(yīng)的標(biāo)簽數(shù)據(jù)y。然后定義了一個簡單的線性回歸模型,并選擇了均方誤差損失函數(shù)作為優(yōu)化目標(biāo)。接著創(chuàng)建了一個SGD優(yōu)化器,設(shè)置學(xué)習(xí)率為0.01。

在訓(xùn)練過程中,我們通過多次迭代更新模型參數(shù),不斷減小損失函數(shù)值。最后可以查看訓(xùn)練后的模型參數(shù)。

總結(jié)來說,在PyTorch中使用優(yōu)化器訓(xùn)練模型的步驟如下:

  1. 準(zhǔn)備數(shù)據(jù)
  2. 定義模型、損失函數(shù)和優(yōu)化器
  3. 迭代訓(xùn)練模型,進(jìn)行前向傳播和反向傳播
  4. 更新模型參數(shù)

通過合理選擇優(yōu)化器和調(diào)整超參數(shù),可以有效提高模型的訓(xùn)練效果。希望這個簡單的示例能夠幫助你理解PyTorch中優(yōu)化器的使用。