# EagerPy

PyTorch, TensorFlow, JAX and NumPy — all of them natively using the same code

## Native Performance

EagerPy operations get directly translated into the corresponding native operations.

## Fully Chainable

All functionality is available as methods on the tensor objects and as EagerPy functions.

## Type Checking

Catch bugs before running your code thanks to EagerPy's extensive type annotations.

### # What is EagerPy?

**EagerPy** is a **Python framework** that let's you write code that automatically works natively with **PyTorch**, **TensorFlow**, **JAX**, and **NumPy**.

```
import eagerpy as ep
def norm(x):
x = ep.astensor(x)
result = x.square().sum().sqrt()
return result.raw
```

You can now **use** the `norm`

function **with native tensors** and arrays from PyTorch, TensorFlow, JAX and NumPy with **virtually no overhead compared to native code**. Of course, it also works with **GPU tensors**.

```
import torch
norm(torch.tensor([1., 2., 3.]))
# tensor(3.7417)
```

```
import tensorflow as tf
norm(tf.constant([1., 2., 3.]))
# <tf.Tensor: shape=(), dtype=float32, numpy=3.7416575>
```

```
import jax.numpy as np
norm(np.array([1., 2., 3.]))
# DeviceArray(3.7416575, dtype=float32)
```

```
import numpy as np
norm(np.array([1., 2., 3.]))
# 3.7416573867739413
```

### # Getting Started

You can install the latest release from PyPI using `pip`

:

```
python3 -m pip install eagerpy
```

NOTE

EagerPy requires Python 3.6 or newer.