TensorFlow 소개
TensorFlow는 구글(Google)이 제공하는 대표적인 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용해 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업을 수행할 수 있습니다. 학술 연구부터 실제 서비스 운영(프로덕션) 환경까지 폭넓게 활용되고 있습니다.
'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.
pip install tensorflow
IMDB 데이터셋이란?
'IMDB' 데이터셋은 5만 건이 넘는 영화 리뷰를 담고 있는 데이터셋으로, 자연어 처리(Natural Language Processing) 관련 작업에서 널리 사용됩니다. 각 리뷰는 긍정 또는 부정으로 레이블링되어 있어 감성 분석(Sentiment Analysis) 모델을 학습시키기에 적합합니다.
본 예제는 Google Colaboratory(Colab) 환경에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)를 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
손실 함수·옵티마이저 정의 및 모델 훈련 코드
다음은 손실 함수(loss function)와 옵티마이저(optimizer)를 정의하고, 모델을 훈련한 뒤 IMDB 데이터셋에서 성능을 평가하는 코드 예제입니다.
model.compile(loss=losses.BinaryCrossentropy(from_logits=True),
optimizer='adam',
metrics=tf.metrics.BinaryAccuracy(threshold=0.0))
epochs = 10
history = model.fit(
train_ds,
validation_data=val_ds,
epochs=epochs)
loss, accuracy = model.evaluate(test_ds)
print("Loss is : ", loss)
print("Accuracy is : ", accuracy)코드 출처 − https://www.tensorflow.org/tutorials/keras/text_classification
실행 결과
Epoch 1/10 625/625 [==============================] - 12s 19ms/step - loss: 0.6818 - binary_accuracy: 0.6130 - val_loss: 0.6135 - val_binary_accuracy: 0.7750 Epoch 2/10 625/625 [==============================] - 4s 7ms/step - loss: 0.5785 - binary_accuracy: 0.7853 - val_loss: 0.4971 - val_binary_accuracy: 0.8230 Epoch 3/10 625/625 [==============================] - 4s 7ms/step - loss: 0.4651 - binary_accuracy: 0.8372 - val_loss: 0.4193 - val_binary_accuracy: 0.8470 Epoch 4/10 625/625 [==============================] - 4s 7ms/step - loss: 0.3901 - binary_accuracy: 0.8635 - val_loss: 0.3732 - val_binary_accuracy: 0.8612 Epoch 5/10 625/625 [==============================] - 4s 7ms/step - loss: 0.3435 - binary_accuracy: 0.8771 - val_loss: 0.3444 - val_binary_accuracy: 0.8688 Epoch 6/10 625/625 [==============================] - 4s 7ms/step - loss: 0.3106 - binary_accuracy: 0.8877 - val_loss: 0.3255 - val_binary_accuracy: 0.8730 Epoch 7/10 625/625 [==============================] - 5s 7ms/step - loss: 0.2855 - binary_accuracy: 0.8970 - val_loss: 0.3119 - val_binary_accuracy: 0.8732 Epoch 8/10 625/625 [==============================] - 5s 7ms/step - loss: 0.2652 - binary_accuracy: 0.9048 - val_loss: 0.3027 - val_binary_accuracy: 0.8772 Epoch 9/10 625/625 [==============================] - 5s 7ms/step - loss: 0.2481 - binary_accuracy: 0.9125 - val_loss: 0.2959 - val_binary_accuracy: 0.8782 Epoch 10/10 625/625 [==============================] - 5s 7ms/step - loss: 0.2328 - binary_accuracy: 0.9161 - val_loss: 0.2913 - val_binary_accuracy: 0.8792 782/782 [==============================] - 10s 12ms/step - loss: 0.3099 - binary_accuracy: 0.8741 Loss is : 0.3099007308483124 Accuracy is : 0.8741199970245361
코드 설명
모델 구축이 완료되면 'compile' 함수를 호출하여 모델을 컴파일합니다. 이때 손실 함수로는 이진 교차 엔트로피(BinaryCrossentropy), 옵티마이저로는 'adam', 평가 지표로는 BinaryAccuracy가 설정됩니다.
모델 훈련 반복 횟수(epoch)는 10회로 지정되었습니다.
'fit' 함수는 앞서 구축한 모델에 훈련 데이터(train_ds)를 학습시키는 역할을 하며, 검증 데이터(val_ds)를 함께 전달해 매 에포크마다 검증 손실과 검증 정확도를 확인할 수 있습니다.
'evaluate' 함수는 훈련이 끝난 모델을 테스트 데이터셋(test_ds)에 적용하여 최종 손실(loss)과 정확도(accuracy)를 계산합니다.
계산된 손실 값과 정확도 값은 print 문을 통해 콘솔에 출력됩니다.
실행 결과를 보면, 에포크가 진행될수록 훈련 손실은 꾸준히 감소하고 정확도는 상승하며, 최종적으로 테스트 데이터셋에서 약 87.4%의 정확도를 달성한 것을 확인할 수 있습니다. 이는 모델이 영화 리뷰의 긍정·부정 여부를 효과적으로 분류했음을 의미합니다.