Reproducible Result?
- 코랩에서 tensorflow를 활용한 CNN 모델 학습을 진행하다가, 동일한 레이어 및 설정을 해도 결과마다 loss 및 accuracy가 다르게 나오는 경우를 보았다.
- 구글링을 해보니, random seed 및 gpu 연산에 따라서 결과가 다르게 나오는 것이 원인이었다.
- 레이어나 설정에 따라 loss 및 accuracy가 어떻게 변화되는지 확인하고 싶었고, 이에 따라 재현가능한 결과가 나오도록 설정하고 싶었다.
- 이에 따라 몇가지 설정을 적용해서, 동일한 레이어 및 설정에서 동일한 결과가 도출되는 것을 확인하였다.
필요한 설정
- tensorflow의 utils에서 set_random_seed 메서드를 호출하여 시드값을 설정한다.
- tensorflow의 config에서 enable_op_determinism 메서드를 호출한다.
- 노트북 세션을 끊지 않고 계속 테스트를 진행하고자 한다면, tensorflow의 backend에서 clear_session 메서드를 호출한다.
노트북 코드
코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...테스트 결과
- 여러번 시도해도 동일한 결과를 도출한다
- 다만 구동하는 하드웨어가 다른 경우에 하드웨어에 따라 다른 결과를 나타낸다.
- 로컬 실행 결과와 코랩 실행 결과가 다르게 나왔다.