-
keras, tensorflow에서 항상 같은 결과를 얻는 방법Deep Learning 2023. 1. 6. 14:24반응형
모델 검증을 위해, 항상 돌릴 때마다 같은 결과를 얻을 수 있도록 하는 방법이다.
고정할 수 있는 시드들은 고정하고도, 항상 돌릴 때마다 추세는 아주 비슷하지만, 조금씩은 다른 부분이 나타나서 고민했다.
그러다 os.environ으로 고정시키는 방법을 발견했다. 이제는 각 epoch마다 나오는 accuracy 결과도 다 같다. 완전히 고정이 됨을 확인하였다.
코드는 아래와 같다.
한 코드로 모델을 여러개 만든다면, 각 모델을 돌릴 때마다 실행되도록 for문 안에 set_seed()를 사용해주어야 공정하게 평가할 수 있다.
import numpy as np import tensorflow as tf import random #같은 결과가 계속 나오게 하기 위한 set_seed 함수. #이는 각 모델이 만들어지는 for문 안에서 각각 실행해야 함. def set_seed(seed=14): np.random.seed(seed) tf.random.set_seed(seed) random.seed(seed) os.environ['TF_DETERMINISTIC_OPS'] = "1" os.environ['TF_CUDNN_DETERMINISM'] = "1" os.environ['PYTHONHASHSEED'] = str(seed)
이 글이 도움이 되었다면 ♥ 클릭 부탁드립니다~
반응형'Deep Learning' 카테고리의 다른 글
[딥러닝] train/test/val 폴더 코드 한 줄로 나누기 (0) 2022.05.24 딥러닝 기초 강의 (0) 2019.06.20 [Tensorflow, Keras, jupyter notebook] 현재 잘 쓰고 있는 버전 (0) 2019.04.19 [Tensorflow 텐서플로우] InternalError: GPU sync failed (0) 2019.04.18