### 3 unstable releases

Uses old Rust 2015

0.3.0 | Aug 17, 2018 |
---|---|

0.1.1 | Nov 3, 2017 |

0.1.0 | Feb 8, 2017 |

#**73** in Machine learning

**23** downloads per month

**MIT**license

595KB

14K
SLoC

# Alumina

An experimental deep learning library written in pure rust. Breakage expected on each release in the short term. See mnist.rs in examples or Rusty_SR for usage samples.

## Contributions

Issues are a great place for discussion, problems, requests, and coordinating future work.

Blatantly incorrect documentation contributions are encouraged as a way to guide efforts on docs, just submit a PR and fill a doc comment with anything from your best guess to passive aggressive nursery rhymes.

## Documentation

Patchy until the library settles down, particularly until the graph abstraction is finalised and the switch to ndarray is completed.

## Progress

- Computation hypergraph
- Dense Connection and Bias operations
- Loss functions
- Mean Squared Error
- Categorical Cross Entropy
- SoftMax Cross Entropy
- Binary Cross Entropy

- Activations
- Tanh
- Logistic
- Identity
- ReLU
- LeakyReLU
- ELU
- SoftMax
- SRGB Curves
- BeLU
- SoftExp
- SoftPlus

- Spatial operations
- Shape constraint propagation
- N-dimensional Convolution
- Arbitrary padding
- Strides

- N-dimensional AvgPooling
- N-dimensional spaxel shuffling for "Sub-pixel Convolution"
- N-dimensional Linear-Interpolation (backprop not finished)
- Global Pooling
- Broadcasting

- Data Loading
- Mnist
- Cifar
- Image Folders
- Imagenet (ILSVRC)

- SGD
- RMSProp
- ADAM
- CAIN
- Adaptive BatchSize
- Adaptive Learning Rate
- Adaptive Momentum

- Basic numerical tests
- Limit Optimiser evaluation batch size to stay within memory limits
- Selectively disable calculation of forward values, node derivatives and parameter derivatives
- Builder patterns for operation contruction
- Split Graph struct into mutable GraphBuilder and immutable Sub-Graphs
- Replace 'accidentally quadratic' graph algorithms
- Replace up-front allocation with Sub-Graph optimised allocation/deallocation patterns based on liveness analysis of nodes

- Overhaul data ingestion, particularly buffering input processing/reads.
- Move to bluss' ndarray where possible (long overdue)
- Improve naming inter/intra-library consistancy
- Complete Documentation
- Reduce ability to express illegal states in API
- Move from panics to error-chain
- Guard unsafe code rigourously
- Comprehensive tests
- Arrayfire as an option for sgemm on APUs

### Distant

- RNNs
- Efficient probablistic structures (e.g. generative RNNs)
- Graph optimisation passes and inplace operations
- Support for both dynamic and static graphs

## License

MIT

#### Dependencies

~11MB

~233K SLoC