다른 글의 딥러닝 tensorflow 테스트시에
사용한 데이터셋은 무엇이였을까 궁금해진다.
사용한 MNIST 데이터셋은 손글씨 숫자 인식을 위한 데이터셋으로, 70000개의 28x28 픽셀 이미지로 구성되어 있다.
머신러닝 및 딥러닝 모델을 학습시키고 테스트하는 데 자주 사용한다.
크게 훈련 데이터와 테스트 데이터로 나뉘며,
각 데이터는 **이미지와 그에 해당하는 레이블(숫자)**로 구성된다.
1. MNIST 데이터셋의 구조
훈련 데이터 (Training Data): 60,000개의 이미지
테스트 데이터 (Test Data): 10,000개의 이미지
각 이미지는 28x28 크기이며, 0~9까지의 숫자 클래스에 해당하는 레이블이 지정되어 있다.
2. 각 이미지의 형태
이미지: 각 이미지는 28x28 픽셀로 구성된 그레이스케일(흑백) 이미지이다.
각 픽셀의 값은 0 (검정)에서 255 (흰색) 사이의 값이다.
이 값을 0과 1 사이로 정규화하는 경우가 많다. (0~255를 0~1로 나누기)
예를 들어, X_train[0]은 훈련 데이터셋의 첫 번째 이미지이다. 이 이미지는 28x28 크기의 배열로 저장되며, 각 원소는 0에서 255 사이의 값이다.
레이블 (Label): 각 이미지에는 **숫자(0~9)**가 레이블로 붙어 있다.
예를 들어, y_train[0]은 X_train[0]에 해당하는 이미지가 숫자 3이라는 것을 나타낸다.
3. 데이터셋 예시
(1) 훈련 이미지 데이터
하나의 이미지는 28x28 크기의 배열로 저장된다. 아래와 예이다.
X_train[0] # 첫 번째 훈련 이미지 array([[ 0., 0., 0., ..., 53., 255., 64.], # 28x28 크기의 숫자 이미지 [ 0., 0., 0., ..., 12., 255., 15.], ... ])
위의 데이터(이미지)에 이것은 무엇이라고 하나하나 지정해주는것이 필요하다 이것이 라벨이다.
지도학습에는 필수이다.
(2) 레이블 데이터
레이블은 각 이미지가 무엇을 나타내는지에 대한 정보이며 아래 예이다.
y_train[0] # 첫 번째 이미지의 레이블 3 # 첫 번째 이미지는 숫자 '3'을 나타낸다,
4. 사용한 MNIST 데이터셋의 구성
훈련 데이터: (60000, 28, 28) 형태의 배열로, 60000개의 이미지 데이터가 포함되어 있다.
훈련 레이블: (60000,) 형태의 배열로, 60000개의 레이블이 포함되어 있다.
테스트 데이터: (10000, 28, 28) 형태의 배열로, 10000개의 이미지 데이터가 포함되어 있다.
테스트 레이블: (10000,) 형태의 배열로, 10000개의 레이블이 포함되어 있다.
5. MNIST 데이터셋의 실제 파일
MNIST 데이터셋은 이미지 데이터와 레이블 데이터를 각각 저장하는 두 개의 파일로 나누어져 있다:
train-images-idx3-ubyte: 훈련 이미지 데이터
train-labels-idx1-ubyte: 훈련 레이블 데이터
t10k-images-idx3-ubyte: 테스트 이미지 데이터
t10k-labels-idx1-ubyte: 테스트 레이블 데이터
이 파일들은 이미지 데이터와 레이블 데이터가 각각 바이너리 형식으로 저장되어 있다. TensorFlow나 Keras와 같은 라이브러리는 이러한 바이너리 파일을 자동으로 처리하여 X_train, y_train, X_test, y_test와 같은 NumPy 배열로 변환한다.
6. 데이터셋 로딩시
개발툴에서 직접 실행해서 출력 로그로 확인해보고 싶을때
TensorFlow에서 MNIST 데이터셋을 로드하는 방법이 궁금하다.
아래의 스크립트를 사용해서 확인 가능하다.
import tensorflow as tf
# MNIST 데이터셋 로드
mnist = tf.keras.datasets.mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 데이터 형태 확인
print(X_train.shape) # (60000, 28, 28)
print(y_train.shape) # (60000,)
print(X_test.shape) # (10000, 28, 28)
print(y_test.shape) # (10000,)
7. 아래 실행화면
8. 캡처한 위 데이터셋 실행(확인) 로그의 설명
MNIST 데이터셋은 28x28 픽셀 크기의 손글씨 숫자 이미지로 구성되어 있다.
각 이미지는 0부터 9까지의 숫자에 해당하는 레이블(데이터에 이름을 부여하는것)을 가진다.
훈련용 데이터 60,000개와 테스트용 데이터 10,000개로 나뉘며, 각 데이터는 28x28 크기의 이미지와 0~9 숫자 레이블로 구성된다.(적은 데이터가 아니다).
머신러닝 모델을 훈련시키고 테스트하는 데 널리 사용되는 데이터셋이다.
인공지능 개발에 관심이 있다면 개념을 정립하는데 유용할 수 있다.
-Tip
처음 딥러닝 인공신경망 데이터셋 학습시 accuracy 정확도 값의 출력은 기본이고,
실제 테스트를 하다보면
결과값에 대한 오차 줄이기가 실제 인공지능 성능에 가장 큰 영향을 준다.
'AI' 카테고리의 다른 글
딥러닝: TensorFlow를 사용한 간단한 MNIST 분류 (1) | 2024.11.20 |
---|---|
머신러닝 : Iris 내장 데이터셋 분류 (0) | 2024.11.20 |