케라스 창시자에게 배우는 딥러닝 개정 2판
2.2.2 신경망을 위한 데이터 표현
머신 러닝 시스템의 기본 데이터 구조이다.
데이터를 위한 컨테이너 개념이다.
임의의 차원 개수를 가지는 행렬의 일반화된 모습.
텐서에서 차원(dimension)은 축(axis)라고 부른다.
텐서플로 이름도 여기에서 따온 것!
import numpy as np
x = np.array(2)
x = np.array([1,2,3,4,5])
x = np.array([[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15]])
batch = train_images[:128]
그 다음 배치는batch = train_data[128:256]
벡터 데이터
사람의 나이, 성별, 소득으로 구성된 인구 통계 데이터가 있다고 하자. 각 사람은 3개의 값을 가진 벡터로 구성된다. 10만명이 포함된 전체 데이터셋은 (100000, 3) 크기의 랭크-2 텐서에 저장된다.
시계열 데이터 또는 시퀀스 데이터
주식 가격 데이터셋이 대표적인 예이다. 1분마다 현재 주식 가격, 지난 1분 동안에 최고 가격과 최소 가격을 저장한다고 하자. 1분마다 데이터는 3D 벡터로 인코딩되고 하루 동안의 거래는 하루의 거래 시간은 390분이므로 (390, 3)크기의 행렬로 인코딩된다. 250일치의 데이터는 (250, 390, 3) 크기의 랭크-3 텐서로 저장된다. 여기서 1일치 데이터가 하나의 샘플이 된다.
이미지 데이터
이미지는 높이, 너비, 컬러 채널의 3차원으로 이루어진다. 흑백 이미지는 하나의 컬러 채널만 가지고 있어 랭크-2 텐서로 저장되고 컬러 이미지는 랭크-3 텐서 (samples, height, width, color_depth) 형식으로 저장된다.
예) 256*256 크기 이미지 128개의 배치
비디오 데이터
비디오 데이터는 랭크-5 텐서의 데이터이다. 비디오는 프레임의 연속이고 프레임은 하나의 컬러 이미지이다. 프레임의 연속은 (frames, height, width, color_depth)의 랭크-4 텐서이다. 여러 비디오의 배치는 (samples, frames, height, width, color_depth)의 랭크-5텐서이다.