cntk

Crates.iocntk
lib.rscntk
version0.2.1
sourcesrc
created_at2017-10-29 16:41:30.205168
updated_at2017-11-29 22:07:21.006376
descriptionWrapper around Microsoft CNTK library
homepage
repositoryhttps://github.com/usamec/cntk-rs
max_upload_size
id37358
size202,941
Vlado Boza (usamec)

documentation

https://usamec.github.io/cntk-rs/cntk/

README

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?).
Commit count: 41

cargo fmt