One API, three engines
One API, three backends: TensorFlow, PyTorch, and JAX (plus OpenVINO for inference-only). The latest stable version is Keras 3.11.3.
The breakthrough is the keras.ops namespace — a universal operation layer that implements the full NumPy API plus neural network-specific functions. When you write keras.ops.matmul(x, w), Keras dispatches the call to jax.numpy.matmul, tf.matmul, or torch.matmul depending on the active backend, producing numerically identical results.
What "backend-agnostic" buys you
- Write your model once, train it on any framework
- Save a model trained on JAX, load it in TensorFlow for deployment
- Use PyTorch's ecosystem for research, then export for TF Serving in production
- Every built-in Keras layer, metric, loss, and optimizer uses
keras.opsinternally — so they're all portable for free
That last point is the quiet one that matters most: portability isn't a feature you opt into, it's the default the whole library is built on. The Code block below is the layer that makes it true.