본문 바로가기
Study/Machine Learning

[Tensorflow] Tensor와 Numpy 이해하기

by Jamie Lim 2021. 1. 11.

Tensor 이해하기

- Scalar : 0차원으로 숫자가 하나만 있는 경우

- Vector : 1차원으로 숫자의 배열인 경우

- Matrix : 2차원으로 행과 열을 가진 배열인 경우

- Tensor : 다차원으로 VectorMatrix 역시 Tensor라고 부를 수 있다

 

0 차원

- numpy array 1 또는 5, 10 같이 숫자 데이터를 array 해줄 있다

- scalar 들어갔을 때는 shape 아무것도 없는 것으로 나온다

- ndim 차원인지 반환하는 함수로 해당 배열의 차원인 0 출력된다

 

1 차원

숫자가 10 같이 하나만 들어간다고 해도 []리스트를 한번 씌우게 되면 차원이 생긴다. 이때는 1차원이 되는데 numpy에서 shape 표현할 (1) 아닌 (1, ) 표현해줘야 한다. arr([1, 2, 3]) 3개가 있다고 3차원이 아니라 1차원이다. 그래서 해당 배열의 shape (3, )으로 출력되는 것은 3차원이 아니라 값이 3 있다는 것이다 (1차원에 3개라는 의미)

 

2 차원

대괄호를 추가적으로 쓰이면 차원이 추가적으로 하나가 생긴다. (3, 3)이라는 shape 보면 차원이 2개가 있고 차원마다 각각 3개의 값이 있다고 생각하면 된다. 참고로 0차원 숫자에 대괄호를 2 씌우면 개의 차원이 된다.

 

 

다차원

 

 

Numpy Basic

data type

dtype을 통해 array의 데이터 타입을 볼 수 있다.

 

.astype()을 통해 data type을 변환할 수 있다.

 

len()

len(arr.shape)를 통해 차원의 개수를 확인할 수 있다. 그리고 ndim을 통해서도 차원 수를 return할 수 있다.

 

size 확인

 

Reshape

배열.reshape(차원)으로 배열의 차원을 변경해준다.

 

reshape(-1)으로 하면 1차원 배열을 반환한다.

 

reshape(-1, n)이면 열이 n개인 배열로 변환되어 반환된다.

 

Random array 생성

 

3차원으로 늘리기

 

Ravel

이 함수는 다차원 배열을 1차원 배열로 바꾸는 것이다.

* layer, flatten과 같은 기능이다.

 

np.expand_dims()

안의 값을 유지하면서 차원의 수를 늘리고 싶을 때 사용한다

 

zeros & ones

0으로 채워진 numpy array를 만들 수 있다.

 

Index

 

Slicing

 

Boolean Indexing

 

Broadcast

broadcast는 연산하려는 서로 다른 두 개의 행렬의 shape가 같지 않고, 한 쪽의 차원이라도 같거나 값의 개수가 한 개일 때 이를 여러 복사를 하여 연산한다.

 

Math Function

댓글