Data Science/Tensorflow2.0, Pytorch

2. Tensorflow2.0 (X_train) Data Preprocess (using MNIST)

HJChung 2020. 3. 25. 19:50
import numpy as np
import tensorflow as tf

import matplotlib.pyplot as plt #시각화를 위한 모듈 

1. 데이터 불러오기

Tensorflow의 keras에서 제공하는 MNIST 데이터셋을 불러옵니다. 

데이터셋.load__data() 이용 

import tensorflow.keras imprt datasets
mnist = datasets.mnist

(X_train, y_train), (X_test, y_test) = mnist.load_data() 

 2. X__train 데이터 들여다보기 (shape 확인, 시각화 해서 어떤 데이터인지 눈으로 확인해보기)

불러온 데이터에서 이미지 데이터 하나만 뽑아서 시각화까지 확인해봅니다.  .shape 사용

image = X_train[0]
image.shape # .shape 를 사용하여 이미지의 (height, width, (Channel)) 확인합니다. 

#(28, 28) 이라고 나오면 channel이 없다는 거니까 'gray' scale이구나라는 것을 알 수 있고, 
#(28, 28, 3)이라고 나오면 channel이 3. 즉, RGB 값이 있다는 것을 알 수 있습니다. 

#데이터 시각화 
plt.imshow(image, 'gray')
plt.show()

3-1. X__train 데이터 shape 확인 후 차원 수 늘리기 

일반적으로 이미지 데이터셋을 보면 (Batch Size, Height, Width, Channel)의 차원이 들어갑니다. 

여기서 Channel이 gray scale이거나 하면 (Batch Size, Height, Width)까지만 나오는데, 이를 (Batch Size, Height, Width, Channel)이렇게바꿔주고 싶을 때 필요합니다.

tf.newaxis 사용

#여러 방식이 있지만 저는 tf.newaxis 방식을 사용해보도록 하겠습니다. 
X_train[..., tf.newaxis] #tf.newaxis 로 차원수 늘리기

X_train.shape #차원수 잘 늘어났는지 확인합니다. 

3-2. X__train 데이터 shape 확인 후 차원 수 줄이기

matplotlib로 이미지 시각화 할 때는 gray scale의 이미지는 3번 째 dimension이 없으므로, 2개의 dimension으로 차원 조절해 주어야 합니다. .squeeze이용

display = np.sqeeze(new_train_x[0])#.sqeeze 확인
display.shape