Git Product home page Git Product logo

brightwire's Introduction

Bright Wire

Bright Wire is an extensible machine learning library for .NET with GPU support (via CUDA).

Getting Started

Bright Wire runs "out of the box" for CPU based computation on .net 4.6 and above and .net standard 2. For GPU based computation, you will need to install NVIDIA CUDA Toolkit 10 (and have a Kepler or better NVIDIA GPU).

To enable higher performance CPU based computation, Bright Wire also supports the Intel Math Kernel Library (MKL) via the Numerics.Net Wrapper.

Tutorials

Nuget Installation

To install the .net4 version (no CUDA support, any CPU) use:

Install-Package BrightWire.Net4

To add CUDA support (.net4, x64 only) use:

Install-Package BrightWire.CUDA.Net4.x64

Note: When using the CUDA version, make sure that the /cuda/brightwire.ptx file is copied to the output directory (Properties/Copy To Output Directory).

To install the .net standard version for use with Xamarin or UWP use:

Install-Package BrightWire

Recompiling the PTX

It's highly likely that your GPU supports different CUDA capabilities than the precompiled brightwire.ptx in this repository. You can find what is your capability level here. It's a number, ex. 3.0, 3.5, that you use for specifying compute_XX and sm_XX parameters.

If you get an ErrorNoBinaryForGPU exception, that means you have to recompile. The instructions are here.

Example command for NVIDIA GeForce GTX770M (CUDA 3.0)

nvcc kernel.cu -use_fast_math -ptx -m 64 -arch compute_30 -code sm_30 -o kernel.ptx

Linux Support

Without CUDA

You can use Bright Wire on Mono (tested with 4.6.2/Fedora 25) out of the box, no additional setting up is needed.

With CUDA

Bright Wire can also work with CUDA on Mono. When you build your solution, you will need to extract ConfigForLinux.zip archive from here to your output path. That way, CUDA won't look for nvcuda on Linux, but for libcuda shared object. You can even run on your Optimus enabled laptop (tested with GTX770M with Bumblebee) with optirun mono [binary_name].

Another issue you may have is that protobuf library complains that it is already referencing NETStandard library. NuGet version is a bit older on Mono, so please try with the latest NuGet binary from their website. That way, all the libraries get pulled correctly.

Features

Connectionist aka "Deep Learning"

  • Feed Forward, Convolutional and Bidirectional network architectures
  • LSTM, GRU, Simple, Elman and Jordan recurrent neural networks
  • L2, Dropout and DropConnect regularisation
  • Relu, LeakyRelu, Sigmoid, Tanh and SoftMax activation functions
  • Gaussian, Xavier and Identity weight initialisation
  • Cross Entropy, Quadratic and Binary cost functions
  • Momentum, NesterovMomentum, Adagrad, RMSprop and Adam gradient descent optimisations

Bayesian

  • Naive Bayes
  • Multinomial Bayes
  • Multivariate Bernoulli
  • Markov Models

Unsupervised

  • K Means clustering
  • Hierachical clustering
  • Non Negative Matrix Factorisation
  • Random Projection

Linear

  • Regression
  • Logistic Regression
  • Multinomial Logistic Regression

Tree Based

  • Decision Trees
  • Random Forest

Ensemble Methods

  • Stacking

Other

  • K Nearest Neighbour classification
  • In-memory and file based data processing

Dependencies

brightwire's People

Contributors

jdermody avatar prosa100 avatar nmilosev avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.