딥러닝 마법이 진짜로 일어나는 곳
Autodiff가 training의 엔진이야. tf.GradientTape는 forward pass 중에 watch된 tensor를 포함한 모든 op를 (테이프에) 녹화해. tape.gradient(target, source) 호출하면 테이프를 거꾸로 재생하면서 chain rule 자동 적용 → gradient 반환.
기본 규칙: tf.Variable은 자동 watch. 일반 tensor랑 tf.constant는 안 됨 — gradient 계산하려면 tape.watch(c) 명시적으로 호출해야 해. 이 default는 Variable이 trainable parameter라서 — 거의 항상 gradient 원하는 대상이거든.
tape.gradient(loss, weight)가 None을 반환하면 그 variable이 forward pass에 안 쓰인 거야 — loss로 가는 경로가 없음. layer 얼렸거나, tf.stop_gradient 어딘가 쓰였거나, model 코드에 버그 있어.