allumette
is a toy tensor library built for fun to better understand autodifferentiation.
It is based on minitorch.
Dataset provides a few ways to create synthetic datasets.
use allumette::{
backend::backend_type::{Par, Seq},
data::cpu_tensor_data::CpuTensorData,
training::{dataset::Dataset, train},
};
let pts = 10;
let dataset = Dataset::simple(pts);
let hidden_layer_size = 3;
let learning_rate = 0.5;
let iterations = 200;
// use Par instead of Seq to leverage rayon's parallel iterators
train::train::<Seq, CpuTensorData>(dataset, learning_rate, iterations, hidden_layer_size);
Part of the codebase makes use of the generic_const_exprs
experimental feature so it requires
nightly.
The set of dependencies is otherwise pretty limited:
proptest
for property-based testingrayon
for parallel computationsrand
for synthetic data generation
- parallel backend
- gpu backend
- optimizations
- make encoding tensor dimension as a const generic work