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

Python과 TensorFlow 사전 학습 모델로 데이터 평가·예측하기

evaluatepredict 메서드를 사용하면 TensorFlow의 사전 학습된 모델로 데이터를 평가하고 예측할 수 있습니다. 먼저 입력 이미지 배치(batch)를 평탄화(flatten)한 뒤, 모델에 시그모이드(sigmoid) 함수를 적용하여 로짓(logit) 값을 반환받습니다.

전이 학습(Transfer Learning)의 핵심 개념

하나 이상의 컨볼루션 레이어(convolutional layer)를 포함하는 신경망을 컨볼루션 신경망(CNN)이라고 하며, 이를 활용해 학습 모델을 구축할 수 있습니다. 본 글에서는 사전 학습된 네트워크를 활용한 전이 학습을 통해 고양이와 강아지 이미지를 분류하는 방법을 다룹니다.

이미지 분류에서 전이 학습의 직관적인 아이디어는 다음과 같습니다. 대규모의 일반적인 데이터셋으로 학습된 모델은 시각적 세계를 위한 범용 모델로 효과적으로 활용될 수 있습니다. 이러한 모델은 이미 특징 맵(feature map)을 학습한 상태이므로, 사용자가 대규모 데이터셋으로 거대한 모델을 처음부터 다시 학습시킬 필요가 없습니다.

실행 환경: Google Colaboratory

아래 코드는 Google Colaboratory에서 실행되었습니다. Google Colab은 브라우저 환경에서 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)를 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되어 있습니다.

예제 코드

print("Evaluation and prediction")
loss, accuracy = model.evaluate(test_dataset)
print('Test accuracy is :', accuracy)
print("The batch of image from test set is retrieved")
image_batch, label_batch = test_dataset.as_numpy_iterator().next()
predictions = model.predict_on_batch(image_batch).flatten()
print("The sigmoid function is applied on the model, it returns logits")
predictions = tf.nn.sigmoid(predictions)
predictions = tf.where(predictions < 0.5, 0, 1)
print('Predictions are:\n', predictions.numpy())
print('Labels are:\n', label_batch)

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

실행 결과

Evaluation and prediction
6/6 [==============================] - 3s 516ms/step - loss: 0.0276 - accuracy: 0.9844
Test accuracy is : 0.984375
The batch of image from test set is retrieved
The sigmoid function is applied on the model, it returns logits
Predictions are:
[1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1]
Labels are:
[1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1]

결과 해석

  • 학습이 완료된 모델은 새로운 데이터를 예측하고 평가하는 데 즉시 활용할 수 있습니다.
  • 이미지를 입력값으로 전달하면 예측이 수행됩니다.
  • 예측 결과는 해당 이미지가 강아지인지 고양이인지를 판별하는 것입니다.
  • 테스트 데이터셋에서 약 98.44%의 높은 정확도를 기록하며 우수한 분류 성능을 확인할 수 있습니다.