.keras 포맷은 weights + architecture + metadata 가 한 zip 모양 파일에 다 들어있고, 그 파일 한 개가 어느 backend 에서든 로드돼. 거기에 deploy 용 weight-only 저장, subclass layer round-trip 시키는 custom-object registration, TF SavedModel / TFLite handoff 용 model.export() 까지.
파일 하나에 모델 통째로
Keras 3 의 표준 저장 포맷이자 권장 포맷. .keras 는 사실 zip 아카이브야 — 안에 세 가지가 들어있어: architecture (사람이 읽을 수 있는 config.json), weights, 그리고 optimizer 상태. 세 번째가 핵심인데, optimizer 의 momentum 이랑 learning-rate schedule 까지 같이 저장되니까 학습을 멈춘 그 지점에서 정확히 이어서 재개할 수 있어. 학습된 파라미터만이 아니라 "학습 과정" 자체가 살아남는 거야.
왜 zip 모양이 중요하냐면
config 가 그냥 JSON 이라서 들여다보고 디버깅하기 쉬워. unzip -l my_model.keras 하면 tensor 하나 로드 안 하고도 내용물이 보여. 로드가 실패하면 config 열어서 저장된 layer 그래프를 그대로 확인할 수 있어 — 역공학해야 할 불투명 바이너리 덩어리가 없는 거지. weight 는 backend-agnostic array 로 저장돼서, 이 트랙 나머지가 전부 이 위에 세워져 — 같은 파일이 TensorFlow·PyTorch·JAX 어디서든 로드돼. save 랑 load 는 각각 메서드 한 줄이야, 아래처럼.