합성곱 신경망(CNN) 모델은 compile() 메서드를 사용해 컴파일하고, fit() 메서드를 사용해 훈련할 수 있습니다. 이때 fit() 메서드에 학습 반복 횟수인 에포크(epoch) 값을 지정합니다.
함께 읽으면 좋은 글:
TensorFlow란 무엇이며, Keras는 TensorFlow와 어떻게 연동되어 신경망을 만들까요?
이 글에서는 Keras의 시퀀셜(Sequential) API를 사용합니다. 시퀀셜 API는 일반적인 레이어 스택 구조의 모델을 만드는 데 유용하며, 각 레이어는 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다.
최소 하나 이상의 합성곱(convolutional) 레이어를 포함하는 신경망을 합성곱 신경망이라고 합니다. CNN은 이미지 인식과 같은 특정 유형의 문제에서 뛰어난 성능을 발휘하는 것으로 널리 알려져 있습니다.
아래 코드는 Google Colaboratory에서 실행했습니다. Google Colab 또는 Colaboratory는 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU(그래픽 처리 장치)를 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어진 서비스입니다.
print("Compiling the model")
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
print("Training the model to fit the data")
history = model.fit(train_images, train_labels, epochs=10,validation_data=(test_images, test_labels))
코드 출처: https://www.tensorflow.org/tutorials/images/cnn
실행 결과
Compiling the model Training the model to fit the data Epoch 1/10 1563/1563 [==============================] - 70s 44ms/step - loss: 1.7408 - accuracy: 0.3557 - val_loss: 1.2260 - val_accuracy: 0.5509 Epoch 2/10 1563/1563 [==============================] - 67s 43ms/step - loss: 1.1928 - accuracy: 0.5751 - val_loss: 1.0800 - val_accuracy: 0.6159 Epoch 3/10 1563/1563 [==============================] - 68s 43ms/step - loss: 1.0330 - accuracy: 0.6396 - val_loss: 0.9791 - val_accuracy: 0.6562 Epoch 4/10 1563/1563 [==============================] - 66s 43ms/step - loss: 0.9197 - accuracy: 0.6782 - val_loss: 0.9488 - val_accuracy: 0.6677 Epoch 5/10 1563/1563 [==============================] - 65s 42ms/step - loss: 0.8388 - accuracy: 0.7043 - val_loss: 0.9090 - val_accuracy: 0.6851 Epoch 6/10 1563/1563 [==============================] - 66s 42ms/step - loss: 0.7755 - accuracy: 0.7279 - val_loss: 0.8694 - val_accuracy: 0.6944 Epoch 7/10 1563/1563 [==============================] - 66s 42ms/step - loss: 0.7107 - accuracy: 0.7494 - val_loss: 0.9152 - val_accuracy: 0.6929 Epoch 8/10 1563/1563 [==============================] - 65s 42ms/step - loss: 0.6674 - accuracy: 0.7649 - val_loss: 0.8613 - val_accuracy: 0.7045 Epoch 9/10 1563/1563 [==============================] - 66s 42ms/step - loss: 0.6288 - accuracy: 0.7771 - val_loss: 0.8788 - val_accuracy: 0.7026 Epoch 10/10 1563/1563 [==============================] - 66s 42ms/step - loss: 0.5913 - accuracy: 0.7953 - val_loss: 0.8884 - val_accuracy: 0.7053
설명
- 먼저
compile()메서드를 호출하여 모델을 컴파일합니다. - 다음 단계는
fit()메서드를 사용해 훈련 데이터에 맞추어 모델을 학습시키는 것입니다. - 훈련은 총 10번의 에포크(epoch) 동안 진행되며, 매 에포크마다 검증 데이터에 대한 손실과 정확도가 함께 출력됩니다.
- 결과를 보면 에포크가 반복될수록 손실(loss)은 감소하고 정확도(accuracy)는 증가하는 것을 확인할 수 있습니다.