Deep Learning 기초

[ 딥러닝 기초 ] 03. 신경망 데이터의 표현 : 텐서 (Tensor)

코딩펭귄 2022. 11. 4. 02:50

 텐서 

= 다차원의 배열을 통칭

- 최근 모든 머신러닝 시스템은 텐서를 기본 데이터 구조로 사용함

- 벡터(Vector)와 행렬(Matrix)을 일반화한것이며, 3차원이상으로 확장할수있음

- TensorFlow은 텐서의 프레임워크

https://codetorial.net/tensorflow/basics_of_tensor.html

 

텐서 객체의 랭크(rank) = 차원의 수

 

 

 

0. 스칼라(Scalar)

- 0차원 텐서

- 하나의 숫자를 담고있으며, 형상은 없음

- 스칼라의 축의개수 = 0

 

1. 벡터 (1D Tensor)

- 1차원 텐서

- 숫자들의 배열

- 벡터의 축의개수 = 1

 

2. 행렬 (2D Tensor)

- 2차원 텐서

- 벡터들의 배열

- 행과 열, 2가지의 축이 있음

 

 

 

 

 

 

 

 

 

 

3. 3차원텐서

- 보통 이미지 나타낼때 사용됨

- (width, height, channels)

- 일반적으로 Numpy array 로 표현

 

- 3차원텐서 활용예시 : MNIST Dataset (손글씨)

- 28 * 28 사이즈의 gray scale 이미지들로 구성

- gray-scale : 0~255값을 통해 밝기를 표현하며,

  0으로 갈수록 어두워지고, 255로 갈수록 밝아짐

 

 

 

 

 

4. 고차원 텐서 (4, 5차원)

- 행렬들의 배열을 합치면, 숫자로 채워진 직육면체가 됨

- 4차원 : Color image Datasets -> 케라스&텐서플로우 : (samples, height, width, channels) /

                                                      파이토치 : (samples, channels, height, width)

- 5차원 : 동영상 (samples, frames, height, width, channels) / (samples, frames, channels, height, width)

 

 

 

 

 

  텐서의 특성  

 

- 축의개수 : 랭크, 넘파이 배열에서 ndim통해 확인

- 데이터타입 : float32, unit8, float64 등등이 될수있고, 문자열은 지원하지 않음. dtype으로 확인

크기 : 텐서의 각 축 따라 얼마나 많은 차원이 있는지를 나타냄. 튜플/넘파이 배열에서 shape로 확인

-> shape 를 통해 텐서의 크기를 알아볼경우 return 값 (아래 그림 참고)

 

1차원: (열,)  * 요소가 하나일때 옆에 ',' 꼭 써주기 *


2차원: (행, 열)

 

3차원: (깊이, 행, 열)

 

 

 

 

 

  머신러닝에서 자주 사용하는 train_data의 shape  

1. 벡터 데이터: (samples, features) 2D tensor
- 집값 예측 문제

- 주어진 데이터가 100개연식, 동네, 역세권의 유무에 따른 데이터라고 하면 (100, 3)크기의 텐서에 저장될 수 있다.
2. 이미지: (samples, height, width, channels) 4D tensor
- 보통 : 100 장의 28x28의 컬러 이미지 -> (100, 28, 28, 3)크기의 텐서에 저장
3. 동영상: (samples, frames, height, channels) 5D tnesot

 

 

브로드캐스팅 (broadcasting)

- 넘파이에서 다른 형상(shape, 차원)끼리 계산 가능