溫馨提示×

PyTorch中怎么使用優(yōu)化器

小億
83
2024-05-10 15:38:59

在PyTorch中,可以使用torch.optim模塊中的優(yōu)化器來優(yōu)化模型的參數(shù)。以下是一個示例代碼,展示了如何使用優(yōu)化器來訓(xùn)練一個簡單的神經(jīng)網(wǎng)絡(luò)模型:

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

# 定義一個簡單的神經(jīng)網(wǎng)絡(luò)模型
class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.fc = nn.Linear(10, 1)
    
    def forward(self, x):
        return self.fc(x)

# 創(chuàng)建模型實例
model = SimpleModel()

# 定義優(yōu)化器,這里使用隨機梯度下降優(yōu)化器
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 定義損失函數(shù),這里使用均方誤差損失函數(shù)
criterion = nn.MSELoss()

# 模擬一些輸入數(shù)據(jù)和標(biāo)簽
inputs = torch.randn(1, 10)
labels = torch.randn(1, 1)

# 清空梯度
optimizer.zero_grad()

# 前向傳播
outputs = model(inputs)

# 計算損失
loss = criterion(outputs, labels)

# 反向傳播
loss.backward()

# 更新參數(shù)
optimizer.step()

在上面的示例中,我們首先定義了一個簡單的神經(jīng)網(wǎng)絡(luò)模型 SimpleModel,然后創(chuàng)建了模型實例,并定義了優(yōu)化器,損失函數(shù)以及輸入數(shù)據(jù)和標(biāo)簽。接著,我們清空了優(yōu)化器的梯度,進(jìn)行了前向傳播和損失計算,然后進(jìn)行了反向傳播和參數(shù)更新。通過多次迭代這個過程,就可以訓(xùn)練模型并優(yōu)化參數(shù)。

0