(débutant pytorch ici)Dans Pytorch, comment ajouter le régularisateur L1 aux activations?
Je voudrais ajouter le régularisateur L1 à la sortie d'activations d'un ReLU. Plus généralement, comment ajouter un régularisateur uniquement à une couche particulière du réseau?
Ce poste peut être lié: Adding L1/L2 regularization in PyTorch? Toutefois soit il n'est pas lié, ou bien je ne comprends pas la réponse:
Il se réfère à une régularisateur L2 appliquée dans l'optimisation, ce qui est une autre chose. En d'autres termes, si la perte globale souhaitée est
crossentropy + lambda1*L1(layer1) + lambda2*L1(layer2) + ...
Je crois que le paramètre fourni à torch.optim.Adagrad est appliqué uniquement à la perte d'entropie croisée. Ou peut-être qu'il est appliqué à tous les paramètres (poids) à travers le réseau. Mais dans tous les cas il ne semble pas permettre d'appliquer un régularisateur à une seule couche d'activations, et ne fournit pas de perte L1.
Un autre sujet pertinent est nn.modules.loss, qui inclut L1Loss(). Dans la documentation, je ne comprends pas encore comment l'utiliser.
Enfin, il y a ce module https://github.com/pytorch/pytorch/blob/master/torch/legacy/nn/L1Penalty.py qui semble le plus proche du but, mais il s'appelle "legacy". Pourquoi donc?
Pour une solution de niveau relativement élevé, vous pouvez regarder [lien] (https://github.com/ncullen93/torchsample). Cela vous donne une interface keras-like pour faire beaucoup de choses facilement dans pytorch, et en ajoutant spécifiquement divers régularisateurs. –