Recent results in Bayesian statistics for constructing robust neural networks have proved that it is one of the best ways to deal with uncertainty, overfitting but still having good performance. Gelato will help to use bayes for neural networks. Library heavily relies on Theano, Lasagne and PyMC3.
- from github (assumes bleeding edge pymc3 installed)
# pip install git+git://github.com/pymc-devs/pymc3.git pip install git+https://github.com/ferrine/gelato.git
- from source
git clone https://github.com/ferrine/gelato pip install -r gelato/requirements.txt pip install -e gelato
I use generic approach for decorating all Lasagne at once. Thus, for using Gelato you need to replace import statements for layers only. For constructing a network you need to be the in pm.Model context environment.
Warning
lasagne.layers.noise
is not supportedlasagne.layers.normalization
is not supported (theano problems with default updates)- functions from
lasagne.layers
are hidden ingelato
as they use Lasagne classes. Some exceptions are done forlasagne.layers.helpers
. I'll try to solve the problem generically in future.
For comprehensive example of using Gelato
you can reference this notebook
Any spec
class can be used standalone so feel free to use it everywhere
Charles Blundell et al: "Weight Uncertainty in Neural Networks" (arXiv preprint arXiv:1505.05424)