Dropout As A Bayesian Approximation: Code
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
cifar10_uncertainty First commit Jul 3, 2015
co2_regression First commit Jul 3, 2015
mnist_uncertainty First commit Jul 3, 2015
solar_regression First commit Jul 3, 2015
LICENSE Initial commit Jul 3, 2015
readme.md First commit Jul 3, 2015

readme.md

#Dropout As A Bayesian Approximation: Code

These are the Caffe models used for the experiments in Dropout As A Bayesian Approximation: Representing Model Uncertainty In Deep Learning and Bayesian Convolutional Neural Networks With Bernoulli Approximate Variational Inference.

Each folder correspond to a different dataset. Solar and CO2 folders have the processed datasets in the folder. MNIST and CIFAR10 use the default datasets processed by Caffe. Each folder contains 4 files for each experiment: *_deploy.prototxt, *_sampleTest_deploy.prototxt, *_solver.prototxt, *_dropout_solver.log. The first contains the network structure, the second contains the network structure for test time (when we sample stochastic forward passes through the network), the third is the solver configuration file, and the fourth is the resulting log file. The file name prefix in each folder corresponds to the network structure (for example lenet, MLP1024x1024x1024, and so on). This is followed by the experiment name (for example dropout, all_dropout, none, tanh, and so on). These are quite obvious from context.

Pycaffe was used to produce the plots shown in the papers. To get pycaffe to give stochastic forward passes through the dropout network, add the following line of code in src/caffe/proto/caffe.proto to "message DropoutParameter" (line 471):

  optional bool sample_weights_test = 2 [default = false]; // Sample weights for testing or use the mean 

Additionally, in src/caffe/layers/dropout_layer.cpp and src/caffe/layers/dropout_layer.cu, replace (two occurrences in each file)

  if (this->phase_ == TRAIN) {

with

  if (this->phase_ == TRAIN || this->layer_param_.dropout_param().sample_weights_test()) {