pytorch之torch.backends.cudnn.benchmark=True——使用 GPU 来加速网络的训练
文章目錄
- 簡介
- 適用場景
簡介
import torch torch.backends.cudnn.enabled = True torch.backend.cudnn.benchmark=TruecuDNN使用非確定性算法,并且可以使用torch.backends.cudnn.enabled = False來進行禁用
如果設置為torch.backends.cudnn.enabled =True,說明設置為使用使用非確定性算法
然后再設置:
torch.backends.cudnn.benchmark = True
所以我們經常看見在代碼開始出兩者同時設置:
torch.backends.cudnn.enabled = True torch.backends.cudnn.benchmark = True適用場景
大部分情況下:
設置這個 flag 可以讓內置的 cuDNN 的 auto-tuner 自動尋找最適合當前配置的高效算法,來達到優化運行效率的問題。
設置?torch.backends.cudnn.benchmark=True?將會讓程序在開始時花費一點額外時間,為整個網絡的每個卷積層搜索最適合它的卷積實現算法,進而實現網絡的加速。
一般來講,應該遵循以下準則:
如果網絡的輸入數據維度或類型上變化不大,網絡結構固定(不是動態變化的),網絡的輸入形狀(包括 batch size,圖片大小尺寸,輸入的通道)是不變的,設置 torch.backends.cudnn.benchmark = true 可以增加運行效率;
benchmark模式會提升計算速度,但是由于計算中有隨機性,每次網絡前饋結果略有差異。如果想要避免這種結果波動,設置:torch.backends.cudnn.deterministic = True保證實驗的可重復性。
反之,如果網絡的輸入數據在每次 iteration 都變化的話,(例如,卷積層的設置一直變化、某些層僅在滿足某些條件時才被“激活”,或者循環中的層可以重復不同的次數),會導致 cnDNN 每次都會去尋找一遍最優配置,這樣反而會耗費更多的時間,降低運行效率。
總結
以上是生活随笔為你收集整理的pytorch之torch.backends.cudnn.benchmark=True——使用 GPU 来加速网络的训练的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 取消电脑默认u盘启动怎么办 电脑开机不想
- 下一篇: 怎么除掉u盘病毒 如何清除U盘病毒