Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

TensorFlow와 Python으로 CIFAR 데이터셋을 다운로드하고 준비하는 방법

CIFAR 데이터셋은 datasets 모듈에 포함된 load_data() 메서드를 사용하여 손쉽게 다운로드할 수 있습니다. 데이터를 내려받으면 자동으로 학습용 세트와 검증용 세트로 분리됩니다.

함께 읽기: TensorFlow란 무엇이며, Keras는 어떻게 TensorFlow와 함께 신경망을 만들까요?

이 글에서는 Keras Sequential API를 사용합니다. Sequential API는 각 레이어가 정확히 하나의 입력 텐서와 하나의 출력 텐서를 갖는 단순한 레이어 스택 구조의 모델을 만들 때 매우 유용합니다.

최소 하나 이상의 컨볼루션 레이어(convolutional layer)를 포함하는 신경망을 컨볼루션 신경망(CNN)이라고 합니다. 일반적인 컨볼루션 신경망은 아래 레이어들을 조합하여 구성됩니다.

  • 컨볼루션 레이어(Convolutional layers)
  • 풀링 레이어(Pooling layers)
  • 덴스 레이어(Dense layers)

컨볼루션 신경망은 이미지 인식과 같은 특정 유형의 문제에서 뛰어난 성능을 보여주는 것으로 잘 알려져 있습니다.

아래 코드는 Google Colaboratory 환경에서 실행됩니다. Google Colab(또는 Colaboratory)은 브라우저에서 바로 Python 코드를 실행할 수 있도록 도와주며, 별도의 설정 없이 GPU(그래픽 처리 장치)를 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt

print("CIFAR 데이터셋을 다운로드합니다")
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

print("픽셀 값을 0과 1 사이로 정규화합니다")
train_images, test_images = train_images / 255.0, test_images / 255.0

class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
               'dog', 'frog', 'horse', 'ship', 'truck']

코드 출처: https://www.tensorflow.org/tutorials/images/cnn

실행 결과

CIFAR 데이터셋을 다운로드합니다
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
170500096/170498071 [==============================] - 11s 0us/step
픽셀 값을 0과 1 사이로 정규화합니다

코드 설명

  • CIFAR10 데이터셋은 10개 클래스에 걸쳐 총 60,000장의 컬러 이미지를 포함하며, 각 클래스당 6,000장씩 구성되어 있습니다.
  • 이 데이터셋은 50,000장의 학습용 이미지와 10,000장의 테스트용 이미지로 나뉩니다.
  • 각 클래스는 상호 배타적이므로 클래스 간에 중복되는 데이터가 없습니다.
  • 데이터셋을 다운로드한 후, 픽셀 값이 0과 1 사이 범위가 되도록 정규화를 진행합니다. 이러한 정규화 과정은 모델 학습의 안정성과 수렴 속도를 높이는 데 도움이 됩니다.