난수 생성시 시드를 사용하는 이유에 대해 알아봅니다.
2023. 8. 27 최초작성
난수를 생성시 동일한 시드를 사용하면 동일한 난수를 얻게 됩니다. 예를 들어 np.random.rand()를 사용하여 난수를 생성시키는 경우를 살펴보겠습니다. np.random.seed를 사용하여 동일한 시드 123을 사용한 경우에는 np.random.rand()를 사용하여 난수 2개를 연속해서 생성시 똑같은 값이 출력되는 것을 볼 수 있습니다.
Python 인터프리터를 실행하여 테스트해보겠습니다.
webnautes@webnautesui-MacBookAir ~ % python
Python 3.9.13 (main, May 24 2022, 21:13:51)
[Clang 13.1.6 (clang-1316.0.21.2)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
넘파이 모듈을 임포트합니다.
>>> import numpy as np
np.random.rand()를 호출할때 마다 다른 난수를 출력하는 것을 볼 수 있습니다.
>>> np.random.rand()
0.5325121718728301
>>> np.random.rand()
0.3235663945078062
>>> np.random.rand()
0.952589570443413
np.random.seed를 사용하여 시드로 123을 설정합니다.
>>> np.random.seed(123)
np.random.rand를 사용하여 난수 2개를 생성합니다. 지금 생성된 난수 2개를 확인해둡니다.
>>> np.random.rand()
0.6964691855978616
>>> np.random.rand()
0.28613933495037946
다시 np.random.seed를 사용하여 시드로 123을 설정한 후 난수 생성시 어떤 변화가 있는지 살펴보겠습니다.
>>> np.random.seed(123)
np.random.rand를 사용하여 난수 2개를 생성하면 앞에서 생성했던 난수 2개와 순서도 값도 동일한 것을 볼 수 있습니다.
>>> np.random.rand()
0.6964691855978616
>>> np.random.rand()
0.28613933495037946
지금까지 살펴본 것처럼 동일한 시드를 설정한 후에 난수를 생성하면 동일한 값의 난수가 동일한 순서로 생성하는 것을 볼 수 있습니다. 모델을 학습하거나 추론시 동일한 입력에 대해서는 항상 동일한 결과가 출력되는 것이 중요하기 때문에 난수 생성시 시드를 동일한 값으로 설정합니다.
참고
https://www.quora.com/What-is-seed-in-random-number-generation
'Deep Learning & Machine Learning > 딥러닝&머신러닝 개념' 카테고리의 다른 글
기대값이란 (0) | 2023.11.05 |
---|---|
신경망(neural networks)에서 편향(bais)의 역할 (0) | 2023.10.28 |
정규화(Normalization), 표준화(standardization), 이상치(outlier) 제거 (0) | 2023.10.23 |
XGBoost 개념 정리 (0) | 2023.10.18 |
분산과 표준 편차 차이 정리 (2) | 2023.10.09 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!