SharpML is plugin-based C# Machine Learning Workbench which makes it easy to write and reuse machine learning algorithms and provides facilities for performing the computations on a GPU (or CPU). The workbench provides functionality for interacting with a neural network while it is learning by viewing reconstructions from a dataset or from user input, viewing "dreams", and mapping the output. If you have multiple devices, you can run these two functions in parallel for a faster user experience.

There are three plugin types:

  • Adaptors: Converts any data to network primitive and provides visualization support for both.
  • Engine: Performs the computation.
  • Trainer: Monitors and configures the engine in an attempt to achieve optimal training.

The trainer can support supervised or unsupervised learning, and is capable of interacting with the adaptor to change the dataset during training.


This project is intended for research purposes.


This project was built as evolution based on the work of many people.

A special thanks to Geoffrey Hinton and his research which got me started down this path.

A special thanks to Mattias Fagerlund and his project, SharpRBM, which inspired me to write this.

Last edited Dec 18, 2013 at 3:57 PM by cjhanson, version 2