gpt4 book ai didi

python - 如何将 L1 正则化添加到 PyTorch NN 模型?

转载 作者:行者123 更新时间:2023-12-04 02:43:33 25 4
gpt4 key购买 nike

在 PyTorch 模型中寻找实现 L1 正则化的方法时,我遇到了 this question ,现在已经 2 岁了,所以我想知道关于这个主题是否有任何新内容?
我还找到了 this recent approach处理缺失的 l1 函数。但是我不明白如何将它用于基本的神经网络,如下所示。

class FFNNModel(nn.Module):
def __init__(self, input_dim, output_dim, hidden_dim, dropout_rate):
super(FFNNModel, self).__init__()
self.input_dim = input_dim
self.output_dim = output_dim
self.hidden_dim = hidden_dim
self.dropout_rate = dropout_rate
self.drop_layer = nn.Dropout(p=self.dropout_rate)
self.fully = nn.ModuleList()
current_dim = input_dim
for h_dim in hidden_dim:
self.fully.append(nn.Linear(current_dim, h_dim))
current_dim = h_dim
self.fully.append(nn.Linear(current_dim, output_dim))

def forward(self, x):
for layer in self.fully[:-1]:
x = self.drop_layer(F.relu(layer(x)))
x = F.softmax(self.fully[-1](x), dim=0)
return x
我希望在训练前简单地把它放在一边:
model = FFNNModel(30,5,[100,200,300,100],0.2)
regularizer = _Regularizer(model)
regularizer = L1Regularizer(regularizer, lambda_reg=0.1)
out = model(inputs)
loss = criterion(out, target) + regularizer.__add_l1()
有没有人了解如何应用这些“即用型”类?

最佳答案

我还没有运行有问题的代码,所以如果有什么地方不能正常工作,请联系。通常,我会说您链接的代码不必要地复杂(这可能是因为它试图通用并允许以下所有类型的正则化)。它的使用方式是,我想

model = FFNNModel(30,5,[100,200,300,100],0.2)
regularizer = L1Regularizer(model, lambda_reg=0.1)

进而
out = model(inputs)
loss = criterion(out, target) + regularizer.regularized_all_param(0.)

您可以查看 regularized_all_param只会 iterate模型的参数,如果它们的名称以 weight 结尾,它将累积它们的绝对值之和。出于某种原因,缓冲区需要手动初始化,这就是我们传入 0. 的原因。 .

确实,如果您希望有效地正则化 L1 并且不需要任何花里胡哨的东西,则类似于您的第一个链接的更多手动方法将更具可读性。它会像这样
l1_regularization = 0.
for param in model.parameters():
l1_regularization += param.abs().sum()
loss = criterion(out, target) + l1_regularization

这确实是两种方法的核心。您使用 Module.parameters 方法来迭代所有模型参数,然后总结它们的 L1 范数,然后成为损失函数中的一个术语。就是这样。您链接的 repo 提出了一些奇特的机制来将其抽象出来,但是,从您的问题来看,失败了:)

关于python - 如何将 L1 正则化添加到 PyTorch NN 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com