Vulpes: a Deep Belief Net written in F#, and using Alea.cuBase to access the GPU.
JavaScript F# Other

README.md

Issue Stats Issue Stats

Vulpes

Vulpes is an implementation of deep belief and deep learning, written in F# and using Alea.cuBase to connect to your PC's GPU device.

Building

At present, Vulpes has been built only on Visual Studio.

To run Vulpes on the MNIST dataset of handwritten images, set the startup project to MnistClassification.fsproj.

For the MNIST dataset, Vulpes performs pretraining using a deep belief net, followed by fine tuning using a simple backpropagation algorithm.

The pretraining and fine tuning parameters are defined in Program.fs:

// Pretraining parameters
let dbnParameters = 
    {
        Layers = LayerSizes [500; 300; 150; 60; 10]
        LearningRate = LearningRate 0.9f
        Momentum = Momentum 0.2f
        BatchSize = BatchSize 30
        Epochs = Epochs 10
    }
// Fine tuning parameters
let backPropagationParameters =
    {
        LearningRate = LearningRate 0.8f
        Momentum = Momentum 0.25f
        Epochs = Epochs 10
    }

The pretraining is launched by the line

let trainedMnistDbn = trainMnistDbn rand dbnParameters

The output of the pretraining is then translated into a set of backpropagation inputs, which are used to launch the fine tuning in the next line:

let backPropagationNetwork = toBackPropagationNetwork backPropagationParameters trainedMnistDbn
let backPropagationResults = gpuComputeNnetResults backPropagationNetwork mnistTrainingSet mnistTestSet rand backPropagationParameters

Contributions

There are several avenues for further development of Vulpes. To contribute as a developer, I would encourage you to join the mailing list, where we can discuss the issues and milestones.

There is a list of milestones and an issues database in this repository.

Maintainer(s)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)