텐서플로(TensorFlow)는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 제공되며, 파이썬과 함께 사용하여 다양한 알고리즘과 딥러닝 애플리케이션을 구현할 수 있습니다. 연구 목적과 실제 프로덕션 환경 모두에서 널리 활용되고 있으며, 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 내장하고 있습니다. 이는 내부적으로 NumPy와 다차원 배열을 활용하기 때문인데, 이러한 다차원 배열을 '텐서(tensor)'라고 부릅니다. 또한 딥러닝 신경망 구현을 위한 다양한 기능을 지원합니다.
TensorFlow 설치하기
윈도우 환경에서는 아래 명령어 한 줄로 TensorFlow 패키지를 설치할 수 있습니다.
pip install tensorflow
텐서란 무엇인가?
텐서는 TensorFlow에서 사용되는 핵심 데이터 구조입니다. 데이터 흐름 그래프(Data Flow Graph)라고 불리는 순서도에서 각 노드를 연결하는 역할을 하며, 본질적으로는 다차원 배열 또는 리스트와 같습니다.
Keras 소개
Keras는 그리스어로 '뿔(horn)'을 의미합니다. ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System)라는 프로젝트의 일환으로 개발되었으며, 파이썬으로 작성된 딥러닝 API입니다. 높은 수준의 고수준(High-level) API로서 생산성 있는 인터페이스를 제공해 머신러닝 문제를 손쉽게 해결할 수 있도록 돕고, TensorFlow 프레임워크 위에서 동작합니다. 빠른 실험과 반복을 지원하도록 설계되었으며, 머신러닝 솔루션을 개발하고 캡슐화하는 데 필요한 필수적인 추상화와 빌딩 블록을 제공합니다.
Keras는 확장성이 뛰어나고 크로스 플랫폼을 지원합니다. TPU나 GPU 클러스터에서도 실행할 수 있으며, 학습된 모델을 웹 브라우저나 모바일 환경에서 구동되도록 내보내기(export)할 수도 있습니다.
Keras는 이미 TensorFlow 패키지에 포함되어 있으므로, 아래 코드로 바로 불러와 사용할 수 있습니다.
import tensorflow from tensorflow import keras
본 예제는 Google Colaboratory(Colab)에서 실행됩니다. Colab은 브라우저에서 파이썬 코드를 실행할 수 있도록 해주며, 별도의 설정 없이 GPU까지 무료로 사용할 수 있는 환경을 제공합니다. Jupyter Notebook을 기반으로 만들어졌습니다.
예제 코드
print("Feature extraction from one layer only")
initial_model = keras.Sequential(
[
keras.Input(shape=(250, 250, 3)),
layers.Conv2D(32, 5, strides=2, activation="relu"),
layers.Conv2D(32, 3, activation="relu", name="my_intermediate_layer"),
layers.Conv2D(32, 3, activation="relu"),
]
)
print("Feature extraction from the model")
feature_extractor = keras.Model(
inputs=initial_model.inputs,
outputs=initial_model.get_layer(name="my_intermediate_layer").output,
)
print("The feature extractor method is called on test data")
x = tf.ones((1, 250, 250, 3))
features = feature_extractor(x)코드 출처: https://www.tensorflow.org/guide/keras/sequential_model
실행 결과
Feature extraction form one layer only Feature extraction form the model The feature extractor method is called on test data
코드 설명
- 모델의 아키텍처가 완성되면 해당 모델을 학습(training)시킵니다.
- 학습이 끝나면 모델을 평가(evaluation)합니다.
- 평가된 모델은 디스크에 저장할 수 있습니다.
- 저장된 모델은 필요할 때 언제든 다시 불러와 복원할 수 있습니다.
- 여러 개의 GPU를 활용하면 모델 학습 속도를 크게 높일 수 있습니다.
- 모델이 한 번 생성되면 함수형(functional) API 모델처럼 동작합니다.
- 즉, 모든 계층(layer)은 입력(input)과 출력(output)을 가지게 됩니다.
- 이러한 특성 덕분에
get_layer()메서드를 통해 원하는 특정 계층 하나만 지정하여 그 출력값, 즉 특징(feature)을 명시적으로 추출할 수 있습니다.
이번 글에서는 Sequential 모델의 중간 계층에 이름을 지정한 뒤, keras.Model을 새로 정의하여 해당 계층의 출력만 받아오는 방법을 살펴보았습니다. 이 기법은 전이 학습(Transfer Learning)이나 중간 피처 맵을 시각화·분석할 때 매우 유용하게 활용됩니다.