Biological Constraints

In the C++ community fork, we’re considering dropping support for several features which are not biologically plausible, but which may be useful nonetheless.

Summary of the features in question:


This is a variant of the Temporal Memory algorithm. It is specialized for anomaly detection, and on the Numenta Anomaly Benchmark it scores approximately 5% higher than the regular Temporal Memory.

  • It is not biologically plausible.
  • Numenta has stopped working on it in favor of the regular TM.
  • It should probably only be used for anomaly detection.
  • It is not in the published literature. Details about how it works are hard to find, and even we the maintainers can not explain what all of the code does.

TopDownCompute & Decode

The purpose of both of these methods is to do the inverse of the HTM algorithms. The decode methods reverse the encoding process, taking an encoded SDR and returning which inputs likely created it. The TopDownCompute methods reverse the HTM algorithms, and find the inputs which likely resulted in the output.

  • None of the core algorithms currently support these methods.
  • The Spatial Pooler process could in theory be reversed, but this is unimplemented and unproven.
  • The Temporal Memory can not be inverted, these methods simply can not be implemented for it.
  • There are fundemential limitations on the accuracy of these methods, since the HTM discards a significant amount of information.

My questions to you all are:

  1. Do you use any of these features, currently or maybe in the future?
  2. If yes, for what applications do you use these features? Tell us about your use cases.

We will leave this discussion open until April 10th before making a decision and acting on it.


I’ll just add that among the candidates for removal is also

Temporal Pooler (TP, Cells4.hpp)

TP, implemented in Cells4.hpp in c++ (do not confuse with TM, Temporal MEMORY, which is the new, used algorithm).
TP is an old implementation, originally described in the Numenta Whitepaper, but has since then been superseded by TM/Temporal Memory, which is faster, better performing and more featureful & tested.
TP’s current only useful functionality is that it’s used by BacktrackingTM, which is discussed above.

1 Like

Remove them all!


I’m supporting the cleanup for it would allow us to further get rid off Anomaly as a separate class, and implement it directly in temporal classes (TM, CP) which would be more convenient and err prone

ok, noone else has responded,
and Matt is with us on the removal side, we’re going to approve the removal.