numenta / nupic-legacy

Numenta Platform for Intelligent Computing is an implementation of Hierarchical Temporal Memory (HTM), a theory of intelligence based strictly on the neuroscience of the neocortex.
http://numenta.org/
GNU Affero General Public License v3.0
6.34k stars 1.56k forks source link

OOP and multiple inheritance to structurize codebase #1860

Open breznak opened 9 years ago

breznak commented 9 years ago

extract some shared functions there. This would also mimic more the concept of layers in Whitepaper.

cogmission commented 9 years ago

Do you mind if I chime in here?

Ok this is just my opinion. But to me the Object Model should be like this:

  1. Structure. Columns and Cells. Should reside in maybe a Region object, and should be shared between the SP and the TM.
  2. Since each biological Layer has its own purpose and column/cells, they should contain Regions which are the Column/Cell matrix.
  3. The SP and TM should be treated as "Actions" - they are processes or algorithms which modify the Columns and Cell structure (by adding distal dendrites and synapses) and state (by altering permanences).
  4. Structure should be separated from State. Structure includes Columns, Cells, Proximal Dendrites and their Pooled connections. State is dynamic and includes Distal Dendrites, Synapses on DistalDendrites (because they grow and are culled), Permanences.

Cortex (Network)

...

SP and TM should hold no state, they should operate on the Columns and Cell structure.

On Mon, Feb 23, 2015 at 7:54 PM, breznak notifications@github.com wrote:

extract some shared functions there. This would also mimic more the concept of layers in Whitepaper.

— Reply to this email directly or view it on GitHub https://github.com/numenta/nupic/issues/1860.

We find it hard to hear what another is saying because of how loudly "who one is", speaks...

david-ragazzi commented 9 years ago

Some observations:

  1. Since each biological Layer has its own purpose and column/cells, they should contain Regions which are the Column/Cell matrix.

As far I know Regions (V1, V2 IT, etc) contains Layers(L1, L2, L2/3, etc), not the contrary.

  1. Structure should be separated from State. Structure includes Columns, Cells, Proximal Dendrites and their Pooled connections. State is dynamic and includes Distal Dendrites, Synapses on DistalDendrites (because they grow and are culled), Permanences.

I think that only Permanences are considered State. Although biologically dendrites and synapses were dynamic (they born or die during learning), they still are physical structures of a cell.