일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- HTML
- 파이썬
- 알고리즘
- es6
- django widget
- Baekjoon
- Algorithm
- c++
- 장고
- PYTHON
- javascript
- 백준
- 알고리즘 연습
- react
- CSS
- AWS
- java
- 알고리즘 풀이
- Git
- Django
- django rest framework
- MAC
- DRF
- js
- web
- form
- API
- django ORM
- 파이썬 알고리즘
- 알고리즘 문제
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[딥러닝]02.신경망을 위한 데이터 표현 본문
신경망을 위한 데이터 표현
모든 머신러닝 시스템은 일반적으로 텐서
를 기본 데이터 구조로 사용한다. 텐서는 데이터를 위한 컨테이너라고 생각할 수 있다. 그 데이터로는 임의의 차원 개수를 가지는 행렬이 들어간다. 각 차원에 따라 어떻게 데이터와 텐서가 변화하는지 알아보자.
스칼라(0D텐서)
하나의 숫자만 담고 있는 텐서를 스칼라라고 한다.
숫자는 float32 또는 float64 타입을 가진다.
ndim 속성을 사용하면 넘파이 배열의 축 개수를 확인가능
- 텐서의 축 개수를 랭크(rank) 라고 부른다.
import numpy as np
x = np.array(7)
>>> x
array(12)
>>> x.ndim
0
벡터(1D텐서)
- 숫자의 배열을 벡터 라고 한다.
- 아래 예시에서의 벡터는 5개의 원소를 가지고 있으니까 5차원 벡터라고 부른다. 5D벡터와 5D텐서와 헷갈리지만 엄연히 다른 개념이다. 5D벡터는 하나의 축을 따라 5개의 차원을 가지는 것이고 5D텐서는 5개의 축을 가진 것.
x = np.array([1,2,3,4,5])
>>> x
array([1,2,3,4,5])
>>> x.ndim
1
행렬(2D텐서)
- 벡터의 배열이 행렬 이라고 한다.
- 행렬은 두 개의 축이 존재하고 행, 열 이라고 부른다.
x = np.array([[1,2,3,4,5],
[6,7,8,9,0],
[1,2,3,4,5]])
>>> x
array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 0],
[1, 2, 3, 4, 5]])
>>> x.ndim
2
고차원 텐서
- 위와 마찬가지로 전 텐서를 여러 개 합쳐 그 다음 차원의 텐서를 만들 수 있다.
- 3D 와 4D 까지는 사용하지만 그 위로는 많이 사용하지 않는다.
- 예시는 위와 같은 논리이므로 생략한다.
텐서의 주요 속성
축의 개수
- 위에서도 말했듯이 다른 말로 랭크라고 한다.
- nD 텐서에는 n개의 축이 있다.
- ndim으로 확인 가능하다.
크기
- 텐서의 각 축을 따라 얼마나 많은 차원이 있는지를 나타낸 파이썬의 튜플
- 행렬은 아래와 같이 나타나고 벡터는 (5, ) , 스칼라는 ( ) 로 크기가 없다.
x = np.array([[1,2,3,4,5],
[6,7,8,9,0],
[1,2,3,4,5]])
>>> x.shape
(3,5)
데이터 타입
- 텐서에 포함된 데이터의 타입
- float32, float64, unit8 등이 있다.
배치 데이터
일반적으로 데이터 텐서의 첫번째 축은 샘플축 이다. training을 할시에 전체 데이터를 한 번에 처리하지 않고 부분적으로 나눠서 처리를 하는데 한 배치마다 크기가 128로 하려면 다음과 같이 해준다.
batch = train_images[128*n:128*(n+1)]
텐서의 실제 사례
자주 쓰이는 텐서의 예시들을 알아보도록 하자.
벡터 데이터
- (samples, features) 크기의 2D텐서
- 대부분의 경우 벡터 데이터이다. 벡터 데이터 이므로 두 개의 축이 존재하는데 첫 번째 축은 샘플축, 두 번째 축은 특성축이다.
- 사람의 나이, 우편번호, 소득으로 구성된 인구 통계 데이터, 각 사람은 3개의 값을 가진 벡터로 구성되고 10만 명이 포함된 전체 데이터셋은 (100000, 3) 크기의 텐서에 저장 될 수 있다.
시계열 데이터 또는 시퀀스 데이터
(samples, timesteps, features) 크기의 3D텐서
데이터에서 시간 or 연속된 순서가 중요할 때 시간 축을 포함한다. (시간 축은 두 번째 축을 사용)
주식 가격 데이터셋
- 1분마다 현재 주식 가격, 지난 1분 동안에 최고 가격과 최소가격을 저장한다. 하루의 거래 시간이 390분이라고 하면 250일치의 데이터는 (250, 390, 3) 크기의 3D 텐서로 저장 될 수 있다.
이미지
- (samples, height, width, channels) 또는 (samples, channels, height, width) 크기의 4D텐서
- 이미지는 높이, 너비, 컬러 채널의 3차원으로 구성
- 흑백이미지의 경우에는 컬러 채널의 차원 크기가 1이라서 생략 가능하지만 관레상 적어준다.
- 컬러 이미지의 경우에는 컬러 채널의 차원 크기가 3
- 256 * 256 크기의 흑백 이미지 128개의 배치는 (128, 256, 256, 1) 크기의 텐서에 저장 될 수 있다.
동영상
- (samples, frames, height, width, channels) 크기의 5D텐서
- 하나의 비디오는 프레임의 연속, 프레임은 하나의 컬러 이미지
- 하나의 프레임이 (height, width, color_depth), 프레임의 연속은 (frames, height, width, color_depth), 여러 비디오의 배치는 (samples, frames, height, depth, color_depth)
- 60초 짜리 144*256 유튜브 비디오 클립을 초당 4프레임으로 샘플링하면 240 프레임이 되고 이런 클립을 4개 가진 배치는 (4, 240, 144, 256, 3) 크기의 텐서에 저장될 수 있다.
'인공지능 > 케라스창시자에게 배우는 딥러닝' 카테고리의 다른 글
[딥러닝]05.imdb 영화 리뷰 이진 분류 (1) | 2019.03.25 |
---|---|
[딥러닝]05. 신경망의 구조 (0) | 2019.03.18 |
[딥러닝]04.그레디언트 (0) | 2019.03.15 |
[딥러닝]03.텐서연산 (0) | 2019.03.15 |
딥러닝이란 무엇인가? (0) | 2019.03.13 |
Comments