본문 바로가기
Python/Tensorflow

[We-Co] random_normal(), random_uniform() 난수텐서 초기화

by 위기의코딩맨 2021. 7. 22.
반응형

안녕하세요. 위기의코딩맨 입니다.

저번 블로그 글에서는 상수 텐서 초기화 함수를 몇개 알아보았습니다.

오늘은 난수텐서 초기화 하는 간단한 방법을 알아보도록 하겠습니다.

 

상수텐서는 아이디어를 테스트할 때 사용하면 편리하지만 보통은 난수로 텐서를 초기화 하여 진행합니다.

일반적으로 각 원소를 추출하는 방법은 확률분포에서 텐서에서 추출하게 됩니다.

정규분포균등균포 초기화 하는 방법이 있는데

 

정규분포는 장기간 축적되어 있는 데이터를 기반으로 다음 데이터를 예상하는 방법을 말하고

 

균등분포는 앞으로 예상가지 않은 데이터를 말한다.

주사위를 몇번 던져도 다음 주사위가 어떤 숫자가 나올지 알 수 없는 것을 예로 들 수 있다.

 

여기서 random_normal()을 사용하여 평균과 표준편차를 지정한 정규분포에서 추출 값을 특정한 텐서의 원소로 초기화 할 수 있습니다.

 

with tf.Session() as sess:
    a = tf.random_normal((2,2), mean=0, stddev=1)
    print(a.eval())

 

첫번째 인자로는 생성 행렬을 선택하고, mean은 평균, stddev는 편차를 나타냅니다.

결과 값을 보면 (2,2) 의 랜덤 값으로 채워진 것을 볼 수 있습니다.

결과 값

그러나 정규분포에서는 엄청나게 큰 텐서를 사용할 때가 있기때문에, 평균에서 큰 차이가 나올 수 있습니다.

이러한 경우에 수치적 불안정성으로 이루어질수 있어 truncated_normal()을 사용하기도 합니다.

random_normal()과 동일하지만 평균에서 표준편차의 2배 이상 차이나게되면 값을 제외하고 재추출합니다.

 

균등분포로 텐서를 추출하는 방법으로는 (2,2) 생성 행렬을 입력하고, 최저 값부터 최대 값 까지 값을 선택하면 됩니다.

 

with tf.Session() as sess:
    a = tf.random_uniform((2,2), minval=-2,maxval=2)
    print(a.eval())

 

결과 값2

결과 값을 보면 -2부터 2까지의 숫자 중, 랜덤 값으로 (2,2) 행렬에 값이 채워진것을 확인할 수 있습니다.

 

오늘은 난수텐서 초기화 하는 방법을 알아보았습니다.!

상수텐서 초기화도 확인하고 싶으시면

상수텐서초기화

 

[We-Co] zeros, ones, fill 상수텐서 초기화

안녕하세요. 위기의 코딩맨 입니다. 오늘은 상수 텐서 초기화에 대해 알아보도록 하겠습니다. TensorFlow는 기본 텐서를 메모리에 인스턴스화할 수 있는 여러 함수를 제공합니다. 오늘은 zeros()와 on

we-co.tistory.com

 

반응형