溫馨提示×

pytorch train正則化怎么做

小樊
100
2024-12-26 03:26:34
欄目: 深度學習

在PyTorch中,正則化是一種用于防止模型過擬合的技術。常見的正則化方法有L1和L2正則化。在定義模型時,可以通過設置weight_decay參數來實現正則化。

下面是一個使用PyTorch實現L2正則化的例子:

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

# 定義一個簡單的模型
class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

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

# 定義損失函數和優化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.01)

# 訓練模型
for epoch in range(100):
    # 生成隨機輸入和目標
    inputs = torch.randn(1, 10)
    targets = torch.randn(1, 1)

    # 前向傳播
    outputs = model(inputs)

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

    # 反向傳播和優化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))

在這個例子中,我們在定義優化器時設置了weight_decay參數為0.01,這將會對模型的所有權重進行L2正則化。正則化項將會被添加到損失函數中,從而影響模型的優化過程。

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