model.train()
tells your model that you are training the model. So effectively layers like dropout, batchnorm etc. which behave different on the train and test procedures know what is going on and hence can behave accordingly.
More details: It sets the mode to train (see source code). You can call either model.eval()
or model.train(mode=False)
to tell that you are testing. It is somewhat intuitive to expect train
function to train model but it does not do that. It just sets the mode.
這兩個函數並沒有真正使網絡運行起來,只是設置了網絡的運行模式(是訓練還是推理)