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 레이어에서 발생한다는 점도 눈여겨볼 만합니다.