Reading my way through the HTM Java code and matching it up with my understanding of HTM from the papers and HTM School videos. In doing so I feel that Column is missing from the object hierarchy. From the Papers/Videos:
Cortext has Regions. Regions have Columns. Columns are made of Layers. Layers have MiniColumns. MiniColumns haveCells.
From HTM Java, I read:
network.Network has network.Region. network.Regions have network.Layers. network.Layers have model.Columns and model.Cells via algorithm.SpatialPooler and alogrithm.TemporalMemory and/or model.Connections.
So, if I read the code correctly, model.Columns are minicolumns in the context of HTM. The disconnect for me is that it seems that network.Region is equivalent to a single Column (not minicolumn) from the videos. Is there no equivalent for Column in the HTM Java object hierarchy?
Thanks.
@klokare Good point. I think it would be a good idea. @cogmission Can we talk about changing model.Columns
to model.Minicolumns
?
Thanks, @rhyolight, for suggesting the clarification. I suspect that changing the API might be easier said than done at this point but I do appreciate the confirmation that we’re talking about minicolumns within layers. I still wonder, though, about the missing Column structure between Region and Layer. Is the reason Column is missing that it doesn’t make sense in the software modelling (or requires unnecessary complexity)?
Or, if it is an omission due to the way the libraries grew from the Cell up, what properties/functionality are we missing given that each Region essentially has only 1 Column?
You can use Layers to build your own cortical column structures. You can build multi-cortical column networks with this API. We have some examples in our research repos. See 2D Object Recognition Project - #14 by rhyolight.