TensorFlow란 무엇인가?
TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 다양한 알고리즘 구현, 딥러닝 애플리케이션 개발 등에 활용되며, 연구 목적과 상용 환경 모두에서 널리 쓰이고 있습니다.
TensorFlow는 복잡한 수학 연산을 빠르게 처리할 수 있도록 돕는 최적화 기법을 갖추고 있습니다. 이는 내부적으로 NumPy와 다차원 배열을 활용하기 때문인데, 이러한 다차원 배열을 흔히 '텐서(tensor)'라고 부릅니다.
이 프레임워크는 심층 신경망(deep neural network) 작업을 지원하며, 뛰어난 확장성을 자랑합니다. 또한 인기 있는 데이터셋을 다수 포함하고 있고, GPU 연산을 활용해 리소스 관리를 자동화합니다. 다양한 머신러닝 라이브러리를 제공하며 문서화와 커뮤니티 지원도 잘 되어 있어, 딥러닝 모델을 실행·학습시키고 데이터셋의 특성을 예측하는 애플리케이션을 손쉽게 만들 수 있습니다.
TensorFlow 설치하기
Windows 환경에서는 아래 명령어 한 줄로 'tensorflow' 패키지를 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)의 개념
텐서는 TensorFlow에서 사용되는 데이터 구조입니다. 텐서는 데이터 흐름도(Data Flow Graph)에서 노드들을 연결하는 역할을 하며, 본질적으로 다차원 배열 또는 리스트라고 할 수 있습니다.
아래 코드는 Google Colaboratory 환경에서 실행했습니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU(그래픽 처리 장치)도 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
코드 예제
print("The vocab_size is actually vocab_size+1 since 0 is used as padding")
int_model = create_model(vocab_size=VOCAB_SIZE + 1, num_labels=4)
print("The model is compiled")
int_model.compile(
loss=losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer='adam',
metrics=['accuracy'])
print("The model is fit to the data")
history = int_model.fit(int_train_ds, validation_data=int_val_ds, epochs=5)코드 출처 − https://www.tensorflow.org/tutorials/load_data/text
실행 결과
The vocab_size is actually vocab_size+1 since 0 is used as padding The model is compiled The model is fit to the data Epoch 1/5 188/188 [==============================] - 7s 37ms/step - loss: 1.3020 - accuracy: 0.3877 - val_loss: 0.8041 - val_accuracy: 0.6625 Epoch 2/5 188/188 [==============================] - 5s 25ms/step - loss: 0.7200 - accuracy: 0.7003 - val_loss: 0.5815 - val_accuracy: 0.7685 Epoch 3/5 188/188 [==============================] - 5s 25ms/step - loss: 0.4517 - accuracy: 0.8471 - val_loss: 0.5137 - val_accuracy: 0.8040 Epoch 4/5 188/188 [==============================] - 5s 25ms/step - loss: 0.2709 - accuracy: 0.9311 - val_loss: 0.5091 - val_accuracy: 0.8065 Epoch 5/5 188/188 [==============================] - 5s 25ms/step - loss: 0.1453 - accuracy: 0.9717 - val_loss: 0.5320 - val_accuracy: 0.8025
코드 설명
'create_model' 메서드를 호출하여 모델을 생성합니다. 이때 어휘 크기(vocab_size)에 1을 더해 전달하는데, 그 이유는 패딩(padding)으로 값 0이 사용되기 때문입니다.
생성된 모델은 'compile' 메서드를 통해 컴파일됩니다. 이 과정에서 손실 함수(losses.SparseCategoricalCrossentropy), 최적화 알고리즘('adam'), 평가 지표(['accuracy'])를 지정합니다.
컴파일된 모델에 'fit' 메서드를 호출하여 학습 데이터를 모델에 맞춥니다. 검증 데이터(validation_data)를 함께 전달하고, 총 5번의 에포크(epoch) 동안 학습을 진행합니다.
실행 결과를 보면 에포크가 반복될수록 학습 정확도(accuracy)는 약 0.39에서 0.97까지 꾸준히 상승하는 반면, 검증 정확도(val_accuracy)는 약 0.80 수준에서 안정화되는 것을 확인할 수 있습니다. 이는 모델이 학습 데이터에 점점 익숙해지면서 일반화 성능도 함께 향상되었음을 보여줍니다.