티스토리 뷰
|tf.truncated_normal 와 tf.random_normal
텐서플로우에서 랜덤으로 수를 주는 방법은 여러가지가 있습니다.
tf.truncated_normal 와 tf.random_normal 는 매우 비슷하게 작동하지만 큰 차이가 있습니다.
어떠한 차이가 있는지는 직접 그래프를 보면서 알아보면 알기 쉽습니다.
우선 사전적 의미로 truncated를 찾아보게되면 '끝이 잘린'이라고 해석됩니다. 즉 특정값을 경계로 자르는 것입니다.
우선 이론적부터 살펴보면 두함수 모두 랜덤하게 값을 가져오는 방법입니다.
다만 두 방식의 가장 큰 차이는 tf.truncated_normal 은 너무 작거나 너무 큰 값이 아닌 값으로 랜덤한 값을 가져오는 것입니다.
이는 딥러닝이나 머신러닝 중 너무큰값이나 너무작은값이 들어오면 작동을 멈춰버리는것을 해결하기 위한 방법입니다.
아래는 실제로 어떻게 다른지 그래프로 비교하겠습니다.
|tf.truncated_normal 와 tf.random_normal 그래프 비교
직접 비교하기 위한 코드입니다. 만약 matplotlib을 설치 안했다면
1 |
pip install matplotlib |
cs |
를 쳐서 설치한 다음 실행하면 됩니다.
위 그림에서 알 수 있듯이
tf.truncated_normal은 -2와 +2를 경계로 잘려있지만 tf.random_normal은 모든값이 다 나오는걸 확인할 수 있습니다.
여기서 표준편차를 구해서 표준편차 -2, 2를 경계로 잘라냅니다.
그이유는 위에서 말했듯이 차이가 너무 크거나 작은 값은 걸러내기 때문입니다.
|소스
위 파일은 해당 주피터노트북 소스파일입니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
import tensorflow as tf
import matplotlib.pyplot as pltpip install matplotlib
n = 100000
A = tf.truncated_normal((n,))
B = tf.random_normal((n,))
with tf.Session() as sess:
a, b = sess.run([A, B])
plt.hist(a, 1000, (-4.5, 4.5));
plt.hist(b, 1000, (-4.5, 4.5)); |
cs |
출처/참고
https://matplotlib.org/1.2.1/examples/pylab_examples/histogram_demo.html
광고
- Total
- Today
- Yesterday
- VSCode
- 아마존
- 스레드리퍼
- 와트맨
- RS4
- AMD
- 라데온
- 디스플레이
- 명암
- Sandisk
- 샌디스크
- 주피터 노트북
- 프리싱크
- 명암비
- 동기화 오류
- 우분투
- 텐서보드
- 화면캡쳐프로그램
- Jupyter Notebook
- tensorflow gpu
- 픽셀
- 크롬
- 텐서플로우
- tensorboard
- constant
- 화면캡쳐
- 쓰레드리퍼
- 최적화
- 윈도우10
- TensorFlow
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |