텐서 종류
1. 스칼라 (0D 텐서)
스칼라는 더 이상 종류를 나눌 수 없는 원자 데이터다. 넘파이에서는 float32 float64 타입의 숫자가 스칼라 텐서(배열 스칼라)이다. ndim 속성은 넘파이 배열의 축 개수를 확인할 수 있다. 텐서의 축 개수를 rank라고도 한다.
import numpy as np
x = np.array(12)
x.ndim # 0D 텐서
Python
복사
2. 벡터(1D 텐서)
1D 텐서는 하나의 축만을 가진다(열 하나). 아래의 벡터는 5개의 원소를 가지므로 5차원 벡터(5*1)이다.
5D 벡터는 하나의 축(행)을 따라 5개의 차원을 가진다.
_list = [1,2,3,4,5]
x = np.array(_list)
x.ndim # 1D 텐서
Python
복사
3. 행렬(2D 텐서)
벡터의 배열은 행렬, 2D 텐서. 행렬에는 2개의 축이 있다 (행과 열)
x = np.array( [
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
] )
x.ndim # 2D 텐서
Python
복사
4. 3D텐서와 고차원 텐서
x = np.array([
[
[1,2,3],
[4,5,6],
[7,8,9]
],
[
[11,12,13],
[14,15,16],
[17,18,19]
],
[
[21,22,23],
[24,25,26],
[27,28,29]
]
])
x.ndim # 3D 텐서
Python
복사
핵심 속성
1. 축의 개수(랭크) : 예를 들어 3D 텐서에는 3개의 축, 행렬에는 2개의 축이 있다.
2. 크기(shape) : 텐서의 각 축을 따라 얼마나 많은 차원이 있는지 나타낸 파이썬의 튜플. 앞의 행렬의 크기는 (3,5), 3D 텐서의 크기는 (3,3,5), 벡터는 (5,)
3. 데이터 타입(넘파이에서는 dtype(데이터타입)변수에 저장) : 텐서에 포함된 데이터 타입. 가변 길이의 문자열은 지원하지 않는다(미리 할당되어 연속된 메모리에 저장되어야 하므로)
데이터
1. 배치 데이터
샘플 축(샘플 차원) : 모든 데이터 텐서의 첫번째 축. 0번째 튜플(로우)
딥러닝 모델은 데이터를 작은 배치(batch, 샘플)로 나눠서 처리한다.
2. 벡터 데이터
특성 축 : 두번째 축 (열, 컬럼)
3. 시계열 데이터 또는 시퀀스 데이터
관례적으로 시간 축은 항상 두번째 축(인덱스 1)
시간 또는 연속된 순서가 중요할 때는 시간 축을 포함하여 3D 텐서로 저장된다.
4. 이미지 데이터
높이, 너비, 컬러 + 각각의 샘플