#deep-learning #machine-learning #tensor #pytorch #ndarray

burn-tensor

This library provides multiple tensor implementations hidden behind an easy to use API that supports reverse mode automatic differentiation

7 unstable releases (3 breaking)

0.4.0 Dec 30, 2022
0.3.0 Nov 20, 2022
0.2.3 Oct 5, 2022
0.2.2 Sep 9, 2022
0.1.0 Jul 27, 2022

#146 in Machine learning

Download history 6/week @ 2022-10-10 8/week @ 2022-10-17 9/week @ 2022-10-24 13/week @ 2022-10-31 28/week @ 2022-11-07 29/week @ 2022-11-14 38/week @ 2022-11-21 14/week @ 2022-11-28 20/week @ 2022-12-05 27/week @ 2022-12-12 25/week @ 2022-12-19 54/week @ 2022-12-26 18/week @ 2023-01-02 26/week @ 2023-01-09 15/week @ 2023-01-16 26/week @ 2023-01-23

86 downloads per month
Used in 4 crates

MIT/Apache

99KB
2.5K SLoC

Burn Tensor

Burn Tensor Library

Current Crates.io Version license

This library provides multiple tensor implementations hidden behind an easy to use API that supports reverse mode automatic differentiation.

Features

  • Flexible ✨
  • CPU + GPU 🙏
  • Multi-Threads 🚀
  • Intuitive Usage 😌
  • No Global State 🚫
  • Multiple Backends 🦾
  • Reverse Mode Autodiff 🔥

Backends

For now, only two backends are implementated, but adding new ones should not be that hard.

Autodiff

Automatic differentiation is implemented as just another tensor backend without any global state. It's possible since we keep track of the order in which each operation as been executed and the tape is only created when calculating the gradients. To do so, each operation creates a new node which has a reference to its parent nodes. Therefore, creating the tape only requires a simple and efficent graph traversal algorithm.

    let x = ADTensor::from_tensor(x_ndarray);
    let y = ADTensor::from_tensor(y_ndarray);

    let z = x.matmul(&y);

    let grads = z.backward();

    let x_grad = x.grad(&grads);
    let y_grad = y.grad(&grads);

Cuda

To run with CUDA set TORCH_CUDA_VERSION=cu113.

Notes

This crate can be use alone without the entire burn stack and with only selected backends for smaller binaries.

Dependencies

~5.5MB
~113K SLoC