Skip to content
Sam Cutler edited this page Apr 6, 2016 · 47 revisions

On the road again...

(Completion of the Network API (NAPI) means this roadmap will be heavily surveyed and modified in the near future!)

Newly updated now that the goal of a Network API has been reached!

  • Serialization - We need to be able to save and reload a network configuration. Done!

  • Swarming - We now need to add the Particle Swarm algorithms which are used to converge on the optimal configuration setup for a given Network architecture's model(s). The current home for the code that will be ported can be found here but will be separated out to be used as a standalone algorithmic library.

  • Layer - The physical column/cell matrix needs to be pulled out of the Connections class and housed inside the Layer class. It has a method (Layer.using()) which is used to share the Connections class across more than one Layer; but now it needs to have a "Matrix?" class which can be shared across multiple layers if necessary, but that lives essentially within a single Layer by default. Layers describe an atomic algorithmic process (there being 6 of them, each playing their own part) but they all impact a single group of columns and cells within those columns.

  • Encoder Concurrency - The Encoder encodeIntoArray() methods (of all encoders) and its call hierarchy needs to be concurrent or thread safe. This is in preparation for using encoders in parallel to take advantage of HTM.java's Sensor batch parallel processing capability; and as a precursor to parallelizing the inhibition phase of the Spatial Pooler - which is next on the design hit list!

  • SpatialPooler inhibition phase parallelization - This will speed up the local inhibition phase of the SpatialPooler; this should be looked into because discussions with @Subutai, @Fergal Byrne, @Felix Andrews, @cogmission have revealed this as being possible! 👍

  • Prediction Assisted Spatial Pooling (paSP) - @FergalByrne s idea of a Hybrid SpatialPooler TemporalMemory algorithm that executes a prediction phase which contributes to column activation in the SpatialPooler. We need to experiment with this, and since the NAPI is fully pluggable, we should simply have an experimental algorithm class to research this idea. (see Research Package Re-purposing) below.

  • Research Package Re-purposing - Move the essential algorithms out of the "Research" package so that we can then populate it with some of the longer-lasting algorithms from nupic.research. Done!

  • SDR - We need to take a final look at SDRs and determine whether we should abstract the int[] format of an SDR to a discrete class which can hold other information about the int[] and perform transformations and operations on an SDR such as sparse-to-dense-and-back-to-sparse operations (as one example of operations performed constantly on int[] SDRs).

  • Design Review - We need to look at areas to enhance and design objectives to complete now that the Network API has been completed.

  • KNNClassifier - Needs to be ported.

For up-to-the-minute tracking of updates, follow: #HtmJavaDevUpdates

Next: Browse Java Docs