隨機數種子seed確定時,模型的訓練結果將始終保持一致。
隨機數種子seed確定時使用相同的網絡結構,跑出來的效果完全不同,用的學習率,迭代次數,batch size 都是一樣。
torch.backends.cudnn.deterministic是啥?顧名思義,將這個 flag 置為True的話,每次返回的卷積算法將是確定的,即默認算法。如果配合上設置 Torch 的隨機種子為固定值的話,應該可以保證每次運行網絡的時候相同輸入的輸出是固定的,代碼大致這樣
4種隨機種子
import torch.backends.cudnn as cudnn
random.seed(opt.manualSeed)
np.random.seed(opt.manualSeed)
torch.manual_seed(opt.manualSeed)
torch.cuda.manual_seed(opt.manualSeed)
cudnn.deterministic = True