Neural network의 초기값은 랜덤임으로 실험마다 성능차이가 생길 수 있다. 어느정도 성능을 보장하기 위해 랜덤시드를 고정해두는 것은 필수이다. 매번 뒤적뒤적 찾기 귀찮아서 박제해놓기!
(**seed를 고정해도 패키지 버전이 같지 않으면 성능이 천차만별이므로 꼭꼭 버전을 모두 맞추도록 하자.)
def seed_all(seed):
os.environ['PYTHONHASHSEED'] = str(seed)
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) # if you are using multi-GPU.
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.enabled = False
return LocalRandGenerator(seed, "cpu")
# Reproducibility
SEED = 2
seed_all(SEED)
'ML&DL > PyTorch' 카테고리의 다른 글
[PyTorch] AttributeError: 'str' object has no attribute '_apply' 해결 (0) | 2023.07.12 |
---|---|
[PyTorch] PyTorch가 제공하는 Activation function(활성화함수) 정리 (0) | 2022.01.19 |
[PyTorch] BrokenPipeError: [Errno 32] Broken pipe 해결 (2) | 2021.02.02 |
[PyTorch] PyTorch가 제공하는 Learning rate scheduler 정리 (6) | 2020.12.02 |
[PyTorch] Dataset과 Dataloader 설명 및 custom dataset & dataloader 만들기 (12) | 2020.09.30 |