在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正则化。正则化项将会被添加到损失函数中,从而影响模型的优化过程。