【发布时间】:2020-01-30 00:02:47
【问题描述】:
在寻找在 PyTorch 模型中实现 L1 正则化的方法时,我遇到了 this question,它现在已经 2 岁了,所以我想知道这个主题是否有什么新东西?
我还发现this recent approach 处理丢失的 l1 函数。但是我不明白如何将它用于基本 NN,如下所示。
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()
有人了解如何应用这些“即用型”类吗?
【问题讨论】:
-
您可能需要考虑将您的 "EDIT / SIMPLE SOLUTION" 添加为问题的答案,而不是将其包含在问题正文中。
-
请不要在问题中包含答案;而是发布一个单独的答案。
标签: python neural-network pytorch loss-function