devskim blog
Search
🌊

Tensorflow Reproducible Result

Tags
Python
MachineLearning
Created
Jan 28, 2023 03:07 AM
Last Updated
Jul 30, 2023 09:49 AM
 
 
 

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 메서드를 호출한다.
 
 

노트북 코드

코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...
notion image
코드를 불러오는 중 입니다 ...
notion image
코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...
notion image
코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...
notion image
코드를 불러오는 중 입니다 ...코드를 불러오는 중 입니다 ...
notion image
코드를 불러오는 중 입니다 ...
notion image
코드를 불러오는 중 입니다 ...
notion image
 
 

테스트 결과

  • 여러번 시도해도 동일한 결과를 도출한다
  • 다만 구동하는 하드웨어가 다른 경우에 하드웨어에 따라 다른 결과를 나타낸다.
    • 로컬 실행 결과와 코랩 실행 결과가 다르게 나왔다.
 
PREVYolov3 Darknet 설정 (Windows11)
NEXTDNN 코드 정리