国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

PyTorch 重現(xiàn)性

2020-09-11 09:44 更新
原文: https://pytorch.org/docs/stable/notes/randomness.html

在 PyTorch 發(fā)行版,單獨(dú)的提交或不同的平臺上,不能保證完全可重復(fù)的結(jié)果。 此外,即使在使用相同種子的情況下,結(jié)果也不必在 CPU 和 GPU 執(zhí)行之間再現(xiàn)。

但是,為了使計(jì)算能夠在一個特定平臺和 PyTorch 版本上確定特定問題,需要采取幾個步驟。

PyTorch 中涉及兩個偽隨機(jī)數(shù)生成器,您將需要手動對其進(jìn)行播種以使運(yùn)行可重復(fù)。 此外,您應(yīng)確保代碼所依賴的所有其他庫以及使用隨機(jī)數(shù)的庫也使用固定種子。

torch

您可以使用 torch.manual_seed() 為所有設(shè)備(CPU 和 CUDA)播種 RNG:

import torch
torch.manual_seed(0)

有一些使用 CUDA 函數(shù)的 PyTorch 函數(shù)可能會導(dǎo)致不確定性。 此類 CUDA 函數(shù)的一類是原子運(yùn)算,尤其是atomicAdd,其中不確定與相同值的并行加法順序,對于浮點(diǎn)變量,其結(jié)果是方差的來源。 向前使用atomicAdd的 PyTorch 函數(shù)包括 torch.Tensor.index_add_() ,  torch.Tensor.scatter_add_() , torch.bincount() 。

許多操作都向后使用atomicAdd,特別是 torch.nn.functional.embedding_bag() , torch.nn.functional.ctc_loss() 和許多形式的合并,填充和采樣。 當(dāng)前,沒有簡單的方法可以避免這些函數(shù)中的不確定性。

銅網(wǎng)

在 CuDNN 后端上運(yùn)行時(shí),必須設(shè)置另外兩個選項(xiàng):

torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

警告

確定性模式可能會對性能產(chǎn)生影響,具體取決于您的模型。 這意味著,由于模型具有確定性,因此與模型不確定時(shí)相比,處理速度(即每秒處理的批次項(xiàng)目)可能會更低。

脾氣暴躁的

如果您或您正在使用的任何庫都依賴于 Numpy,則也應(yīng)為 Numpy RNG 設(shè)置種子。 這可以通過以下方式完成:

import numpy as np
np.random.seed(0)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號