TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용해 각종 알고리즘과 딥러닝 애플리케이션을 손쉽게 구현할 수 있습니다. 연구 목적과 상용 서비스(프로덕션) 양쪽에서 널리 활용되고 있으며, 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 내장하고 있다는 점이 큰 장점입니다.
TensorFlow 설치하기
'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)는 TensorFlow에서 사용되는 기본 데이터 구조입니다. 데이터 흐름 다이어그램에서 노드들을 잇는 엣지(edge) 역할을 하며, 이 다이어그램을 '데이터 흐름 그래프(Data Flow Graph)'라고 부릅니다. 쉽게 말해 텐서란 다차원 배열 또는 리스트를 의미합니다.
IMDB 데이터셋이란?
'IMDB' 데이터셋은 5만 건이 넘는 영화 리뷰를 담고 있는 데이터셋으로, 주로 자연어 처리(Natural Language Processing, NLP) 관련 작업에 활용됩니다. 긍정·부정 감성 분류 모델을 학습시키는 대표적인 예제 데이터로 널리 알려져 있습니다.
이번 예제는 Google Colaboratory(이하 Google Colab)에서 실행합니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주는 도구로, 별도의 환경 설정이 필요 없으며 GPU(그래픽 처리 장치)를 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
예제 코드
다음은 IMDB 데이터셋의 텍스트를 벡터화하는 코드입니다.
def vectorize_text(text, label):
text = tf.expand_dims(text, -1)
return vectorize_layer(text), label
text_batch, label_batch = next(iter(raw_train_ds))
first_review, first_label = text_batch[0], label_batch[0]
print("Review is ", first_review)
print("Label is ", raw_train_ds.class_names[first_label])
print("Vectorized review is ", vectorize_text(first_review, first_label))
print("1222 ---> ",vectorize_layer.get_vocabulary()[1222])
print(" 451 ---> ",vectorize_layer.get_vocabulary()[451])
print('Vocabulary size: {}'.format(len(vectorize_layer.get_vocabulary())))
train_ds = raw_train_ds.map(vectorize_text)
val_ds = raw_val_ds.map(vectorize_text)
test_ds = raw_test_ds.map(vectorize_text)코드 출처 — https://www.tensorflow.org/tutorials/keras/text_classification
실행 결과
Review is tf.Tensor(b'Silent Night, Deadly Night 5 is the very last of the series...', shape=(), dtype=string) Label is neg Vectorized review is (<tf.Tensor: shape=(1, 250), dtype=int64, numpy= array([[1287, 313, 2380, 313, 661, 7, 2, 52, 229, 5, 2, 200, 3, 38, 170, 669, 29, 5492, 6, 2, 83, 297, ...(중략)...]])>, <tf.Tensor: shape=(), dtype=int32, numpy=0>) 1222 ---> stick 451 ---> already Vocabulary size: 10000
코드 설명
'vectorize_text'라는 이름의 함수를 정의합니다. 이 함수는 사람이 읽을 수 있는 텍스트를 컴퓨터가 이해할 수 있는 숫자 형태로 변환하는 핵심 역할을 담당합니다.
IMDB 데이터셋을 사용해 모델을 학습시킵니다.
첫 번째 리뷰 원문, 해당 라벨(neg), 그리고 벡터화된 결과 샘플이 콘솔에 출력됩니다.
학습 데이터(train), 검증 데이터(validation), 테스트 데이터(test) 세 종류 모두 동일한 방식으로 벡터화되어 모델 입력으로 준비됩니다.
이처럼 텍스트 데이터를 숫자 벡터로 변환하는 과정은 자연어 처리 모델 학습의 필수 전처리 단계입니다. 어휘 사전(vocabulary) 크기가 10,000으로 설정되어 있으므로, 각 단어는 0부터 9,999 사이의 고유한 정수 인덱스로 매핑됩니다.