TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 다양한 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있으며, 연구 목적과 실제 프로덕션 환경 모두에서 널리 활용됩니다. 복잡한 수학 연산을 빠르게 수행할 수 있도록 돕는 최적화 기법도 갖추고 있습니다.
이러한 성능은 NumPy와 다차원 배열을 활용하기 때문에 가능합니다. 이 다차원 배열을 흔히 '텐서(tensor)'라고 부릅니다.
Windows 환경에서는 아래 명령어 한 줄로 TensorFlow 패키지를 설치할 수 있습니다.
pip install tensorflow
Keras란 무엇인가?
Keras는 그리스어로 '뿔(horn)'을 의미합니다. ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트의 연구 과정에서 개발된 것으로, TensorFlow 프레임워크 위에서 동작합니다. 빠른 실험과 반복을 지원하도록 설계되었으며, 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다.
Keras는 뛰어난 확장성과 크로스 플랫폼 호환성을 자랑합니다. TPU나 GPU 클러스터에서 실행할 수 있으며, Keras 모델을 웹 브라우저나 모바일 환경에서 구동할 수 있도록 내보내기도 가능합니다.
Keras는 TensorFlow 패키지에 이미 포함되어 있어, 아래 코드 한 줄로 바로 사용할 수 있습니다.
import tensorflow from tensorflow import keras
이 글의 코드는 Google Colaboratory에서 실행했습니다. Google Colab(Colaboratory)은 브라우저에서 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
예제 코드
다음은 순차적(Sequential) 모델을 만들면서 레이어를 점진적으로 추가하고, 각 단계마다 모델 구조를 확인하는 전형적인 디버깅 흐름을 보여주는 코드입니다.
print("Creating a sequential model")
model = keras.Sequential()
print("Adding layers to it")
model.add(keras.Input(shape=(250, 250, 3))) # 250x250 RGB images
model.add(layers.Conv2D(32, 5, strides=2, activation="relu"))
model.add(layers.Conv2D(32, 3, activation="relu"))
model.add(layers.MaxPooling2D(3))
print("Data about the layers in the model")
model.summary()
print("Adding more layers to the model")
model.add(layers.Conv2D(32, 3, activation="relu"))
model.add(layers.Conv2D(32, 3, activation="relu"))
model.add(layers.MaxPooling2D(3))
model.add(layers.Conv2D(32, 3, activation="relu"))
model.add(layers.Conv2D(32, 3, activation="relu"))
model.add(layers.MaxPooling2D(2))
print("Data about the layers in the model")
model.summary()
print("Applying global max pooling")
model.add(layers.GlobalMaxPooling2D())
print("Adding a classification layer to the model")
model.add(layers.Dense(10))코드 출처: https://www.tensorflow.org/guide/keras/sequential_model
실행 결과
코드를 실행하면 레이어가 추가될 때마다 모델의 전체 구조와 각 레이어의 출력 형태(output shape), 파라미터 수가 요약되어 출력됩니다.
핵심 포인트 정리
순차적(Sequential) 아키텍처를 구축할 때는 레이어를 한 번에 몰아서 쌓기보다 점진적으로 하나씩 추가하는 것이 좋습니다.
레이어 추가는
add()함수를 통해 수행할 수 있습니다.각 단계마다
summary()메서드를 호출하면 모델에 대한 상세 정보를 자주 확인할 수 있어 오류를 조기에 발견하는 데 유용합니다.Conv2D와MaxPooling2D레이어가 이미지 특징 맵(feature map)을 어떻게 다운샘플링(down-sampling)하는지 지속적으로 모니터링할 수 있습니다.
이처럼 레이어를 조금씩 추가하며 summary()로 중간 결과를 확인하는 방식은, 입력 형태 불일치나 파라미터 계산 오류 같은 문제를 초기에 잡아낼 수 있는 가장 기본적이면서도 효과적인 디버깅 워크플로우입니다.