random seed 고정 시키기

2021. 7. 22. 17:18민공지능/code

pytorch seed 고정

random_seed = 530

torch.manual_seed(random_seed)
torch.cuda.manual_seed(random_seed)
torch.cuda.manual_seed_all(random_seed) # if use multi-GPU
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
np.random.seed(random_seed)
random.seed(random_seed)

tensorflow seed 고정

SEED = 50

os.environ['PYTHONHASHSEED'] = str(SEED)
os.environ['TF_DETERMINISTIC_OPS'] = '1'

tf.random.set_seed(SEED)
np.random.seed(SEED)
random.seed(SEED)

모델을 학습시킬 때 마다 seed 고정을 해도 값이 다르게 나온다면 위의 코드를 넣어주면 된다. 

[[node categorical_crossentropy/softmax_cross_entropy_with_logits (defined at C:\Users\sswwd\anaconda3\envs\nmb\lib\site-packages\keras\backend.py:4842) ]] [Op:__inference_train_function_6803]  

Function call stack:
train_function

 

os.environ['TF_DETERMINISTIC_OPS'] = '1' 이 부분에서 에러가 나면 tensorflow 버전을 바꾸자!

 

기존 tensorflow-gpu (2.4.1) 에서 tensorflow-gpu (2.3.1)로 바꿔주니 돌아간다

 

해피.