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.
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
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.
The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)