Pourquoi utiliser différentes variations de softmax dans la formation et la validation pour les réseaux de neurones avec Pytorch?

datascience.stackexchange https://datascience.stackexchange.com/questions/55463

Question

Plus précisément, je travaille sur un projet de modélisation, et je vois le code de quelqu'un d'autre qui ressemble

def forward(self, x):
    x = self.fc1(x)
    x = self.activation1(x)
    x = self.fc2(x)
    x = self.activation2(x)
    x = self.fc3(x)
    x = self.activation3(x)
    # use log softmax + NLLLoss in training; softmax to make predictions
    if self.training:
        x = self.log_softmax(x)
    else:
        x = self.softmax(x)
    return x

Pour le contexte, cela utilise Pytorch, et c'est sur un problème de classification. Le critère est nllloss. Quelle est la justification derrière l'utilisation log_softmax pour la formation mais utiliser softmax Pour les prédictions réelles?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top