# Machine-Learning Frameworks

Frameworks are the software layers that let researchers define, train, and deploy models. This sub-article expands [Section 2.2 of Hardware & Software](../hardware-software.md).

## Deep-Learning Frameworks
- **TensorFlow** (Google, 2015) — production-oriented, with Keras integration.
- **PyTorch** (Meta, 2016) — Pythonic, dynamic graphs; dominant in research.
- **JAX** (Google) — functional, high-performance research code with `jit`, `vmap`, and `grad`.

## Classical ML and Statistics
- **scikit-learn**, **XGBoost**, and **statsmodels** cover classical models and pipelines.
- **Hugging Face Transformers** provides a unified interface to pretrained models.

## Automatic Differentiation
- Frameworks compute gradients automatically, enabling backpropagation.
- Mixed-precision and distributed-training utilities are built in.

## Choosing a Framework
- Research favors PyTorch/JAX; production often uses TensorFlow or ONNX runtime.
- Interoperability via ONNX lets models move between runtimes.

## Why It Matters
Frameworks lower the barrier to building models, standardize workflows, and connect hardware kernels to high-level code.

## Sources
- Paszke, A. et al. (2019). *PyTorch: An Imperative Style.*
- Abadi, M. et al. (2016). *TensorFlow: A System for Large-Scale Machine Learning.*

*Back to [Hardware & Software](../hardware-software.md).*
