❓ np.linspace(), tf.linspace()
- 보다시피 전자는 numpy 의 함수, 후자는 tensorflow 의 함수이다.
- linspace 는 Linear Space(선형 공간)의 줄임말 같다.
- 모든 함수가 그렇듯 이름에서 그 기능이 유추된다. 😌
✅ 기능
- 두 개 함수 모두 1차원 배열을 생성한다.
- 아래와 같이 start, stop, num 파라미터를 입력 받는다.
- start: 1차원 배열이 시작하는 수
- stop: 1차원 배열이 끝나는 수 (endpoint 설정 여부에 따라 배열에 포함되기도, 포함되지 않기도 한다.)
- num: 배열의 길이
- 지원하는 파라미터가 더 있지만 두 함수에 차이가 있다. 자세한 내용은 공식 문서를 참고하자.
import numpy as np
np.linspace(0.01, 0.99, 10)
array([0.01 , 0.11888889, 0.22777778, 0.33666667, 0.44555556,
0.55444444, 0.66333333, 0.77222222, 0.88111111, 0.99 ])
import tensorflow as tf
tf.linspace(0.01, 0.99, 10)
<tf.Tensor: shape=(10,), dtype=float32, numpy=
array([0.01 , 0.11888889, 0.2277778 , 0.33666667, 0.44555557,
0.55444443, 0.66333336, 0.7722223 , 0.88111115, 0.99 ],
dtype=float32)>
😎 Tip !
- 확률로 이루어진 1차원 배열을 생성하고 싶을 때 start 와 stop 을 0과 1로 하지 않는 것을 추천한다.
- 이후 과정에서 Division Zero 에러가 발생할 수 있기 때문이다.
- 0 은 그렇다쳐도, 1은 왜? 라는 생각이 들 수 있다.
- 생각해보자. 발생할 확률이 1인 사건이 발생하지 않을 확률은 0 이다. (1-p)
- 따라서 1도 Division Zero 에러를 발생시킬 여지가 있다.
- 위에서도 언급했지만, np.linspace() 에서는 endpoint 파라미터를 False로 두면 stop 파라미터는 배열에 포함하지 않는다.
import numpy as np
np.linspace(0.01, 1, 10, endpoint=False)
array([0.01 , 0.109, 0.208, 0.307, 0.406, 0.505, 0.604, 0.703, 0.802,
0.901])
- 이러한 경우엔 stop 을 1로 설정하더라도 Division Zero 에러 걱정을 하지 않아도 된다.
- 하지만... 굳이? 라는 생각이 든다. 🤨
- endpoint 의 디폴트는 True 이다.
- 그걸 굳이 False 로 변경하기보다, 그냥 stop 을 1보다 살짝 작은 수로 설정하는 게 편리한 것 같다.
- 물론 경우에 따라 필요하다고 생각되면 사용하면 된다.