web-dev-qa-db-fra.com

Que fait model.train () dans pytorch?

Est-ce qu'il appelle forward() dans nn.Module? Je pensais que lorsque nous appelons le modèle, la méthode forward est utilisée . Pourquoi devons-nous spécifier train ()?

7
Aerin

model.train() indique à votre modèle que vous entraînez le modèle. Si bien que des couches telles que les abandons, les batchnorm, etc., qui se comportent différemment dans le train et les procédures d’essai savent ce qui se passe et peuvent donc se comporter en conséquence. 

Plus de détails: Il configure le mode pour former (Voir code source ). Vous pouvez appeler model.eval () ou model.train (mode = False) pour indiquer que vous testez . Il est assez intuitif de s'attendre à une fonction train pour entraîner le modèle, mais cela ne se produit pas. Cela définit simplement le mode. 

8
Umang Gupta

Il y a deux façons de faire savoir au modèle votre intention, par exemple voulez-vous former le modèle ou utiliser le modèle pour évaluer . Dans le cas de model.train (), le modèle sait qu'il doit apprendre les couches et lorsque nous utilisons model.eval (), il indique au modèle qu'aucune nouvelle information n'est à apprendre et que le modèle est utilisé pour les tests . model.eval () est également nécessaire car, dans pytorch, si nous utilisons batchnorm et pendant si nous voulons simplement passer une seule image, pytorch lève une erreur si model.eval () n'est pas spécifié. 

1
kelam gautam