/numsuch

A Numerical Library for the Chapel Programming Language

Primary LanguageChapelApache License 2.0Apache-2.0

NumSuch v 0.2.5

Porting little bits of code I need from NumPy over to Chapel.

Documents, such as they are, should be available here as are the Release Notes. Note the docs are out of date due to a Chapel issue with chpldoc incompatibility with Python 3

This is an attempt to collect numerical tools into Chapel libraries. It's a purely amateur effort, since I am by no means a numerical programmer.

Let's be bold. Let's do NumPy + SciPy + Keras all at once.

Hopefully we can get the algorithms documented in the tex directory. Trust the raw TeX for recency, not the PDFs.

Please contribute to this project! I've tried to make it easy by (1) being generally friendly and (2) providing a Contributor's Guide. I'm very open to being told "Ur doin it wrong!"

Why Chapel?

Because it works. I'm finding myself laughing out loud at 2 AM saying "I can't believe that worked the first time!". And it feels like the love child of Python (mom) and Fortran (dad), the two greatest languages ever invented.

I find the Cheat Sheet pretty useful, now that someone finally told me about it... Ben...

NNModels

Algorithms are based on Section 6.5 of "Deep Learning" by Goodfellow, Bengio and Courville. See 1st Ed. page 202

Quick example from the MLP tests

use NN;
writeln("How do you run tests in Chapel?");

writeln("Hola Mundo!");
var X = Matrix(
   [1.0,0.0,1.0,0.0],
   [1.0,0.0,1.0,1.0],
   [0.0,1.0,0.0,1.0]);
var y = Vector([1.0,1.0,0.0]);

const epochs:int = 5000,
      lr: real = 0.1;
var model = new Sequential();
model.add(new Dense(units=2, inputDim=4, batchSize=3));
model.add(new Dense(units=1));
//model.add(new Dense(units=6));
model.add(new Activation(name="relu"));

var o = model.fit(xTrain=X,yTrain=y, epochs=epochs, lr=lr);

GBSSL

Based mostly on the PPT by Talukdar and Subramanya However, this module has been temporarily removed due to problems with convergence.

Related Projects