[Coursera] TensorFlow / Deep Learning SpecializationCS & AI/Deep Learning2026. 5. 4. 00:41
Table of Contents
TensorFlow의 핵심 아이디어
Foward propagation(cost function 계산)만 구현하면, TensorFlow가 자동으로 back propagation(gradient 계산)을 수행한다.
Cost Function 최소화
아래의 식을 봅시다.
$$J(w) = w^2 - 10w + 25 = (w - 5)^2$$
최적값은 $w = 5$
이를 코드에 적용해서 보면
import numpy as np
import tensorflow as tf
# 최적화할 변수 정의
w = tf.Variable(0, dtype=tf.float32)
# Optimizer 선택
optimizer = tf.keras.optimizers.Adam(learning_rate=0.1)
# Cost function 정의 및 한 스텝 훈련
def train_step():
with tf.GradientTape() as tape:
cost = w**2 - 10*w + 25
trainable_variables = [w]
grads = tape.gradient(cost, trainable_variables)
optimizer.apply_gradients(zip(grads, trainable_variables))
# 초기값 확인
print(w) # 0.0
# 한 스텝 실행
train_step()
print(w) # 약 0.1
# 1000 스텝 반복
for i in range(1000):
train_step()
print(w) # 약 5.0 (최적값에 수렴!)
여기서 GradientTape를 봅시다.
with tf.GradientTape() as tape:
cost = w**2 - 10*w + 25
말 그대로 Tape. 옛날 카세트 테이프처럼 순서대로 연산을 record 한다. Cost Function을 계산하는 foward propagation의 연산 순서를 기록해두면, 테이프를 역방향으로 재생하여 back propagation과 gradient를 자동으로 계산할 수 있습니다.
이것이 TensorFlow에서 foward propagation만 구현하면 되는 이유입니다.
실제로는 Training Data를 주로 활용합니다.
w = tf.Variable(0, dtype=tf.float32)
optimizer = tf.keras.optimizers.Adam(learning_rate=0.1)
# Training data (cost function의 계수 역할)
x = np.array([1.0, -10.0, 25.0], dtype=np.float32)
# Data를 사용하는 cost function
def training(x, w, optimizer):
def cost_fn():
return x[0] * w**2 + x[1] * w + x[2]
for i in range(1000):
optimizer.minimize(cost_fn, var_list=[w])
return w
w = training(x, w, optimizer)
print(w) # 약 5.0
'CS & AI > Deep Learning' 카테고리의 다른 글
| [Coursera] Metric / Deep Learning Specializaton (0) | 2026.05.13 |
|---|---|
| [Coursera] Why we need ML Strategy? / Deep Learning Specialization (0) | 2026.05.13 |
| [Coursera] Train, Dev & Test sets / Deep Learning Specialization (0) | 2026.04.14 |
| [Coursera] Hyperparameter tuning (0) | 2026.04.14 |
| [Coursera] Activation Functions / Deep Learning Specialization (0) | 2026.04.13 |
@Ungbae :: 그럼에도 불구하고
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!