TensorFlow는 텐서 연산, 자동 미분, 모델 학습과 배포를 한 흐름으로 다루는 오픈소스 머신러닝 플랫폼이다. Python에서 수식을 실행해 보는 단계부터 GPU 학습, 서버·모바일 배포까지 이어 갈 수 있다.
예전에는 TensorFlow를 “계산 그래프와 Session으로 동작하는 프레임워크”라고 정리했다. TensorFlow 1.x를 설명할 때는 맞지만, 현재의 TensorFlow 2는 기본적으로 즉시 실행(eager execution)된다. 다시 공부하면서 가장 먼저 고친 부분도 이 실행 방식이었다.
TensorFlow를 이해하는 네 가지 축
1. Tensor: 모양과 자료형을 가진 데이터
텐서는 숫자를 담는 다차원 배열이다. 스칼라는 0차원, 벡터는 1차원, 행렬은 2차원 텐서로 볼 수 있다. 실무에서는 차원의 이름보다 shape와 dtype을 먼저 확인하는 습관이 중요하다.
import tensorflow as tf
x = tf.constant([[1.0, 2.0], [3.0, 4.0]])
print(x.shape) # (2, 2)
print(x.dtype) # <dtype: 'float32'>
일반 tf.Tensor는 불변이다. 학습 과정에서 값이 바뀌는 가중치는 tf.Variable로 관리한다.
2. Operation: 텐서에 수행하는 계산
덧셈, 행렬 곱, 활성화 함수 같은 연산은 텐서를 입력받아 새 텐서를 만든다. TensorFlow 2에서는 코드를 실행하면 결과를 바로 볼 수 있으므로 Python을 디버깅하듯 모양과 값을 확인하기 쉽다.
3. GradientTape: 손실에서 기울기 구하기
신경망 학습은 손실 함수가 작아지는 방향으로 가중치를 갱신하는 과정이다. tf.GradientTape는 연산을 기록하고, 손실을 각 변수로 미분한 기울기를 계산한다.
w = tf.Variable(3.0)
with tf.GradientTape() as tape:
loss = (w - 1.0) ** 2
gradient = tape.gradient(loss, w)
print(gradient.numpy()) # 4.0
자동 미분이 왜 필요한지 이해하려면 미분이 머신러닝에서 쓰이는 방식과 함께 보는 편이 좋다.
4. Keras: 모델을 구성하고 학습하는 상위 API
직접 학습 루프를 작성할 수도 있지만, 일반적인 신경망은 Keras로 층을 쌓고 compile과 fit을 사용하는 편이 간결하다.
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.Input(shape=(32,)),
tf.keras.layers.Dense(64, activation="relu"),
tf.keras.layers.Dense(10, activation="softmax"),
])
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"],
)
model.summary()
이 코드는 입력 특성 32개를 받아 10개 클래스의 확률을 출력하는 모델의 뼈대다. 실제 학습에는 입력 데이터와 정답 레이블, 검증 데이터가 더 필요하다.
Eager execution과 계산 그래프는 어떻게 함께 쓰는가
TensorFlow 2는 기본적으로 연산을 즉시 실행한다. 그렇다고 계산 그래프가 사라진 것은 아니다. 반복 실행하거나 배포할 함수에 @tf.function을 붙이면 TensorFlow가 연산을 그래프로 추적해 최적화와 내보내기에 활용한다.
@tf.function
def double(x):
return x * 2
처음에는 eager 모드로 값과 오류를 확인하고, 성능이나 배포가 필요한 경계를 tf.function으로 묶는 흐름이 이해하기 쉽다. “TensorFlow는 그래프 기반이다”라는 한 문장보다 개발할 때는 즉시 실행, 필요한 구간은 그래프로 변환한다고 기억하는 편이 현재 동작에 가깝다.
TensorFlow로 무엇을 할 수 있는가
- 이미지 분류와 객체 탐지
- 텍스트 분류와 자연어 처리
- 표 형식 데이터의 회귀·분류
- 사용자 정의 학습 루프와 강화학습 실험
- 서버, 브라우저, 모바일·엣지 환경으로 모델 배포
다만 작은 데이터 분석이나 이미 완성된 API를 호출하는 작업에 항상 TensorFlow가 필요한 것은 아니다. 모델을 직접 학습할지, 어느 환경에 배포할지, 팀이 어떤 생태계에 익숙한지를 먼저 보는 것이 낫다.
처음 공부할 때의 순서
- 텐서의
shape와dtype을 출력해 본다. tf.Variable과GradientTape로 간단한 함수의 기울기를 구한다.- Keras
Sequential모델을 만들고 작은 데이터로fit을 실행한다. - 과적합을 확인하기 위해 학습·검증 지표를 나눠 본다.
- 그다음
tf.data,tf.function, 저장과 배포를 공부한다.
큰 모델을 바로 따라 치는 것보다 데이터가 텐서로 들어와 손실과 기울기를 거쳐 가중치가 바뀌는 한 사이클을 확인하는 편이 구조를 이해하는 데 도움이 됐다. 전체 AI 학습 범위는 ML 개념부터 NLP 모델까지의 공부 지도에 따로 정리해 두었다.
참고 자료
'배움과 성장 > AI·자동화' 카테고리의 다른 글
| AI를 위한 확률과 통계: 확률변수·분포·기댓값의 연결 (0) | 2025.05.19 |
|---|---|
| AI를 위한 선형대수: 내적·outer product·선형변환 구분하기 (2) | 2025.05.14 |
| 인공지능을 위한 수학 2: 미분·Gradient Descent·Backpropagation 연결하기 (0) | 2025.05.14 |
| 인공지능을 위한 수학 1: 딥러닝을 읽기 위한 기초 개념 지도 (0) | 2025.05.12 |
| 머신러닝부터 LLM 애플리케이션 운영까지: ML·Foundation Model·MLOps 개념 지도 (3) | 2025.04.28 |
댓글