목차
파이썬 Tensorflow의 MNIST 이란?
앞서 포스트에서 데이터셋(Dataset)에 대해 알아보았습니다. MNIST는 텐서플로우(Tensorflow) 라이브러리에서 제공하는 데이터셋 입니다.
위와 같은 손으로 쓴 듯한 숫자 정보를 MNIST에서 가지고 있습니다. 그래서 해당 데이터를 이용해서 머신러닝(Machine Learning) 사용자들은 학습을 통해 해당 숫자를 구분하는 연습을 할 수 있습니다.
그리고 MNIST는 Modified National Institute of Standards and Technology 의 약자로 해당 기관에서 이미지 프로세싱(Image Processing) 학습을 위해 데이터를 제공 합니다.
위 그림과 같은 흑백의 경우 하나의 픽셀이 0~255의 값을 가지고 이를 통해 흰색과 검정색 사이를 표현 해줍니다.
파이썬 Tensorflow의 MNIST 데이터 확인 실습
MNIST의 데이터를 확인해보겠습니다. 데이터 확인은 머신러닝에 적합한 주피터(Jyupyter)로 실습해보겠습니다.
예제 코드 #1>>
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
1번 라인 : keras에서 MNIST를 가져오기 위해 라이브러리를 불러옵니다.
2번 라인 : numpy 의 unique 함수 사용을 위해 불러옵니다.
3번 라인 : 그림으로 표현하기 위해 matplotlib 라이브러리를 부릅니다.
예제 코드 #2>>
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
keras 서버에 저장된 데이터 셋을 가져 옵니다. 가져올 때 미리 train 용과 test 용을 분류해서 가져올 수 있습니다.
예제 코드#3>
x_train.shape
결과>>
(60000, 28, 28)
x_train에 들어간 데이터의 행과 렬을 구합니다. 60000개의 샘플이 있고 28 x 28 픽셀 별로 0~255의 정보를 가집니다.
예제 코드#4>>
y_train.shape
결과>>
(60000,)
타겟 값의 행과 열의 값을 가져 옵니다. 앞서 포스트에서 배웠듯이 타겟은 벡터(Vector) 형태로 출력 됩니다. 즉, 60000개 샘플(example)에 대한 분석 결과도 60000개가 되어야 합니다.
예제 코드#5>>
plt.imshow(x_train[59999], cmap='gray')
결과>>
총 60000개 샘플 중에 마지막 샘플을 불러와서 그림으로 출력합니다. 결과에서 알 수 있듯이 28x28픽셀(pixel)로 표현 됩니다.
예제 코드#6>>
def img_to_digit(data):
for x in data:
for y in x:
print('%3s'%y, end=' ')
print()
img_to_digit(x_train[59999])
img_to_digit이라는 함수를 만듭니다.
픽셀의 값을 0~255값으로 출력 해줍니다.
결과>>
파이썬 Tensorflow의 CIFAR 10 데이터 확인 실습
앞서 MNIST를 잘사용하셨다면 CIFAR10을 이용하는 것도 큰 문제가 없습니다. CIFAR는 컬러 이미지 입니다.
위 그림이 CIFAR10에서 제공하는 이미지 들입니다.
컬러 이미지는 흑백에 하나의 차원이 더해진 데이터 입니다. RGB(Red, Green, Blue) 에서 각 각의 픽셀에 0~255의 값을 가지는 형태입니다.
예제 코드#1>>
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
MNIST와 마찬가지로 keras에서 cifar10 데이터를 불러 옵니다. 컬러 이미지다 보니 다운받는데 시간이 조금 걸리니 참고 하시길 바랍니다.
예제 코드#2>>
x_train.shape
결과>>
(50000, 32, 32, 3)
50000개의 샘플을 가지고 있고 32x32픽셀이고 3개의 색상(RGB)에 대해 값을 가지고 있습니다. 앞으로 처리를 위해 numpy의 transpose 함수를 사용해서 행렬의 위치를 변경해줍니다.
예제 코드#3>>
t_x_train = x_train.transpose((0,3,1,2))
t_x_train.shape
결과>>
(50000, 3, 32, 32)
3번째 항목 RGB의 위치를 두번째로 옮겼습니다.
예제 코드#4>
plt.figure(figsize=(3,3))
plt.imshow(x_train[49999])
이미지 크기를 3x3으로 맞추고49999번째 샘플 이미지를 출력 합니다.
결과>>
예제 코드#5>>
img_to_digit(t_x_train[49999][2])
49999번째 샘플 이미지의 Blue 의 픽셀 값을 출력 합니다.
결과>>
숫자가 작을 수록 빨간색이 많은 부분입니다.
'파이썬(Python) > 머신러닝(Machine Learning)' 카테고리의 다른 글
[머신러닝]데이터 세트(Dataset)란? sklearn iris 예제로 알아보기 (2) | 2023.03.12 |
---|---|
머신러닝이란? 분류하기와 간단한 정리글(Machine Learning, Supervised/Unsupervised/Reinforcement Learning) (0) | 2023.03.11 |
[Python] sklearn 정규 분포 만들기(StandardScaler), 그래프 비교 (0) | 2023.02.16 |
[Python] sklearn 파이프라인(Pipeline) + ColumnTransformers (0) | 2023.02.14 |
[Python] sklearn ColumnTransformer이란? 예제 실습(SimpleImputer, fit_transform) (0) | 2023.02.07 |