Confusione su model.train () [duplicate]

Sep 07 2020

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

1 hkchengrex Sep 07 2020 at 13:06

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.

2 gspr Sep 07 2020 at 12:25

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.