在訓練和測試階段行為差距較大的層亩冬,常用的有:batchnorm、dropout硅急、instancenurm等。i其中营袜,nstancenorm是在一個channel中做歸一化,算H*W的均值凤壁,用在風格化遷移跪另∨《叮可以加速模型的收斂免绿,并且保持每個圖像實例之間的獨立。
對于這種有較大差距的層的使用嘲驾,需要在測試階段將training的值設置為False,否則會有很大的影像 徒仓。將每層中的參數(shù)training設置為TRUE/FALSE較為繁瑣誊垢,常用的就是model.train() and model.eval()
兩者的用法與區(qū)別:
***? ? 兩者分別作用在訓練和測試階段的開頭位置,model.train() 表示啟動batchnorm彤枢、dropout、instancenorm功能缴啡,model.eval()表示直接調用上述層已經(jīng)訓練好的參數(shù)來對測試集進行預測。
如果在測試階段沒有加model.eval(),可能會因test的batch_size過小秒咐,很容易就會被BN層導致生成圖片顏色失真極大
用法示例如下: