8 releases
Uses old Rust 2015
0.2.1 | Nov 29, 2017 |
---|---|
0.2.0 | Nov 29, 2017 |
0.1.1 | Nov 17, 2017 |
0.0.4 | Nov 8, 2017 |
0.0.2 | Oct 29, 2017 |
#699 in Machine learning
28 downloads per month
160KB
4K
SLoC
Bindings for CNTK library
Simple low level bindings for CNTK library from Microsoft.
Status
Currently exploring ways how to interact with C++ API nicely from Rust. Expect a lot of breaking changes.
Build scripts are not ready yet, might not work outside of 64bit linux.
Goals
- Ability to train all reasonable architectures
- No memory leaks
- Reasonable ease of use
Nongoals
- Idiomatic Rust everywhere
- Super good ergonomics
- Avoiding all unnecessary copies
Building and installing
You need to have CNTK-2.3 installed and paths to includes and library files in relevant enviroment variables (cntk activate scripts does this well). You also need g++-4.8 installed (because CNTK uses it to compile things).
Example usage
See examples folder.
Other limitations
Only works with single precision (f32 in Rust, float in C++) types. Only works with dense representations of vectors/matrices/tensors. Only works with ASCII strings for variable names and filenames.
What works
- Passing data in and out of computation.
- Backpropagation.
- Training fully connected feedforward, convolutional and recurrent network.
- Saving and loading the model.
- Code for most operations. - Almost all, except couple of helpers.
- Demo of seq2seq model training.
- Turning c++ exception into rust panics (most of the time).
- Interop with NDArray library.
Planned in future
- GPU.
- Better docs.
- Finish all operations.
- Better build scripts.
- Figure out whether we want NDArrayView or go directly from Rust data to Value and back.
- Builder pattern where appropriate (Variable?).
Dependencies
~3.5MB
~67K SLoC