Tensor
- Deeplearning framework는 기본적으로 Tensor를 다루는 도구이다.
- Tensor를 다룰때 가장 중요한 것은 SHAPE이다.
- 가장 에러가 많이 나는 이유이며, 헷갈리는 것이다. 함수의 설정값은 항상 확인해주어야 한다.
- Tensor 데이터의 shape과 dtype은 수시로 체크하도록 한다.
- 데이터 타입이 같아야 연산이 가능하다.
Constant
- tf.constant()를 이용해 list와 tuple, array 형태 모두 Tensor로 변환 가능하다.
import numpy as np
arr = np.array([1., 2., 3.])
arr_ten = tf.constant(arr)
-> <tf.Tensor: shape=(3,), dtype=float64, numpy=array([1., 2., 3.])>
tu_ten = tf.constant(((1,2,3), (1,2,3)), name = 'sample')
-> <tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
[1, 2, 3]], dtype=int32)>
- numpy()
- .ndim
# Numpy array 추출. 유용하게 쓰인다
arr_ten.numpy(), type(arr_ten.numpy())
# lank 수 확인 가능한 .ndim
print(li_ten.ndim)
- 데이터 타입 컨트롤 하는 방법
- tf.cast
# 미리 지정해주거나
tensor = tf.constant([1,2,3], dtype=tf.float32)
tensor
# tf.cast를 사용, 다만 많은 경우 미리 데이터타입을 정리해둘 수 있다.
tf.cast(tensor, dtype=tf.int16)
특정 값의 Tensor 생성
- tf.ones
- tf.zeros
- tf.range
Random Value
- 무작위 값을 생성할때 필요하다
- Noise를 재현한다거나, test를 한다거나 할 때 많이 사용된다.
- 데이터 타입은 상수형태로 반환된다.
- tf.random에 구현되어 있다.
- tf.random.normal - Gaussian Normal Distribution
- tf.random.uniform - Uniform Distribution
- 등등 .. 아주 많다. tensor page 검색
Random Seed
- Random value로 보통 가중치를 초기화한다.
- 이외에도 학습 과정에서 Random value가 많이 사용된다.
- 이를 관리 안해주면, 자신이 했던 작업이 동일하게 복구 또는 재현이 안된다.
→ 항상 Random seed를 고정해두고 개발한다!
(주의할 점은 해당 개발물에 사용되는 난수가 모두 Tensorflow에서 생성된 것이 아닐수도 있다는 점이다.)
'Tensorflow' 카테고리의 다른 글
[Tensor] 연산 (1) | 2023.02.24 |
---|---|
[Tensor] Variable (0) | 2023.02.24 |