| """ | |
| Environment Utils | |
| Author: Xiaoyang Wu (xiaoyang.wu.cs@gmail.com) | |
| Please cite our work if the code is helpful to you. | |
| """ | |
| import os | |
| import random | |
| import numpy as np | |
| import torch | |
| import torch.backends.cudnn as cudnn | |
| from datetime import datetime | |
| def get_random_seed(): | |
| seed = ( | |
| os.getpid() | |
| + int(datetime.now().strftime("%S%f")) | |
| + int.from_bytes(os.urandom(2), "big") | |
| ) | |
| return seed | |
| def set_seed(seed=None): | |
| if seed is None: | |
| seed = get_random_seed() | |
| random.seed(seed) | |
| np.random.seed(seed) | |
| torch.manual_seed(seed) | |
| torch.cuda.manual_seed(seed) | |
| torch.cuda.manual_seed_all(seed) | |
| cudnn.benchmark = False | |
| cudnn.deterministic = True | |
| os.environ["PYTHONHASHSEED"] = str(seed) | |