Numenta Logo

Implementations

Numenta Logo Mark

Hierarchical Temporal Memory (HTM) is a theory of intelligence that can be implemented in most computer programming languages. Below are descriptions of several HTM implementations currently active within our community. For detailed descriptions of HTM algorithms, see our living text, Biological and Machine Intelligence. It contains pseudocode for both the spatial pooling and temporal memory algorithms (PDFs).

NuPIC, or the Numenta Platform for Intelligent Computing, is an HTM implementation created by Numenta and open-sourced in June 2013. This codebase is the original HTM codebase, and is architected in a way that allows algorithmic experimentation in Python, but more performant versions of HTM algorithms in C++.

C++ Logo

NuPIC Core (C++)

Our C++ codebase contains all HTM algorithms written in C++, and SWiG language bindings to Python. Language bindings to other environments should be added here.

This codebase exposes the Network API, which is the primary low-level interface for creating HTM systems.

Python Logo

NuPIC (Python)

The NuPIC Python codebase contains Python code implementations of HTM. Through this interface, users may specify whether their code runs Python algorithms or the faster C++ algorithms using the Python bindings provided in nupic.core.

In addition to providing Python bindings to the nupic.core Network API, this codebase also includes a higher-level client API called the Online Prediction Framework (OPF), which is tuned towards experimentation with predictions, anomaly detection, and identifying optimal model parameters (swarming).

Java Logo

HTM.Java

While the copyright to HTM.Java was generously donated to Numenta by its author, it is a community-created and maintained port of NuPIC algorithms into Java. This Java library provides a similar experience to the NuPIC Network API, and has algorithmic parity with NuPIC.

Clojure Logo

Comportex (Clojure)

Comportex is an implementation of HTM as a Clojure library. It is not a port of NuPIC, it is a separate implementation based initially on the Numenta "CLA white paper" but significantly evolved.