pytorch怎么l2正则化
时间: 2024-06-24 19:01:36 浏览: 95
PyTorch中的正则化:提升模型性能的秘诀
在PyTorch中,L2正则化(也称为权重衰减或岭回归)是一种常用的防止过拟合的技术。它通过对模型参数添加一个基于参数范数的惩罚项来减少复杂性。L2正则化的数学公式是:`loss = original_loss + λ * (||w||^2) / 2`,其中`original_loss`是原始损失函数,`λ`是正则化强度,`w`是模型参数,`||w||^2`是参数向量的平方和。
在PyTorch中,如何添加L2正则化到模型训练中,你可以按照以下步骤操作:
1. **定义模型**:
```python
model = MyModel()
```
2. **初始化模型参数**:
```python
for param in model.parameters():
if param.requires_grad:
param.data.normal_(0, 0.01)
```
3. **创建优化器时添加L2正则化**:
```python
l2_reg = 0.001 # 正则化强度
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, weight_decay=l2_reg)
```
在这里,`weight_decay`参数就是L2正则化的系数,可以直接传入预设的正则化强度`l2_reg`。
4. **训练循环**:
```python
for epoch in range(num_epochs):
for inputs, targets in train_loader:
optimizer.zero_grad() # 清零梯度
outputs = model(inputs)
loss = criterion(outputs, targets) + l2_reg * torch.norm(model.parameters(), 2) ** 2 # 添加L2正则化项
loss.backward() # 反向传播
optimizer.step() # 更新参数
```
在计算损失时,我们直接将L2范数加入到损失函数中。
阅读全文