-
Notifications
You must be signed in to change notification settings - Fork 160
Architecture
There are a few small differences between the Python and Java versions. One is the abstraction of objects represented in the Python version as arrays and array containers into formal Objects in the Java version. Another is that all methods in the Java version are "functional" in that the data they operate on is passed in, and no state is kept in either the TemporalMemory or the SpatialPooler classes. The "Connections" class acts like an isolated memory - containing all state. This means that two distinct Connections objects (memories) could be passed to the TM or SP, manipulating two entirely different layers concurrently or in parallel.
Basically, the architecture is separated into:
-
Structure - These are: Columns, Cells, ProximalDendrites
-
Data - These are: DistalDendrites, Pools, Synapses and all the values. (i.e. permanences, thresholds etc.)
-
Operations - Algorithms such as the methods on SpatialPooler, TemporalMemory, SparseBinaryMatrix etc.
Additionally, the Connections class acts as the "memory" that is passed in to the methods of the SpatialPooler and TemporalMemory. Currently, the Connections (memory object) contains both the "Structure" and the "Data", but the "structure" can (and probably will in the future) be separated out such that 1 or more identical structures (structures containing the same topology) can be used independently by "Operations" using any arbitrary collection of "Data" that is appropriate for a given structure's topology.
The above separation will allow total freedom of reuse, elimination of redundancy with multiple hierarchies, memory conservation, serialization/persistence, and isolation for the purposes of adding concurrency or parallelism later.
Next: Network Intro
- Introduction (Home)
- History & News Archives...
- Usability
- Architecture
- NAPI Quick Start Guide
- NAPI In Depth
- Saving Your Network: PersistenceAPI Serialization
- Roadmap
- Browse Java Docs
- Build Instructions
- Eclipse (Dev Setup)
- Anomaly Prediction
- Test Coverage Reports
- [Cortical.io Demos] (https://github.com/numenta/htm.java-examples/tree/master/src/main/java/org/numenta/nupic/examples/cortical_io)
- Hot Gym Demo
- Performance Benchmarks with jmh - blog
- BLOG: Join the "cogmission"