전복(abalone) 데이터를 대상으로 모델을 학습하고 구축하는 작업은 각각 'compile' 메서드와 'fit' 메서드를 사용해 수행할 수 있습니다. 'fit' 메서드는 학습 반복 횟수인 에포크(epoch) 수를 매개변수로 함께 받습니다.
사용할 데이터셋 소개
이 글에서는 전복 데이터셋을 사용합니다. 이 데이터셋에는 전복의 길이, 무게 등 다양한 신체 측정값이 기록되어 있으며, 전복은 바다에 서식하는 해산 달팽이의 일종입니다. 목표는 나머지 측정값들을 바탕으로 전복의 나이를 예측하는 것입니다.
실행 환경: Google Colaboratory
아래 코드는 Google Colaboratory(Colab)에서 실행되었습니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있는 환경을 제공하며, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)를 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
모델 컴파일 및 학습 코드
print("The model is being compiled")
norm_abalone_model.compile(loss = tf.losses.MeanSquaredError(),
optimizer = tf.optimizers.Adam())
print("The model is being fit to the data")
norm_abalone_model.fit(abalone_features, abalone_labels, epochs=8)
코드 출처: https://www.tensorflow.org/tutorials/load_data/csv
출력 결과
The model is being compiled The model is being fit to the data Epoch 1/8 104/104 [==============================] - 0s 989us/step - loss: 98.3651 Epoch 2/8 104/104 [==============================] - 0s 945us/step - loss: 65.4568 Epoch 3/8 104/104 [==============================] - 0s 922us/step - loss: 21.7297 Epoch 4/8 104/104 [==============================] - 0s 912us/step - loss: 6.3429 Epoch 5/8 104/104 [==============================] - 0s 988us/step - loss: 5.0949 Epoch 6/8 104/104 [==============================] - 0s 958us/step - loss: 4.9868 Epoch 7/8 104/104 [==============================] - 0s 1ms/step - loss: 4.8982 Epoch 8/8 104/104 [==============================] - 0s 1ms/step - loss: 4.7936 <tensorflow.python.keras.callbacks.History at 0x7fda8213c898>
코드 설명
- 컴파일 단계: 'compile' 메서드는 모델 학습에 필요한 손실 함수와 옵티마이저를 설정합니다. 여기서는 회귀 문제에 적합한 평균 제곱 오차(MeanSquaredError)를 손실 함수로, Adam을 옵티마이저로 사용했습니다.
- 학습 준비: 정규화 레이어가 포함된 모델이 구축되면, 학습 데이터를 사용해 모델을 훈련합니다.
- 'fit' 메서드: 특성(features)과 레이블(labels)을 모델에 전달하여 학습을 진행하며, epochs=8로 지정되어 있으므로 전체 데이터를 총 8번 반복 학습합니다.
결과 분석
출력 결과를 살펴보면 에포크가 진행됨에 따라 손실(loss) 값이 첫 에포크의 98.3651에서 마지막 에포크의 4.7936까지 꾸준히 감소하는 것을 확인할 수 있습니다. 이는 모델이 학습 데이터에 점점 잘 맞아가며 예측 성능이 안정적으로 향상되고 있음을 의미합니다. 초반 에포크에서 손실이 급격히 떨어지다가 이후 완만하게 수렴하는 패턴은 전형적인 학습 곡선의 모습입니다.