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

TensorFlow를 활용해 Python으로 딥러닝 모델을 컴파일하는 방법

TensorFlow에서 생성한 모델은 'compile' 메서드를 사용하여 간단하게 컴파일할 수 있습니다. 이 과정에서 손실(loss)은 'SparseCategoricalCrossentropy' 메서드를 통해 계산됩니다.

사전 준비: Google Colaboratory 환경

이 글의 코드는 Google Colaboratory(Colab)에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 작성하고 실행할 수 있는 클라우드 기반 개발 환경으로, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)를 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되어 있어 데이터 분석과 머신러닝 실습에 널리 활용됩니다.

모델 컴파일 코드

print("The model is being compiled")
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=['accuracy'])
print("The architecture of the model")
model.summary()

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

실행 결과

The model is being compiled
The architecture of the model
Model: "sequential_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
rescaling_1 (Rescaling)      (None, 180, 180, 3)       0         
_________________________________________________________________
conv2d_6 (Conv2D)            (None, 180, 180, 16)      448       
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 90, 90, 16)        0         
_________________________________________________________________
conv2d_7 (Conv2D)            (None, 90, 90, 32)        4640      
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 45, 45, 32)        0         
_________________________________________________________________
conv2d_8 (Conv2D)            (None, 45, 45, 64)        18496     
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 22, 22, 64)        0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 30976)             0         
_________________________________________________________________
dense_2 (Dense)              (None, 128)               3965056   
_________________________________________________________________
dense_3 (Dense)              (None, 5)                 645       
=================================================================
Total params: 3,989,285
Trainable params: 3,989,285
Non-trainable params: 0
_________________________________________________________________

코드 설명

  • 옵티마이저와 손실 함수: optimizers.Adam 옵티마이저와 losses.SparseCategoricalCrossentropy 손실 함수가 사용됩니다. Adam은 학습률을 자동으로 조절하는 효율적인 경사 하강 알고리즘으로, 다양한 딥러닝 문제에서 기본값처럼 활용됩니다.
  • 평가 지표 확인: metrics 인수에 'accuracy'를 전달하면 학습이 진행되는 동안 매 에포크(epoch)마다 훈련 정확도와 검증 정확도를 확인할 수 있어 모델 성능을 쉽게 추적할 수 있습니다.
  • 모델 구조 요약: 컴파일이 완료된 후에는 'summary' 메서드를 호출하여 모델의 전체 아키텍처를 한눈에 파악할 수 있습니다. 출력 결과에는 각 레이어의 유형, 출력 형태(output shape), 그리고 학습 가능한 파라미터 수가 표시됩니다.

위 예시 모델은 Rescaling → Conv2D → MaxPooling2D 레이어가 반복되는 전형적인 CNN(합성곱 신경망) 구조로, 이미지 분류 작업에 적합합니다. 총 약 399만 개의 파라미터 중 대부분은 Flatten 이후 연결된 Dense 레이어에서 발생한다는 점도 눈여겨볼 만합니다.