Vulpes: a Deep Belief Net written in F#, and using Alea.cuBase to access the GPU.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github
.nuget
Backpropagation.Tests
Backpropagation
Classification.Tests
Classification
Common.Tests
Common
DeepBelief.Tests
DeepBelief
DeepLearning.Tests
DeepLearning
MnistClassification.Web
MnistClassification
packages
.gitattributes
.gitignore
.travis.yml
MIT-license.txt
README.md
Vulpes.sln

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)