def set_random_seed(random_seed):
"""Set random seed"""
random.seed(random_seed)
np.random.seed(random_seed)
os.environ["PYTHONHASHSEED"] = str(random_seed)
torch.manual_seed(random_seed)
torch.cuda.manual_seed(random_seed)
torch.cuda.manual_seed_all(random_seed)
torch.backends.cudnn.deterministic = True
-
random.seed(random_seed)
: 这一行设置了 Python 内置的 random
模块的随机种子,确保使用 random
模块生成的随机数是确定性的。
-
np.random.seed(random_seed)
: 这一行设置了 NumPy 库的随机种子,确保使用 NumPy 库生成的随机数是确定性的。
-
os.environ["PYTHONHASHSEED"] = str(random_seed)
: 这一行设置了 Python 的哈希种子,可确保在使用哈希函数时生成的结果是确定性的,例如在使用字典或集合时。
-
torch.manual_seed(random_seed)
: 这一行设置了 PyTorch 库的随机种子,确保使用 PyTorch 库生成的随机数是确定性的。
-
torch.cuda.manual_seed(random_seed)
: 这一行设置了 PyTorch 库在 GPU 上生成随机数的种子,确保在 GPU 上生成的随机数也是确定性的。
-
torch.cuda.manual_seed_all(random_seed)
: 这一行设置了 PyTorch 库在多个 GPU 上生成随机数的种子,同样确保了在多 GPU 设置下生成的随机数是确定性的。
-
torch.backends.cudnn.deterministic = True
: 这一行设置了 PyTorch 库的 CuDNN 后端使其在卷积操作中具有确定性,这可以确保在使用 GPU 加速时生成的结果是确定性的。