2021. 1. 10. 13:37ㆍ언어영역/Machine Learning
차원이란 무엇인가?
열의 개수에 따라 차원이 나뉘기도 한다. 예로 Iris Flower의 꽃잎 길이, 꽃잎 폭, 꽃받침 길이, 꽃받침 폭 등의 네 가지 변수가 있다면 그 변수는 4차원 공간에 한 점으로 표현될 수 있다.
반면, 데이터의 포함 관계를 의미할 때도 있는데, 배열의 깊이를 차원수라고 한다. 예로 데이터를 배열하는 방식을 의미할 수도 있다. 예를 들어서 위 데이터는 행렬의 표 형태로 표현될 수 있는데, 이를 2차원 표라고 한다.
한동안은 헷갈리는 차원을 확실하게 하기 위해서 전자의 차원은 '데이터차원', 후자의 차원은 '배열차원'이라고 (개인적으로) 명명하자. 헷갈리지 않을 때 쯤이면 떼는걸로 하자. 다시한번 정리하자면, 데이터의 속성의 개수가 데이터차원이고, 이러한 데이터가 쌓여있는 형태가 배열차원정도가 되겠다.
텐서(Tensor)
여러 차원의 형태로 구현되어있는 데이터의 모습을 '텐서'라고 한다. 우리가 배우는 TensorFlow는 텐서가 흐르며 데이터를 학습한다는 의미를 가진다.
실습
지금까지 배운 내용을 실습해보도록 하자. ', _'같이 궁금한 것들도 있지만 일단은 중요한 '데이터차원'과 '배열차원'에 집중해서 보는걸로 하자.
import tensorflow as tf
일단 우리 데이터 형태를 흘러가며 인공지능을 학습시키는 Tensorflow를 불러오자. 간단하게 tf로 불러오자.
(mnist_x, mnist_y), _ = tf.keras.datasets.mnist.load_data()
print(mnist_x.shape, mnist_y.shape)
(cifar_x, cifar_y), _ = tf.keras.datasets.cifar10.load_data()
print(cifar_x.shape, cifar_y.shape)
mnist는 텐서플로우에서 제공하는 교육 전용 흑백 이미지 데이터셋이다. 반면 cifar은 유색 이미지 데이터셋이다. 이들을 통해 실습을 진행하게 될 것이다.
MNIST
첫째, tensorflow의 keras 데이터셋 중 mnist라는 데이터를 로드한다.
둘재, mnist의 형태를 프린트해 본다. 이렇게 되면
(60000, 28, 28) (60000,)
위와 같은 결과가 나오는데, x가 독립변수고 y가 종속변수라고 한다. x는 이미지고 y는 이름(1배열차원 형태의 정답, 무슨 숫자가 들어 있는지에 대한 데이터이다.)이라고 생각하는 게 맞는 것 같다. 그래서 x는 28*28의 흑백 이미지가 60,000장 있는 형태로 표현되고, y는 단지 60,000개의 숫자가 있다는 형태로 표현되는 것.
여기서 x를 구성하는 데이터 하나하나는 28*28인 784데이터차원이며, 이들이 모여 만들어진 x는 2차원 배열차원이 6만개가 있으므로 3배열차원이다(x 자체는 28*28*60,000=47040000데이터차원). 반면 y는 속성이 60000개이므로 6만 데이터차원이자 1배열차원이다.
CIFAR
cifar도 같은 형식으로 불려온다. 대신 y의 0은 airplane, 1은 automobile등을 의미한다. 자세한 내용은 cs.toronto.edu/~kriz/cifar.htm로 가서 확인할 수 있다. 여기서 보여주는 이미지는 유색 이미지이므로 print shape했을 때
(50000, 32, 32, 3) (50000, 1)
위와 같은 결과가 나타난다. x분의 3은 RGB를 나타낸다. 즉 사진 한 장은 32*32*3=3072데이터차원으로 이루어져 있고, x는 이러한 사진이 50000장 있으므로 153600000데이터차원으로 이루어져 있는 것. 하지만 배열차원으로 접근하면 x는 4배열차원이다. 3차원 이미지(유색은 RGB표현을 위해 데이터가 3배열차원임.)가 쌓여있는 형태이므로 4배열차원이다.
하지만 y를 보면 좀 의아할 수 있는데, mnist_y와 cifar_y가 데이터 형태가 같은 것 처럼 느껴지는 것이다. 무슨 차이가 있을까. mnist_y는 1배열차원 안에 5개의 데이터가 들어가 있는 형태와 동일하고, cifar_y는 1데이터차원으로 이루어진 데이터 5개가 모여 5배열차원을 이루고 있는 형태와 동일하다. 간소화한 데이터를 표현하자면 다음과 같다.
여기서 구조가 조금 다르게 생긴 걸로 딱히 의미있는 정보로 보기는 힘들지만, 이후 원핫인코딩 과정에서 방식을 다르게 해야하는 사용자 유틸에서의 차이가 생긴다. 이후 원핫인코딩에서 알아보게 된다.
끝
오늘은 곱창 및 칵테일바 약속이 있어서 준비할 일이 있기에 일단은 여기에서 마무리한다. 내일 2~3시 이후로는 시간이 자유로우니 그 때부터는 다시 열심히 공부하도록 하자. 이렇게 시간이 많은데 의외로 우선순위가 낮은 기타 연습은 하지도 못하고 있다. 아침에 시계를 보면서 아무것도 하지 않아도 지나는 시간이 원망스러웠는데 앞으로는 밍기적거리는 시간은 좀 줄이도록 노력할 필요가 있겠다.
'언어영역 > Machine Learning' 카테고리의 다른 글
Tensorflow 102 - 7~8 Conv2D (0) | 2021.01.14 |
---|---|
Tensorflow 102 5-6 특징 자동 추출기 (0) | 2021.01.13 |
TensorFlow101-14~16 Sigmoid와 Softmax의 차이점 (0) | 2021.01.02 |
TensorFlow 101-13 회귀모형 인공지능의 원리 (0) | 2020.12.31 |
TensorFlow 101-1~101-12 (0) | 2020.12.30 |