pytorch: 딥러닝 모델 결과 재현을 위한 seed 고정하는 법

djlee·2023년 3월 24일
0

모델을 학습하다보면 결과를 재현할 일이 생겨요.
그럴 경우 어떻게 하면 재현을 할 수 있을지 알아볼게요!

모델 결과 재현 하는 방법은 아래 코드 처럼 seed를 설정 해주면 돼요.

import torch
import random
import numpy as np


def set_seed(seed):
    np.random.seed(seed)
    random.seed(seed)
    torch.manual_seed(seed)
    torch.backends.cudnn.deterministic = True
    
set_seed(seed=42)

DataLoader도 seed 설정을 해줘야 해요.

def seed_worker(worker_id):
    worker_seed = torch.initial_seed() % 2**32
    numpy.random.seed(worker_seed)
    random.seed(worker_seed)

g = torch.Generator()
g.manual_seed(0)

DataLoader(
    train_dataset,
    batch_size=batch_size,
    num_workers=num_workers,
    worker_init_fn=seed_worker,
    generator=g,
)

참고

https://pytorch.org/docs/stable/notes/randomness.html

0개의 댓글