[ 딥러닝 기초 ] 03. 신경망 데이터의 표현 : 텐서 (Tensor)
텐서
= 다차원의 배열을 통칭
- 최근 모든 머신러닝 시스템은 텐서를 기본 데이터 구조로 사용함
- 벡터(Vector)와 행렬(Matrix)을 일반화한것이며, 3차원이상으로 확장할수있음
- TensorFlow은 텐서의 프레임워크
https://codetorial.net/tensorflow/basics_of_tensor.html
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, 차원)끼리 계산 가능