BCEWithLogitsLoss Pytorch – Python Class

Implémentons le parcours en profondeur python d'un Graphe. Cela consiste à explorer le graphe en mémorisant les sommets visités et le chemin pour y arriver.

BCEWithLogitsLoss voici quelques explications complémentaire sur l’utilisation de Binary Cross-Entropy Loss avec Pytorch en python.

On m’a demandé récemment comment trouver le code de Binary Cross-Entropy Loss(https://discuss.pytorch.org/t/implementation-of-binary-cross-entropy/98715/2) pour une fonction appelée dans PYTORCH avec la fonction handle_torch_function.

C’est une combinaison de BCELOSS + une couche Sigmoid. C’est plus stable numériquement que l’utilisation d’un Sigmoid suivie d’un BCELoss comme, ici on tire parti de l’astuce log-sum-exp pour la stabilité numérique voir: https://en.wikipedia.org/wiki/LogSumExp

Bcewithlogitsloss : quelques explications

  1. Le code de la classe se trouve dans https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/loss.py
   def forward(self, input: Tensor, target: Tensor) -> Tensor:
        return F.binary_cross_entropy_with_logits(input, target,
                                                  self.weight,
                                                  pos_weight=self.pos_weight,
                                                  reduction=self.reduction)
BCEWithLogitLoss PYTORCH

Le F oject est importé de functionnal.py ici : https://github.com/pytorch/pytorch/blob/master/torch/nn/functional.py

Vous trouverez la fonction appelée

def binary_cross_entropy_with_logits(input, target, weight=None, size_average=None,
                                     reduce=None, reduction='mean', pos_weight=None):

Il appelle le handle_torch_function dans https://github.com/pytorch/pytorch/blob/master/torch/overrides.py
On trouve une entrée de la fonction binary_cross_entropy_with_logits dans le dictionnaire ret qui contiennent toutes les fonctions qui peuvent être overridé dans pytorch. Il s’agit de l’implémentation Python de torch_function plus d’informations dans https://github.com/pytorch/pytorch/issues/24015

Ensuite, le code appelé est dans le C++
Filehttps://github.com/pytorch/pytorch/blob/master/aten/src/ATen/native/Loss.cpp

Tensor binary_cross_entropy_with_logits(const Tensor& input, const Tensor& target, const Tensor& weight, const Tensor& pos_weight, int64_t 
...
BCEWithLogitLoss PYTORCH

LIENS DE RESSOURCES :

https://pytorch.org/

Liens internes

https://128mots.com/index.php/category/graphes/

https://128mots.com/index.php/category/python/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *