温馨提示×

pytorch train正则化怎么做

小樊
81
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