TensorFlow는 구글(Google)이 제공하는 대표적인 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용해 다양한 알고리즘과 딥러닝 애플리케이션을 구현할 수 있습니다. 연구 목적뿐 아니라 실제 서비스(프로덕션) 환경에서도 널리 활용됩니다.
Windows 환경에서는 아래 명령어 한 줄로 'tensorflow' 패키지를 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)는 TensorFlow의 핵심 데이터 구조입니다. 텐서는 데이터 흐름 다이어그램의 엣지(edge)를 연결하는 역할을 하며, 이 다이어그램을 '데이터 흐름 그래프(Data Flow Graph)'라고 부릅니다. 텐서는 본질적으로 다차원 배열 또는 리스트라고 할 수 있습니다.
이 글에서는 Stack Overflow 질문 데이터셋으로 학습한 텍스트 분류 모델을 새로운 질문에 적용해 보고, 모델이 각 질문의 주제(프로그래밍 언어)를 얼마나 정확하게 예측하는지 확인합니다.
아래 코드는 Google Colaboratory(Colab)에서 실행했습니다. Google Colab은 브라우저에서 별도 설정 없이 Python 코드를 바로 실행할 수 있게 해주며, GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
예제
다음은 새로운 데이터로 모델을 테스트하는 코드 스니펫입니다.
print("새로운 데이터로 모델 테스트")
inputs = [
"how do I extract keys from a dict into a list?",
"debug public static void main(string[] args) {...}",
]
print("점수 예측")
predicted_scores = export_model.predict(inputs)
print("레이블 예측")
predicted_labels = get_string_labels(predicted_scores)
for input, label in zip(inputs, predicted_labels):
print("질문: ", input)
print("예측된 레이블 : ", label.numpy())
코드 출처 − https://www.tensorflow.org/tutorials/load_data/text
출력 결과
새로운 데이터로 모델 테스트
점수 예측
레이블 예측
질문: how do I extract keys from a dict into a list?
예측된 레이블 : b'python'
질문: debug public static void main(string[] args) {...}
예측된 레이블 : b'java'
설명
텍스트 전처리 코드가 모델 내부에 포함되어 있으면, 학습된 모델을 프로덕션 용도로 손쉽게 내보낼(export) 수 있습니다.
이 방식은 배포(deployment) 과정을 크게 단순화해 줍니다. 전처리 로직까지 함께 패키징되기 때문입니다.
반면 'TextVectorization' 레이어를 모델 외부에서 사용하면, 비동기 CPU 처리와 버퍼링을 활용해 학습 시 데이터 파이프라인 성능을 높일 수 있습니다.
출력 결과를 보면, 사전(Python dict)에서 키를 추출하는 방법을 묻는 첫 번째 질문은 'python'으로, Java의 main 메서드 디버깅 관련 두 번째 질문은 'java'로 각각 올바르게 분류된 것을 확인할 수 있습니다. 이처럼 학습된 모델이 Stack Overflow 질문의 주제 언어를 효과적으로 예측함을 알 수 있습니다.