Confusione su model.train () [duplicate]
Sono un principiante in pytorch. Ho visto su GitHub che alcuni modelli di deep learning hanno model.train () e altri no, ma possono funzionare normalmente. Voglio sapere se model.train () è necessario? qual è l'effetto?
Risposte
trainla modalità o la evalmodalità è importante solo quando si hanno moduli che si comportano in modo asimmetrico (es. BatchNorm, Dropout) durante l'addestramento / test. Vorrei sottolineare che non influisce affatto sull'accumulo del gradiente. Anche con moduli asimmetrici, è possibile addestrare perfettamente un modello in evalmodalità. Alcuni lo fanno per risparmiare memoria durante l'addestramento utilizzando un modello ImageNet pre-addestrato.
Se non hai moduli asimmetrici, non importa affatto.
Per impostazione predefinita, tutti i moduli iniziano con training=True.
traine la sua controparte evalcambia il modello tra la modalità di formazione e la modalità di valutazione.
In modalità training, i gradienti tracciati vengono generalmente aggiornati ad ogni valutazione del modello. Questo è necessario per eseguire la discesa in pendenza utilizzata per l'allenamento. Nella modalità di valutazione, non lo sono.