# Nx v0.12.0 - Table of Contents

Multi-dimensional arrays (tensors) and numerical definitions for Elixir

## Pages

- [Changelog](changelog.md)

- Getting Started
  - [What is Nx?](introduction.md)
  - [Installation](installation.md)
  - [Nx Quickstart](quickstart.md)
  - [Broadcasting](broadcasting.md)
  - [Numerical Definitions (defn)](numerical_definitions.md)

- Cheatsheets
  - [NumPy -&gt; Nx](numpy_nx.md)

- Exercises
  - [Exercises: 1-20](exercises-1-20.md)

- Advanced
  - [Vectorization](vectorization.md)
  - [Aggregation](aggregation.md)
  - [Automatic Differentation](automatic_differentiation.md)
  - [Discrete Fourier Transform with Nx](complex_fft.md)

## Modules

- [Nx](Nx.md): Numerical Elixir.
- [Nx.Constants](Nx.Constants.md): Common constants used in computations.
- [Nx.Defn](Nx.Defn.md): Numerical functions.
- [Nx.Defn.Kernel](Nx.Defn.Kernel.md): All imported functionality available inside `defn` blocks.
- [Nx.Floating](Nx.Floating.md): Functions for loading and dumping floating-point formats
not supported by the Erlang VM.

- [Nx.LinAlg](Nx.LinAlg.md): Nx conveniences for linear algebra.
- [Nx.Random](Nx.Random.md): Pseudo-random number generators.
- [Nx.Serving](Nx.Serving.md): Serving encapsulates client and server work to perform batched requests.
- [Nx.Testing](Nx.Testing.md): Testing functions for Nx tensor assertions.

- Protocols
  - [Nx.Container](Nx.Container.md): A protocol that teaches `defn` how to traverse data structures.
  - [Nx.LazyContainer](Nx.LazyContainer.md): Converts a data structure to a container lazily.

- Structs
  - [Nx.Batch](Nx.Batch.md): Creates a batch of tensors (and containers).
  - [Nx.Heatmap](Nx.Heatmap.md): Provides a heatmap that is printed using ANSI colors
in the terminal.

  - [Nx.Mesh](Nx.Mesh.md): A mesh is a named collection of devices arranged in a logical shape.
  - [Nx.Pointer](Nx.Pointer.md): Represents a reference to a value in memory.
  - [Nx.Tensor](Nx.Tensor.md): The tensor struct and the behaviour for backends.

- Backends
  - [Nx.Backend](Nx.Backend.md): The behaviour for tensor backends.
  - [Nx.BinaryBackend](Nx.BinaryBackend.md): An opaque backend written in pure Elixir that stores
the data in Elixir's binaries.
  - [Nx.TemplateBackend](Nx.TemplateBackend.md): An opaque backend written that is used as template
to declare the type, shape, and names of tensors to
be expected in the future.
  - [Nx.Type](Nx.Type.md): Conveniences for working with types.

- Compilers
  - [Nx.Defn.Compiler](Nx.Defn.Compiler.md): The specification and helper functions for custom `defn` compilers.

  - [Nx.Defn.Composite](Nx.Defn.Composite.md): Functions to deal with composite data types.
  - [Nx.Defn.Evaluator](Nx.Defn.Evaluator.md): The default implementation of a `Nx.Defn.Compiler`
that evaluates the expression tree against the
tensor backend.
  - [Nx.Defn.Expr](Nx.Defn.Expr.md): The expression used by `Nx.Defn.Compiler`.
  - [Nx.Defn.Graph](Nx.Defn.Graph.md): A module for splitting `Nx.Defn.Expr` into stages.
  - [Nx.Defn.Token](Nx.Defn.Token.md): A `defn` token used by hooks.
  - [Nx.Defn.Tree](Nx.Defn.Tree.md): Helper functions to traverse defn expressions,
either as single nodes or in-depth.

- Blocks
  - [Nx.Block.AllClose](Nx.Block.AllClose.md)
  - [Nx.Block.CumulativeMax](Nx.Block.CumulativeMax.md)
  - [Nx.Block.CumulativeMin](Nx.Block.CumulativeMin.md)
  - [Nx.Block.CumulativeProduct](Nx.Block.CumulativeProduct.md)
  - [Nx.Block.CumulativeSum](Nx.Block.CumulativeSum.md)
  - [Nx.Block.FFT2](Nx.Block.FFT2.md)
  - [Nx.Block.IFFT2](Nx.Block.IFFT2.md)
  - [Nx.Block.IRFFT](Nx.Block.IRFFT.md)
  - [Nx.Block.LinAlg.Cholesky](Nx.Block.LinAlg.Cholesky.md)
  - [Nx.Block.LinAlg.Determinant](Nx.Block.LinAlg.Determinant.md)
  - [Nx.Block.LinAlg.Eigh](Nx.Block.LinAlg.Eigh.md)
  - [Nx.Block.LinAlg.LU](Nx.Block.LinAlg.LU.md)
  - [Nx.Block.LinAlg.QR](Nx.Block.LinAlg.QR.md)
  - [Nx.Block.LinAlg.SVD](Nx.Block.LinAlg.SVD.md)
  - [Nx.Block.LinAlg.Solve](Nx.Block.LinAlg.Solve.md)
  - [Nx.Block.LogicalNot](Nx.Block.LogicalNot.md)
  - [Nx.Block.Phase](Nx.Block.Phase.md)
  - [Nx.Block.RFFT](Nx.Block.RFFT.md)
  - [Nx.Block.Take](Nx.Block.Take.md)
  - [Nx.Block.TakeAlongAxis](Nx.Block.TakeAlongAxis.md)
  - [Nx.Block.TopK](Nx.Block.TopK.md)

