-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
55 changed files
with
12,926 additions
and
4,431 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
.pyc | ||
.project | ||
.idea | ||
.pydevproject | ||
*.pyc | ||
*.project | ||
*.idea | ||
*.pydevproject |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,104 @@ | ||
# PyDeep | ||
|
||
NEWS: In the following weeks there will be a lot of updates, see list of features below | ||
|
||
PyDeep is a machine learning / deep learning library with focus on unsupervised learning especially Restricted Boltzmann machines. | ||
|
||
So why another ML lib? | ||
|
||
- First of all, the library will contain code I produced during my research that allows to reproduce the results in corresponding publications. | ||
- If you simply want to use standard algorithms, use one of the big ML libs having GPU support, symbolic differentiation, etc. , this library is not meant to compete with those libraries! | ||
- The focus is on well documented and modular code that allows you to understand the functionality and thus modify the code easily. | ||
|
||
Feature list: | ||
- Centered Binary-Binary RBMs | ||
- CD and PCD sampling | ||
- Centered gradient | ||
- Calculate true partition function | ||
- Calculate Log-likelihood | ||
- Calculate reconstruction error | ||
- Visualization, profiling, misc. tools | ||
|
||
Being prepared for commit: | ||
- Centered Gaussian-Binary RBMs | ||
- Centered Gaussian-Binary RBMs with trainable variance | ||
- Centered Binary-Rectifier RBMs | ||
- Centered Rectifier-Binary RBMs | ||
- Centered RectRect RBM (RR-RBM) | ||
- Centered GaussianRectVariance RBM (GRV-RBM) | ||
- Centered RBMs with additional label units | ||
- Centered Softmax RBMs | ||
- unit tests | ||
- PCA | ||
- ZCA | ||
- Fast ICA | ||
- Annealed inportant sampling | ||
- Reverse annealed important sampling | ||
- MDP wrapper | ||
- Auto encoder | ||
Documentation: http://pydeep.readthedocs.io/en/latest/index.html | ||
|
||
|
||
Welcome | ||
|
||
PyDeep is a machine learning / deep learning library with focus on unsupervised learning. | ||
The library has a modular design, is well documented and purely written in Python/Numpy. | ||
This allows you to understand, use, modify, and debug the code easily. Furthermore, | ||
its extensive use of unittests assures a high level of reliability and correctness. | ||
|
||
News | ||
|
||
- The documentation is updated to restructured text | ||
- Documentation hosted | ||
- Next the unit tests will be added | ||
- Upcoming: Tutorials will be added | ||
- Upcoming: Auto encoders will be added | ||
- Upcoming: MDP integration will be added | ||
- Upcoming: Deep Boltzmann machines will be added | ||
- Upcoming: Feed Forward neural networks will be added | ||
|
||
Features | ||
|
||
- Principal Component Analysis (PCA) | ||
|
||
- Zero Phase Component Analysis (ZCA) | ||
|
||
- Independent Component Analysis (ICA) | ||
|
||
- centered BinaryBinary RBM (BB-RBM) | ||
|
||
- centered GaussianBinary RBM (GB-RBM) with fixed variance | ||
|
||
- centered GaussianBinaryVariance RBM (GB-RBM) with trainable variance | ||
|
||
- centered BinaryBinaryLabel RBM (BBL-RBM) | ||
|
||
- centered GaussianBinaryLabel RBM (GBL-RBM) | ||
|
||
- centered BinaryRect RBM (BR-RBM) | ||
|
||
- centered RectBinary RBM (RB-RBM) | ||
|
||
- centered RectRect RBM (RR-RBM) | ||
|
||
- centered GaussianRect RBM (GR-RBM) | ||
|
||
- centered GaussianRectVariance RBM (GRV-RBM) | ||
|
||
- Gibbs Sampling | ||
|
||
- Persistent Gibbs Sampling | ||
|
||
- Parallel Tempering Sampling | ||
|
||
- Independent Parallel Tempering Sampling | ||
|
||
- Annealed Importance Sampling (AIS) | ||
|
||
- reverse Annealed Importance Sampling (AIS) | ||
|
||
- Contrastive Divergence (CD) | ||
|
||
- Persistent Contrastive Divergence (PCD) | ||
|
||
- Tempering Sampling Contrastive Divergence (PT) | ||
|
||
- Independent Tempering Sampling Contrastive Divergence (IPT) | ||
|
||
- Exact Gradient (GD) | ||
|
||
|
||
Scientific use | ||
|
||
The library contains code I have written during my PhD research allowing you to reproduce | ||
the results described in the following publications. | ||
|
||
- `Gaussian-binary restricted Boltzmann machines for modeling natural image statistics. Melchior, J., Wang, N., & Wiskott, L.. (2017). PLOS ONE, 12(2), 1–24. <http://doi.org/10.1371/journal.pone.0171015>`_ | ||
|
||
- `How to Center Deep Boltzmann Machines. Melchior, J., Fischer, A., & Wiskott, L.. (2016). Journal of Machine Learning Research, 17(99), 1–61. <http://jmlr.org/papers/v17/14-237.html>`_ | ||
|
||
- `Gaussian-binary Restricted Boltzmann Machines on Modeling Natural Image statistics Wang, N., Melchior, J., & Wiskott, L.. (2014). (Vol. 1401.5900). arXiv.org e-Print archive. <http://arxiv.org/abs/1401.5900>`_ | ||
|
||
- `How to Center Binary Restricted Boltzmann Machines (Vol. 1311.1354). Melchior, J., Fischer, A., Wang, N., & Wiskott, L.. (2013). arXiv.org e-Print archive. <http://arxiv.org/pdf/1311.1354.pdf>`_ | ||
|
||
- `An Analysis of Gaussian-Binary Restricted Boltzmann Machines for Natural Images. Wang, N., Melchior, J., & Wiskott, L.. (2012). In Proc. 20th European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning, Apr 25–27, Bruges, Belgium (pp. 287–292). <https://www.ini.rub.de/PEOPLE/wiskott/Reprints/WangMelchiorEtAl-2012a-ProcESANN-RBMImages.pdf>`_ | ||
|
||
- `Learning Natural Image Statistics with Gaussian-Binary Restricted Boltzmann Machines. Melchior, J, 29.05.2012. Master’s thesis, Applied Computer Science, Univ. of Bochum, Germany. <https://www.ini.rub.de/PEOPLE/wiskott/Reprints/Melchior-2012-MasterThesis-RBMs.pdf>`_ | ||
|
||
IF you want to use PyDeep in your publication, you can cite it as follows. | ||
|
||
.. code-block:: latex | ||
|
||
@misc{melchior2017pydeep, | ||
title={PyDeep}, | ||
author={Melchior, Jan}, | ||
year={2017}, | ||
publisher={GitHub}, | ||
howpublished={\url{https://github.com/MelJan/PyDeep.git}}, | ||
} | ||
|
||
Contact: | ||
|
||
`Jan Melchior <https://www.ini.rub.de/the_institute/people/jan-melchior/>`_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Minimal makefile for Sphinx documentation | ||
# | ||
|
||
# You can set these variables from the command line. | ||
SPHINXOPTS = | ||
SPHINXBUILD = sphinx-build | ||
SPHINXPROJ = PyDeep | ||
SOURCEDIR = . | ||
BUILDDIR = _build | ||
|
||
# Put it first so that "make" without argument is like "make help". | ||
help: | ||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | ||
|
||
.PHONY: help Makefile | ||
|
||
# Catch-all target: route all unknown targets to Sphinx using the new | ||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). | ||
%: Makefile | ||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
# -*- coding: utf-8 -*- | ||
# | ||
# PyDeep documentation build configuration file, created by | ||
# sphinx-quickstart on Wed Apr 5 20:57:40 2017. | ||
# | ||
# This file is execfile()d with the current directory set to its | ||
# containing dir. | ||
# | ||
# Note that not all possible configuration values are present in this | ||
# autogenerated file. | ||
# | ||
# All configuration values have a default; values that are commented out | ||
# serve to show the default. | ||
|
||
# If extensions (or modules to document with autodoc) are in another directory, | ||
# add these directories to sys.path here. If the directory is relative to the | ||
# documentation root, use os.path.abspath to make it absolute, like shown here. | ||
# | ||
import os | ||
import sys | ||
sys.path.insert(0, os.path.abspath('../')) | ||
|
||
|
||
# -- General configuration ------------------------------------------------ | ||
|
||
# If your documentation needs a minimal Sphinx version, state it here. | ||
# | ||
# needs_sphinx = '1.0' | ||
|
||
# Add any Sphinx extension module names here, as strings. They can be | ||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom | ||
# ones. | ||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx','sphinx.ext.autosectionlabel']#,'autoapi.extension'] | ||
|
||
# Document Python Code | ||
#autoapi_type = 'python' | ||
#autoapi_dirs = ['../pydeep'] | ||
#autoapi_file_pattern = '*.py' | ||
#autoapi_options = ['members', 'private-members', 'special-members'] | ||
|
||
# Add any paths that contain templates here, relative to this directory. | ||
templates_path = ['_templates'] | ||
|
||
# The suffix(es) of source filenames. | ||
# You can specify multiple suffix as a list of string: | ||
# | ||
# source_suffix = ['.rst', '.md'] | ||
source_suffix = '.rst' | ||
|
||
# The master toctree document. | ||
master_doc = 'index' | ||
|
||
# General information about the project. | ||
project = u'PyDeep' | ||
copyright = u'2017, Jan Melchior' | ||
author = u'Jan Melchior' | ||
|
||
# The version info for the project you're documenting, acts as replacement for | ||
# |version| and |release|, also used in various other places throughout the | ||
# built documents. | ||
# | ||
# The short X.Y version. | ||
version = u'1.1.0' | ||
# The full version, including alpha/beta/rc tags. | ||
release = u'1.1.0' | ||
|
||
# The language for content autogenerated by Sphinx. Refer to documentation | ||
# for a list of supported languages. | ||
# | ||
# This is also used if you do content translation via gettext catalogs. | ||
# Usually you set "language" from the command line for these cases. | ||
# language = None | ||
|
||
# List of patterns, relative to source directory, that match files and | ||
# directories to ignore when looking for source files. | ||
# This patterns also effect to html_static_path and html_extra_path | ||
exclude_patterns = ['_build'] | ||
|
||
# The name of the Pygments (syntax highlighting) style to use. | ||
pygments_style = 'sphinx' | ||
|
||
# If true, `todo` and `todoList` produce output, else they produce nothing. | ||
# todo_include_todos = False | ||
|
||
|
||
# -- Options for HTML output ---------------------------------------------- | ||
|
||
# The theme to use for HTML and HTML Help pages. See the documentation for | ||
# a list of builtin themes. | ||
# | ||
html_theme = 'default' | ||
|
||
# Theme options are theme-specific and customize the look and feel of a theme | ||
# further. For a list of options available for each theme, see the | ||
# documentation. | ||
# | ||
# html_theme_options = {} | ||
|
||
# Add any paths that contain custom static files (such as style sheets) here, | ||
# relative to this directory. They are copied after the builtin static files, | ||
# so a file named "default.css" will overwrite the builtin "default.css". | ||
html_static_path = ['_static'] | ||
|
||
|
||
# -- Options for HTMLHelp output ------------------------------------------ | ||
|
||
# Output file base name for HTML help builder. | ||
htmlhelp_basename = 'PyDeepdoc' | ||
|
||
|
||
# -- Options for LaTeX output --------------------------------------------- | ||
|
||
latex_elements = { | ||
# The paper size ('letterpaper' or 'a4paper'). | ||
# | ||
# 'papersize': 'letterpaper', | ||
|
||
# The font size ('10pt', '11pt' or '12pt'). | ||
# | ||
# 'pointsize': '10pt', | ||
|
||
# Additional stuff for the LaTeX preamble. | ||
# | ||
# 'preamble': '', | ||
|
||
# Latex figure (float) alignment | ||
# | ||
# 'figure_align': 'htbp', | ||
} | ||
|
||
# Grouping the document tree into LaTeX files. List of tuples | ||
# (source start file, target name, title, | ||
# author, documentclass [howto, manual, or own class]). | ||
latex_documents = [ | ||
(master_doc, 'PyDeep.tex', u'PyDeep Documentation', | ||
u'Jan Melchior', 'manual'), | ||
] | ||
|
||
|
||
# -- Options for manual page output --------------------------------------- | ||
|
||
# One entry per manual page. List of tuples | ||
# (source start file, name, description, authors, manual section). | ||
man_pages = [ | ||
(master_doc, 'pydeep', u'PyDeep Documentation', | ||
[author], 1) | ||
] | ||
|
||
|
||
# -- Options for Texinfo output ------------------------------------------- | ||
|
||
# Grouping the document tree into Texinfo files. List of tuples | ||
# (source start file, target name, title, author, | ||
# dir menu entry, description, category) | ||
texinfo_documents = [ | ||
(master_doc, 'PyDeep', u'PyDeep Documentation', | ||
author, 'PyDeep', 'One line description of project.', | ||
'Miscellaneous'), | ||
] | ||
|
||
|
||
|
||
|
||
# Example configuration for intersphinx: refer to the Python standard library. | ||
intersphinx_mapping = {'https://docs.python.org/': None} |
Oops, something went wrong.