torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
seed = args.seed
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
-
torch.backends.cudnn.deterministic = True
: 这一行代码设置 PyTorch 使用 cuDNN 时的确定性模式。在此模式下,cuDNN 将使用确定性算法,以确保相同输入的结果在多次运行中保持一致。这样设置是为了保证在使用 cuDNN 加速时,得到的结果具有可复现性。 -
torch.backends.cudnn.benchmark = False
: 这一行代码关闭 cuDNN 的自动调优功能。cuDNN 在每次运行前会根据硬件和输入数据的大小自动选择最优的卷积算法,以提高性能。然而,这样可能导致结果在不同运行之间出现微小的差异。通过将torch.backends.cudnn.benchmark
设置为False
,禁用自动调优,以确保每次运行的结果一致。 -
seed = args.seed
: 这一行代码将变量seed
的值设置为传入的参数args.seed
。这个参数很可能是用于控制随机数种子的数值。 -
random.seed(seed)
: 这一行代码通过调用 Python 的random
库的seed
函数,将随机数生成器的种子设置为seed
。这样,后续调用random
库的随机函数时,将得到相同的随机数序列。 -
np.random.seed(seed)
: 这一行代码通过调用 NumPy 库的seed
函数,将随机数生成器的种子设置为seed
。与第四行代码类似,这样后续调用 NumPy 库的随机函数时,将得到相同的随机数序列。 -
torch.manual_seed(seed)
: 这一行代码通过调用 PyTorch 的manual_seed
函数,将 CPU 上的随机数生成器的种子设置为seed
。同样,这样后续调用 PyTorch 的随机函数时,将得到相同的随机数序列。 -
torch.cuda.manual_seed_all(seed)
: 这一行代码通过调用 PyTorch 的cuda.manual_seed_all
函数,将所有可用的 GPU 上的随机数生成器的种子设置为seed
。这样,在使用 GPU 进行计算时,同样可以保证可复现性。
代码来自https://github.com/jacobzhaoziyuan/AMR-Loss
记下笔记。