이미지나 다차원 배열 데이터를 머신러닝 모델에 입력하거나 처리하기 위해서는 1차원 벡터 형태로 변환하는 경우가 많습니다. Python의 numpy
라이브러리는 이를 간편하게 처리할 수 있는 다양한 기능을 제공합니다. 대표적으로 flatten()
과 reshape()
메서드를 통해 배열을 벡터화할 수 있습니다.
import numpy as np
# random 함수로 0~255 사이의 임의의 정수를 성분으로 갖는 4x4 행렬을 만든다.
a = np.random.randint(0, 255, (4, 4))
print("원본 행렬 (4x4):")
print(a)
# flatten을 사용해 1차원 행렬(벡터)로 만든다.
b = a.flatten()
print("\\nFlatten한 벡터:")
print(b)
# reshape를 사용해 행렬 크기를 바꾼다.
# -1은 자동으로 계산한다는 의미
c = a.reshape(-1)
print("\\nReshape(-1) 한 결과:")
print(c)
이번 실습에서는 딥러닝 분야에서 가장 많이 사용되는 숫자 이미지 데이터셋인 MNIST를 불러오고, 그 데이터를 실제로 확인해보려고 합니다.
MNIST는 0부터 9까지의 손글씨 숫자 이미지 데이터셋입니다.
# ✅ 1. 기본 라이브러리 불러오기
import numpy as np
import pandas as pd
# ✅ 2. MNIST 데이터셋 불러오기
from tensorflow.keras.datasets.mnist import load_data
# 학습용(train)과 테스트용(test) 데이터 나누어 로드
(train_x, train_y), (test_x, test_y) = load_data()
# ✅ 2-1. 데이터 크기 확인하기
print("Train X shape:", train_x.shape) # (60000, 28, 28)
print("Train Y shape:", train_y.shape) # (60000,)
print("Test X shape :", test_x.shape) # (10000, 28, 28)
print("Test Y shape :", test_y.shape) # (10000,)
train_y
, test_y
에 0~9 사이의 숫자로 저장되어 있습니다.이번 단계에서는 train_x
에 저장된 첫 번째 손글씨 숫자 이미지와 해당 정답 레이블을 시각적으로 출력해 보겠습니다.