한 호출에 학습 루프 전체
model.fit() 이 compile() 에서 설정한 모든 게 드디어 돌아가는 곳이야. 호출 하나 밑에 루프 전부 숨어있어 — batching, forward pass, loss, backprop, optimizer step, metric 누적, 그리고 경계마다 터지는 callback bus. Code 섹션의 인자들이 제일 자주 만지는 손잡이 — epochs 는 data 를 몇 번 훑을지, batch_size 는 gradient step 하나에 몇 sample 먹일지, validation 은 두 방식 중 하나로 연결.
결과를 진짜 바꾸는 인자들
전용 validation set 이 없으면 validation_split=0.2 로 training data 꼬리에서 떼어 써. 있으면 validation_data=(x_val, y_val) — 이게 정직한 선택이야. validation_split 은 셔플 없이 *마지막* 조각을 잘라서, 정렬된 dataset 이면 validation set 이 쓰레기가 돼. class_weight 는 imbalanced data 의 지렛대 — 희귀 class 의 weight 를 올려서 그 실수가 더 무겁게 세지게, model 이 다수 class 만 찍어서 이기는 걸 막아.
뭘 넘기든 fit() 은 History 객체 를 돌려줘. .history 가 epoch 별 list 들의 dict — loss, val_loss, 모든 metric 과 그 val_ 쌍둥이. learning curve 전체가 여기 있어. data 가 큰 경우 generator / tf.Dataset / torch.DataLoader 도 fit() 이 알아서 처리하고, 다음 lesson 의 callback 들이 학습 도는 동안 이 curve 에 자동으로 반응해.