Search

[머신러닝] 데이터 타입 - 텐서

Created
2021/03/20 13:32
Tags
Created 1
Created 2
Created 3
2021/03/20
Created 4
subtitle
스칼라, 벡터, 행렬

텐서 종류

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. 이미지 데이터
높이, 너비, 컬러 + 각각의 샘플