본문 바로가기
C.W.K.
Stream
Lesson 01 of 06 · published

사용자 정의 학습 루프가 필요한 순간

~8 min · custom-train

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

fit()은 표준 학습 경로를 훌륭하게 처리해. 하지만 GAN처럼 옵티마이저가 둘이거나, 그래디언트 누적과 동적 손실 가중치가 필요하다면 train_step()을 재정의하거나 tf.GradientTape, torch.autograd, jax.grad로 직접 루프를 만들어야 해. 이 트랙에서는 네 백엔드의 방식을 모두 살펴본다.

fit()은 확장할 수 있는 계약이야

대부분의 학습은 model.fit()으로 충분해. 에포크 반복, 배치 처리, 평가지표 기록, 콜백, 분산 전략까지 이미 맡아 주거든. 이 트랙의 목적은 그 기반을 버리는 게 아니라 계약의 경계를 이해하고 꼭 필요한 지점에만 개입하는 거야. 다음처럼 순전파·손실·역전파의 단일 주기로 표현할 수 없을 때 사용자 정의 단계를 고려해:

  • GAN — 생성자와 판별자를 번갈아 학습하며 손실 함수와 옵티마이저를 둘씩 사용
  • 지식 증류 — 교사 모델의 출력을 함께 반영하는 사용자 정의 손실
  • 연구 실험 — 그래디언트 조작, 사용자 정의 규제, 메타 학습
  • 그래디언트 누적 — 메모리 한계 안에서 더 큰 배치 효과 구현

제어 비용에 따라 세 단계로 올라가

Keras는 점진적인 선택지를 제공해. 첫째, train_step()만 재정의하면 사용자 정의 로직을 fit() 안에서 실행하면서 진행 표시줄, 콜백, 분산 처리를 유지할 수 있어. 둘째, 반복 구조 자체를 통제해야 할 때 전체 루프를 직접 작성해. 셋째, 원시 그래디언트 기록 장치가 꼭 필요한 드문 경우에 백엔드 고유 API까지 내려가. 한 단계 올라갈 때마다 더 많은 제어를 얻는 대신 기존 기반을 직접 관리해야 해. 문제를 표현할 수 있는 가장 낮은 단계에서 멈추는 것이 핵심이야.

External links

Exercise

fit()이 기본으로 제공하지 않는 학습 기능 3개를 적어 봐. 예를 들어 옵티마이저 두 개, 사용자 규칙에 따른 그래디언트 클리핑, 과제별 손실 가중치가 있어. 각각 train_step() 재정의로 충분한지 전체 수동 루프가 필요한지 판단하고 근거를 한 문장씩 써.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.