신경망을 위한 데이터 표현

youbbin·2023년 10월 13일
0
post-thumbnail

케라스 창시자에게 배우는 딥러닝 개정 2판
2.2.2 신경망을 위한 데이터 표현


텐서(Tensor)

머신 러닝 시스템의 기본 데이터 구조이다.
데이터를 위한 컨테이너 개념이다.
임의의 차원 개수를 가지는 행렬의 일반화된 모습.
텐서에서 차원(dimension)은 축(axis)라고 부른다.
텐서플로 이름도 여기에서 따온 것!


스칼라(Scalar)

  • 하나의 숫자만 담고 있는 텐서
  • 스칼라 텐서, 랭크-0 텐서, 0D 텐서라고 부른다.
  • 넘파이에서 float32, float64 타입의 숫자는 스칼라 텐서이다.
import numpy as np
x = np.array(2)

벡터(Vector)

  • 숫자의 배열
  • 랭크-1 텐서, 1D 텐서라고 부른다.
x = np.array([1,2,3,4,5])

행렬

  • 랭크-2 텐서, 2D 텐서
  • 2개의 축
x = np.array([[1,2,3,4,5],
			 [6,7,8,9,10],
			 [11,12,13,14,15]])

랭크-3 텐서와 더 높은 랭크의 텐서

  • 3차원 이상의 데이터
  • 딥러닝에서는 보통 랭크 0에서 4까지의 텐서를 다룬다.
  • 동영상 데이터 다룰 경우에는 랭크-5텐서까지 가기도 한다.

배치

  • 딥러닝 모델은 한번에 전체 데이터셋을 처리하지 않는다.
  • 데이터를 작은 배치(batch)로 나누어 처리한다.
  • 예를 들어 크기가 128인 배치 하나는
    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개의 배치

    • 흑백 이미지 : (128, 256, 256, 1)
    • 컬러 이미지 : (128, 256, 256, 3)
  • 비디오 데이터

    비디오 데이터는 랭크-5 텐서의 데이터이다. 비디오는 프레임의 연속이고 프레임은 하나의 컬러 이미지이다. 프레임의 연속은 (frames, height, width, color_depth)의 랭크-4 텐서이다. 여러 비디오의 배치는 (samples, frames, height, width, color_depth)의 랭크-5텐서이다.

0개의 댓글

관련 채용 정보