tf.random.set_seed()tf.keras.utils.set_seed()프레임 워크 전반에 걸쳐 초기 난수 생성을 제어함.
tf.random.uniform([1], seed=seed_value)LSTM(lstm_node, return_sequences=True, seed=seed_value)Dropout(drop_out_rate, seed=seed_value)지정된 연산에만 난수 생성을 제어함.
- global random seed를 설정할 경우 같은 패턴의 난수 생성
Cell을 실행할때마다 같은 수치가 나오는게 아닌 같은 패턴으로 나옴.
- 주의할 점은 jupyter에서 Cell을 두번 실행하는건 Cell 내 메소드를 두번 호출한것과 같아서 Cell을 여러번 실행할 경우 매번 수치가 다르게 나올 수 있음.
- 매번 Cell 실행마다 같은 수치가 나오길 원한다면 위처럼 Cell 안에 random seed를 선언해주어야 함.
- 해당 사진은 2번째 Cell을 두번 실행한 이후 jupyter Restart를 한 뒤 3번째 Cell을 실행함.
- 눈여겨 볼 부분은 두번째 호출값이 동일한 것
- operation-level random seed 역시 마찬가지로 Cell을 실행할때마다 매번 같은 수치가 나오는것이 아닌 일정 패턴에 따라 출력됨.
| G-seed | O-seed | description |
|---|---|---|
| O | X | 프레임 워크 전반적으로 초기 난수 패턴이 설정됨 |
| X | O | Operation-level-seed값이 설정된 메소드 한에서 초기 난수 패턴이 설정됨. |
| O | O | 프레임 워크 전반적으로 초기 난수 패턴이 설정되며 O-seed를 설정한 메소드 한해서는 G-seed가 적용된 메소드와 다른 난수 패턴이 설정됨. |