PyTorchでモデルの正則化を行う方法は何ですか?
PyTorchでは、モデルの最適化プログラムに正則化手法を使用してモデルを正則化することができます。一般的な正則化手法には、L1正則化とL2正則化があります。
L1正則化に関しては、最適化手法を定義する際にweight_decayパラメーターを指定して、正則化の係数を設定することができます。例えば:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001)
L2正則化に関して、最適化器を定義する際にweight_decayパラメータを渡すことで、正則化の係数を指定することもできます。例えば:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001)
モデルのトレーニング中に、正則化を手動で計算し、追加することもできます。例えば、最適化プログラム内で正則化を定義する代わりに。
# 定义L2正则化项
l2_reg = torch.tensor(0., requires_grad=True)
for param in model.parameters():
l2_reg += torch.norm(param)
# 定义损失函数,并加入L2正则化项
criterion = nn.CrossEntropyLoss()
loss = criterion(output, target) + lambda * l2_reg
このようにすれば、モデルの正則化が可能になります。