Skip to content

shreyshahi/pyHTM

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 

Repository files navigation

pyHTM - Hierarchical Temporal Memory in Python

Note: Numenta reserves certain patent rights. See Intellectual Property for details.

Summary

This project is an unofficial implementation of the Cortical Learning Algorithms version of HTM, as described in v0.2 of the writeup. Ultimately, pyHTM will demonstrate learning and categorization of various sensory inputs, and display the results.

This implementation will favor code readability over optimization when those options are mutually exclusive. If you want to understand what's going on, just dig into carver/htm_main.py and trace the code (using the Numenta paper as a reference).

The project is very young, and still remains unproven in terms of correctness. I welcome bug reports, forks and pull requests.

Goals

  • Near Term
    • Build diagnostic UI tools to show network state
    • Confirm correctness of algorithm (as defined by Numenta) <-- currently
  • Medium Term
    • Build showcase of effectiveness on both trivial and real-world data
    • Serialize network state to disk to pause & continue
  • Long Term
    • Build UI to configure and run HTM networks
    • Optimize for speed, never sacrificing code readability.

Status

Feb 1: Added test for recognition of 4 static images (does not yet pass all tests) @see src/carver/tests/recognition_static.py

Jan 19: Basic HTM network history readout implemented in htm_main (shows in console)

Dec 10: The most basic correctness tests are passing!

  • after short training, repeated incidents of the same data "light up" the same columns
  • particular cells within the column become active after learning temporal patterns

Intellectual Property

Numenta encourages non-commercial experimentation: "Numenta promises that it will not assert its current patent rights against development or use of independent HTM systems, as long as such development or use is for research purposes only, and not for any commercial or production use."

In fact the license I'm using on this project is also non-commercial, so if you want a commercial license, you'll have to work it out with both Numenta and myself.

A section of this code, found in the numenta package, is a direct translation from the pseudocode in their writeup. Despite pretty significant changes in the translation to python, I am assuming the Numenta copyright still holds (I only have a basic understanding of copyright law). The rest of the implementation is in the carver.htm package, and is licensed under the Numenta Non-commercial License; see license.txt for details.

About

Hierarchical Temporal Memory in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published