# arogozhnikov/einops

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/arogozhnikov-einops).**

9,398 stars · 392 forks · Python · mit

## Links

- GitHub: https://github.com/arogozhnikov/einops
- Homepage: https://einops.rocks
- awesome-repositories: https://awesome-repositories.com/repository/arogozhnikov-einops.md

## Topics

`cupy` `deep-learning` `einops` `jax` `mlx` `numpy` `pytorch` `tensor` `tensorflow`

## Description

Einops is a tensor manipulation library that provides a framework-agnostic interface for reshaping, Einstein summation, and multi-dimensional array operations. It serves as an abstraction layer that works across NumPy, PyTorch, TensorFlow, and JAX, allowing for tensor transformations without changing the API.

The library distinguishes itself through a declarative notation system that uses readable string patterns to describe tensor rearrangements and reductions. This approach includes an extended Einstein summation interface that supports multi-letter axis names and a named dimension mapping system to eliminate manual integer indexing.

The toolkit covers a broad range of capabilities including tensor packing, unpacking, and element repetition. It provides utilities for dimension reduction, axis rearrangement, and input shape validation. Additionally, it offers pluggable layer wrappers that integrate these transformations and linear mixing operations directly into sequential neural network model definitions.

The library integrates tensor manipulation functions into compiled execution graphs to maintain runtime performance.

## Tags

### Artificial Intelligence & ML

- [Deep Learning Framework Abstractions](https://awesome-repositories.com/f/artificial-intelligence-ml/deep-learning-framework-abstractions.md) — Acts as a universal abstraction layer for tensor operations across NumPy, PyTorch, TensorFlow, and JAX.
- [Tensor Reshaping](https://awesome-repositories.com/f/artificial-intelligence-ml/tensor-reshaping.md) — Uses a declarative notation system to reshape multi-dimensional arrays, improving readability and reducing indexing errors. ([source](https://einops.rocks/pages/testimonials/))
- [Einstein Summation Utilities](https://awesome-repositories.com/f/artificial-intelligence-ml/machine-learning/infrastructure/model-optimization-and-inference/hardware-and-acceleration/tensor-computing-libraries/tensor-operations/einstein-summation-utilities.md) — Provides utilities for complex tensor contractions and dot products using a flexible Einstein summation notation.
- [Backend-Agnostic Engines](https://awesome-repositories.com/f/artificial-intelligence-ml/neural-network-research/neural-network-toolkits/backend-agnostic-engines.md) — Provides a framework-agnostic interface that dispatches operations to NumPy, PyTorch, TensorFlow, or JAX at runtime.
- [Tensor Libraries](https://awesome-repositories.com/f/artificial-intelligence-ml/tensor-libraries.md) — Provides a comprehensive library for reshaping and rearranging multi-dimensional arrays using declarative notation.
- [Tensor Reductions](https://awesome-repositories.com/f/artificial-intelligence-ml/tensor-reductions.md) — Combines axis rearrangement with reductions like sum, mean, or max to condense multi-dimensional arrays. ([source](https://cdn.jsdelivr.net/gh/arogozhnikov/einops@main/README.md))
- [Composable Network Modules](https://awesome-repositories.com/f/artificial-intelligence-ml/composable-network-modules.md) — Provides abstractions to integrate tensor transformations as modular, reusable components within neural network architectures.
- [Custom Neural Network Layers](https://awesome-repositories.com/f/artificial-intelligence-ml/custom-neural-network-layers.md) — Implements pluggable layer objects that wrap tensor reshaping and reduction operations for sequential models.
- [Data Preprocessing Utilities](https://awesome-repositories.com/f/artificial-intelligence-ml/data-preprocessing-utilities.md) — Ships tools for packing, unpacking, and repeating tensors to prepare data for machine learning models.
- [Deep Learning Architectures](https://awesome-repositories.com/f/artificial-intelligence-ml/deep-learning-architectures.md) — Facilitates the design of deep learning architectures by integrating tensor transformations as pluggable layers.
- [Dimensionality Reduction Utilities](https://awesome-repositories.com/f/artificial-intelligence-ml/dimensionality-reduction-utilities.md) — Combines axis rearrangement with mathematical reductions like summing or averaging to condense tensor data.
- [Neural Network Layers](https://awesome-repositories.com/f/artificial-intelligence-ml/neural-network-layers.md) — Integrates tensor reshaping and reduction operations as pluggable layers compatible with sequential neural network definitions. ([source](https://einops.rocks/2-einops-for-deep-learning/))
- [Element Repetition](https://awesome-repositories.com/f/artificial-intelligence-ml/tensor-reshaping/element-repetition.md) — Duplicates elements across dimensions to perform tiling, broadcasting, and upsampling operations. ([source](https://einops.rocks/1-einops-basics/))
- [Tensor Shape Inspection](https://awesome-repositories.com/f/artificial-intelligence-ml/tensor-shape-inspection.md) — Extracts dimension lengths from tensors into dictionaries using descriptive patterns for verification. ([source](https://einops.rocks/2-einops-for-deep-learning/))
- [Tensor Property Validators](https://awesome-repositories.com/f/artificial-intelligence-ml/tensor-shape-inspection/tensor-property-validators.md) — Verifies that input tensor dimensions conform to expected string templates before executing operations.

### Data & Databases

- [Tensor Packing](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/array-tensor-manipulation/tensor-transformations/tensor-packing.md) — Combines tensors of varying shapes into a single array and tracks their shapes for later restoration. ([source](https://einops.rocks/4-pack-and-unpack/))
- [Tensor Unpacking](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/array-tensor-manipulation/tensor-transformations/tensor-unpacking.md) — Splits a single tensor back into its original constituent parts using stored shape records. ([source](https://einops.rocks/4-pack-and-unpack/))
- [Semantic Dimension Mapping](https://awesome-repositories.com/f/data-databases/memory-mapping-utilities/tensor-mappings/semantic-dimension-mapping.md) — Extracts lengths of tensor axes into dictionaries using named patterns to isolate relevant dimensions. ([source](https://einops.rocks/api/parse_shape/))

### Programming Languages & Runtimes

- [Concatenation](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-type-utilities/array-accessors/concatenation.md) — Combines multiple arrays into a single tensor by adding dimensions or merging along existing ones. ([source](https://einops.rocks/1-einops-basics/))

### Scientific & Mathematical Computing

- [Multi-Dimensional Arrays](https://awesome-repositories.com/f/scientific-mathematical-computing/multi-dimensional-arrays.md) — Implements a comprehensive toolkit for packing, unpacking, repeating, and reducing multi-dimensional arrays.
- [Einstein Summation Translations](https://awesome-repositories.com/f/scientific-mathematical-computing/algorithmic-notation-translations/einstein-summation-translations.md) — Translates extended Einstein summation notation with multi-letter axis names into strings compatible with deep learning frameworks.

### Software Engineering & Architecture

- [Declarative Tensor Notations](https://awesome-repositories.com/f/software-engineering-architecture/expression-transformers/notation-converters/declarative-tensor-notations.md) — Implements a declarative notation system that translates readable string patterns into backend-specific tensor operations.
- [Graph Compilation](https://awesome-repositories.com/f/software-engineering-architecture/graph-compilation.md) — Integrates tensor manipulations into compiled execution graphs to ensure high runtime performance. ([source](https://github.com/arogozhnikov/einops/wiki/Using-torch.compile-with-einops))

### Part of an Awesome List

- [General Machine Learning](https://awesome-repositories.com/f/awesome-lists/ai/general-machine-learning.md) — Deep learning operations for PyTorch, TensorFlow, and JAX.
- [Computation and Optimization](https://awesome-repositories.com/f/awesome-lists/devtools/computation-and-optimization.md) — Flexible tensor operations for readable and reliable code.
