L2正则化代码 pytorch
时间: 2023-09-22 15:09:25 浏览: 204
PyTorch中的正则化:提升模型性能的秘诀
以下是一个使用 PyTorch 实现 L2 正则化的示例代码:
```python
import torch
# 定义模型
class MyModel(torch.nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc1 = torch.nn.Linear(10, 5)
self.fc2 = torch.nn.Linear(5, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
# 实例化模型
model = MyModel()
# 定义 L2 正则化的权重衰减系数 lambda
l2_lambda = 0.01
# 定义损失函数和优化器
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# 训练模型
for epoch in range(100):
# 前向传播
y_pred = model(torch.randn(1, 10))
# 计算损失函数
loss = criterion(y_pred, torch.randn(1, 1))
# 添加 L2 正则化项
l2_reg = torch.tensor(0.)
for param in model.parameters():
l2_reg += torch.norm(param)
loss += l2_lambda * l2_reg
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印损失函数
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
```
在上面的代码中,我们首先定义了一个简单的模型,包含两个全连接层。然后,我们定义了一个权重衰减系数 `l2_lambda`,用于控制 L2 正则化的强度。接着,我们定义了损失函数和优化器。在每个训练迭代中,我们首先对模型进行前向传播,然后计算损失函数。接下来,我们计算模型参数的 L2 范数,并将其添加到损失函数中。最后,我们进行反向传播和优化,并打印损失函数。
阅读全文