티스토리 뷰
|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
- 명암비
- 화면캡쳐
- 샌디스크
- 동기화 오류
- 우분투
- 텐서플로우
- 디스플레이
- 와트맨
- 텐서보드
- Jupyter Notebook
- Sandisk
- 픽셀
- AMD
- 크롬
- constant
- 프리싱크
- 윈도우10
- 주피터 노트북
- tensorboard
- 스레드리퍼
- RS4
- 아마존
- 라데온
- tensorflow gpu
- 최적화
- 쓰레드리퍼
- 명암
- 화면캡쳐프로그램
- TensorFlow
- VSCode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |