Nengo and the Hierarchical Temporal Memory

Has anyone tried to implement the concepts stated by the Hierarchical Temporal Memory using Nengo? I see that they define a special type of neuron and some rules of who they build connections between each other. For example, this is the type of neuron they define:


And they arrange them in minicolumns that then are arranged in columns:


Here is a presentation (a little bit old) that summarize how this “framework” works. Anyone familiarized with HTM theory had ever tried to implement it using Nengo?


As far as I know, there hasn’t been a well-developed attempt to implement HTM using Nengo. The topic has come up a little bit in previous discussions on this forum, so there may some useful information in this thread in particular: Hierarchical Temporal Memory vs. NEF/SPA

If you start to work on your own implementation, keep us posted and let us know if you have questions along with way!

1 Like

I’m working on an implementation of HTM, but then I remembered about the Neural Engineering Framework and thought if it would be posible to implement the same HTM algorithms using NEF. Do you know where can I find documentation of how to implement my own custom neuron in NEF, learning rules and so on? A particular thing of HTM neurons is that they have very sparse connections and they create and destroy their connections based on the inputs they receive, I think that all the neurons using in NEF have a fixed amount of connections and only the strength of the synapses can be adjusted (with STDP and other rules). I’m not familiar at all with NEF and Nengo so I don’t know if such neuron behavior is posible with Nengo and NEF.

Sounds great - for adding a custom neuron type, we have the following tutorial that should provide you with a useful template to work off of:

The process for adding a custom learning rule is along the same lines, but it might be useful to look at the implementation of an existing learning rule in Nengo. For that, you can take a look at this and this.

If an STDP rule is what you’re primarily interested in, you might also find it useful to take a look at this tutorial on unsupervised learning:

There’s a lot of info here, but hopefully it gives you a better sense of what is possible currently, and where work might be involved to implement the specific functionality you are looking for. Please feel free to let me know if you have questions about any of this material.