Skip to main content

Training and analyzing Restricted Boltzmann Machines in PyTorch

Project description

codecov pre-commit Static Badge

RBMs

Overview

rbms is a GPU-accelerated package designed to train and analyze Restricted Boltzmann Machines (RBMs). It is intended for students and researchers who need an efficient tool for working with RBMs. Features:

  • GPU Acceleration through PyTorch.
  • Multiple RBM Types: Supports Bernoulli-Bernoulli RBM and Potts-Bernoulli RBM.
  • Extensible Design: Provides an abstract class RBM with methods that can be implemented for new types of RBMs, minimizing the need to reimplement training algorithms, analysis methods, and sampling methods.

Installation

To install TorchRBM, you can use pip:

pip install .

Dependencies

The dependencies are included in the pyproject.toml file and should be compiled in the wheel distribution. If you have a GPU, make sure to install PyTorch with GPU support.

Usage

Main Classes and Functions:

  • RBM: An abstract class that provides the basic structure and methods for RBMs.
  • BBRBM: A concrete implementation of the Bernoulli-Bernoulli RBM.
  • PBRBM: A concrete implementation of the Potts-Bernoulli RBM.
  • rbms.sampling: Submodule for sampling methods.
  • rbms.training: Submodule for training algorithms.

Basic Example

Train a RBM on MNIST-01 with PCD-100 for 10 000 steps, using 200 hidden nodes and 2000 permanent chains:

rbms train  -d ./data/MNIST.h5 --subset_labels 0 1 --num_hiddens 200 --gibbs_steps 100 --num_chains 2000 --num_updates 10000 --filename ./RBM_MNIST01.h5

Documentation

The documentation is available at https://dsysdml.github.io/rbms/

Contributing

We welcome contributions to the development of TorchRBM. Here's how you can contribute:

  • Fork the Repository: Fork the main repository and make your changes.
  • Propose a Merge Request: Once your changes are complete, propose a merge request.
  • Testing: Ensure your code is tested using the pytest framework. Include your tests in the tests folder.
  • Code Style: Follow the pre-commit configuration for code style.
  • Documentation: Document your code using the Google docstring style and provide type hints .
  • Dependencies: Avoid adding extra dependencies unless absolutely necessary.

Support

If you encounter any issues, please open an issue on the main repository.

License

rbms is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rbms-0.1.1.tar.gz (57.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rbms-0.1.1-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

File details

Details for the file rbms-0.1.1.tar.gz.

File metadata

  • Download URL: rbms-0.1.1.tar.gz
  • Upload date:
  • Size: 57.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for rbms-0.1.1.tar.gz
Algorithm Hash digest
SHA256 05b076da7f2e2104977402278839ad973aaade8a87d621725de7bfc45badac21
MD5 6e4b8cc3f0aef2b1849d2f758cb6a973
BLAKE2b-256 0e349cafa454a7d11e3a1bbcddf7806144c7faffd16fe2c7c3f98dbc383d4f03

See more details on using hashes here.

File details

Details for the file rbms-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: rbms-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 45.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for rbms-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8f2259d173175d8135e8c87a6e3948aa115864ca3de84814dfd1676e00c9b359
MD5 8a37ee02139d25b5de4f317f06c30f2e
BLAKE2b-256 b1e7d3954cc1d2a59577dfebc688b0df03cc1aa3d2495064c6af30bd74c49b19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page