設置 torch.backends.cudnn.benchmark=True 將會讓程序在開始時花費一點額外時間,為整個網絡的每個卷積層搜索最適合它的卷積實現算法,進而實現網絡的加速。適用場景是網絡結構固定(不是動態變化的),網絡的輸入形狀(包括 batch size,圖片大小,輸入的通道)是不變的,其實也就是一般情況下都比較適用。反之,如果卷積層的設置一直變化,將會導致程序不停地做優化,反而會耗費更多的時間。
添加的位置:
在模型的開始之前
import torch.backends.cudnn as cudnn
cudnn.deterministic = True
cudnn.benchmark = True
使用的測試模型是 ResNet-101,GPU 是 GTX 1060,訓練時間縮短了15%