추상화가 끝나는 지점을 알아야 해
백엔드를 바꿔도 유지되는 부분과 그렇지 않은 부분을 알아야 Keras의 추상화를 안전하게 믿을 수 있어. Keras API 안에서 작성한 코드는 거의 그대로 남고, 차이는 각 백엔드의 고유 객체를 직접 만지는 경계에서 나타나.
백엔드가 달라도 그대로인 것
- Sequential, Functional, Subclassing으로 작성한 모델 정의
model.compile()과model.fit()으로 구성한 학습 흐름- EarlyStopping, ModelCheckpoint 같은 콜백
.keras저장 형식- 모든
keras.ops연산
고유 기능으로 내려갈 때 달라지는 것
원시 텐서를 꺼내거나 장치를 직접 지정하고, 백엔드 전용 라이브러리를 섞기 시작하면 다음 차이가 드러나.
| 측면 | TensorFlow | PyTorch | JAX |
|---|---|---|---|
| 텐서 자료형 | tf.Tensor | torch.Tensor | jax.Array |
| 장치 관리 | tf.device | .to(device) | jax.devices() |
| 레이어의 정체 | Keras 레이어 | torch.nn.Module | Keras 레이어 |
| JIT 컴파일 | tf.function | torch.compile | jax.jit(기본) |
Keras와 keras.ops 안에 머물면 이 차이를 대부분 신경 쓰지 않아도 돼. 고유 API로 내려가야 한다면 그 경계를 코드에서 분명히 표시해. 백엔드를 바꿀 때 수정해야 할 곳이 바로 그 경계뿐이기 때문이야.