(这里是Pythorch初学者)
我想将L1正则化器添加到ReLU的激活输出中。 更一般地说,如何只将正则化器添加到网络中的特定层?
此帖子可能与以下内容有关: Adding L1/L2 regularization in PyTorch? 但要么与此无关,要么我不明白答案:
它指的是在优化中应用的L2正则化器,这是另一回事。 换句话说,如果总的期望损失是
crossentropy + lambda1*L1(layer1) + lambda2*L1(layer2) + ...
我相信提供给torch.optim.Adagrad的参数只适用于交叉熵损失。 或者它可能应用于网络中的所有参数(权重)。但无论如何 似乎不允许将正则化器应用于单个激活层, 不提供L1损失。
另一个相关主题是nn.modules.loss,它包括L1Loss()。 从文档中,我还不知道如何使用这个。
最后,有一个模块https://github.com/pytorch/pytorch/blob/master/torch/legacy/nn/L1Penalty.py似乎最接近目标,但它被称为“遗留”。为什么?
以下是您的操作方法:
loss
变量将是输出w.r.t.目标的交叉熵损失和L1惩罚的总和。下面是一个示例代码
@Sasank奇拉姆库蒂 正则化应该是模型每一层的加权参数,而不是每一层的输出。请看下面: Regularization
相关问题 更多 >
编程相关推荐