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

TensorFlow와 Python으로 Fashion MNIST 데이터셋 분류 모델 구축하기

TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 다양한 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있으며, 연구 목적과 실제 프로덕션 환경 모두에서 널리 활용됩니다.

'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)는 TensorFlow에서 사용되는 핵심 데이터 구조입니다. 텐서는 데이터 흐름 그래프(Data Flow Graph)라고 불리는 플로우 다이어그램의 엣지(edge)를 연결하는 역할을 하며, 본질적으로 다차원 배열 또는 리스트에 해당합니다.

Fashion MNIST 데이터셋이란?

'Fashion MNIST' 데이터셋은 다양한 종류의 의류 이미지를 담고 있는 데이터셋입니다. 총 10개 카테고리에 속하는 7만 장 이상의 회색조(grayscale) 의류 이미지로 구성되어 있으며, 각 이미지는 28 x 28 픽셀의 저해상도 형태입니다.

Google Colaboratory 활용

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

모델 구축 코드

다음은 Python에서 Fashion MNIST 데이터셋용 모델을 구축하는 코드입니다.

예제 코드

model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10)
])
print("Sequential model is being built")
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])
print("Sequential model is being compiled")

코드 출처 — https://www.tensorflow.org/tutorials/keras/classification

실행 결과

Sequential model is being built
Sequential model is being compiled

코드 설명

  • 모델을 구성하는 여러 층(layer)들이 설정됩니다.
  • 층(layer)은 신경망의 기본 빌딩 블록으로, 입력으로 주어진 데이터로부터 특징 표현(representation)을 추출합니다.
  • 대부분의 신경망은 이러한 단순한 층들을 여러 개 묶어서 구성합니다.
  • 일부 층에는 학습 단계에서 최적값으로 조정되는 파라미터가 포함되어 있습니다.
  • 첫 번째 층인 'Flatten'은 2차원 이미지를 1차원 배열로 변환합니다.
  • 이 층에는 학습해야 할 파라미터가 전혀 없습니다.
  • 픽셀이 평탄화(flattening)된 후에는 두 개의 'Dense' 층이 이어집니다. 첫 번째 Dense 층은 128개의 뉴런으로 구성되며, 마지막 층은 길이가 10인 로짓(logits) 배열을 반환합니다.
  • 각 뉴런(노드)은 해당 이미지가 어떤 클래스에 속하는지를 나타내는 점수(score) 값을 담고 있습니다.
  • 마지막으로 모델이 컴파일되어 학습 준비를 마칩니다.