TensorFlow와 사전 훈련된(pre-trained) 모델을 활용하면 'matplotlib' 라이브러리를 통해 데이터를 손쉽게 시각화할 수 있습니다. 특히 plot 메서드를 사용하면 콘솔에 데이터를 그래프 형태로 출력할 수 있어, 모델의 학습 과정을 한눈에 파악하는 데 유용합니다.
전이 학습(Transfer Learning)의 기본 개념
합성곱 계층(convolutional layer)을 하나 이상 포함하는 신경망을 합성곱 신경망(CNN)이라고 부르며, 이를 활용하여 학습 모델을 구축할 수 있습니다.
여기서는 사전 훈련된 네트워크의 전이 학습을 통해 고양이와 개 이미지를 분류하는 방법을 살펴봅니다. 이미지 분류에서 전이 학습의 핵심 아이디어는 다음과 같습니다. 대규모의 일반적인 데이터셋으로 훈련된 모델은 시각 세계를 위한 범용(generic) 모델로 효과적으로 활용될 수 있다는 것입니다. 이러한 모델은 이미 특징 맵(feature map)을 학습한 상태이기 때문에, 사용자가 대규모 데이터셋으로 처음부터 거대한 모델을 훈련할 필요가 없습니다.
Google Colaboratory 실행 환경
아래 코드는 Google Colaboratory에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 환경 설정이 필요 없고 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
예제 코드
print("Visualizing the data")
plt.figure(figsize=(8, 8))
plt.subplot(2, 1, 1)
plt.plot(acc, label='Training Accuracy')
plt.plot(val_acc, label='Validation Accuracy')
plt.ylim([0.8, 1])
plt.plot([initial_epochs-1,initial_epochs-1], plt.ylim(), label='Start Fine Tuning')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')
plt.subplot(2, 1, 2)
plt.plot(loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.ylim([0, 1.0])
plt.plot([initial_epochs-1,initial_epochs-1], plt.ylim(), label='Start Fine Tuning')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')
plt.xlabel('epoch')
plt.show()코드 출처 − https://www.tensorflow.org/tutorials/images/transfer_learning
실행 결과

결과 해석
훈련(training) 및 검증(validation) 정확도/손실의 학습 곡선이 시각화됩니다.
이 시각화는 미세 조정(fine-tuning)이 완료된 후에 수행됩니다.
검증 손실이 훈련 손실보다 높게 나타나는데, 이는 모델에 어느 정도 과대적합(overfitting)이 발생했음을 의미합니다.
이러한 과대적합은 훈련 데이터셋의 규모가 상대적으로 작고, 원본 MobileNet V2 데이터셋과 유사한 특성을 가지기 때문일 수도 있습니다.
미세 조정이 완료되면 모델은 검증 세트에서 98%의 정확도에 도달합니다.