htm-community / comportex

Hierarchical Temporal Memory in Clojure
154 stars 27 forks source link

Question: Why focus-i? #1

Closed smee closed 9 years ago

smee commented 9 years ago

Hi,

I tried to understand the use of focus-i. It seems to increase with the col value. I thought it designates the focused column in the input topology around which we then will choose :ff-potential-radius percent of nodes as potential synapse targets. But why can't line 126 then not just be all-ids (vec (p/neighbours-indices itopo col radius))?

floybix commented 9 years ago

The input topology itopo is different to the column topology topo, and col is an index in the column topology, not the input topology. They may have different numbers of elements and may also be different shapes. So I scale the input focus to be at the same relative location along both of the first two dimensions. If there are three dimensions the third dimension is ignored (typically a lower-level region may have 2 dimensions of columns but its output will be 3 dimensions of cells).

It's great that you are looking at the code in depth. You may be the first one to do so. But it does scare me a bit. As you will know by now there is not much in the way of documentation.

smee commented 9 years ago

Thanks for the hint. I didn't read the code carefully enough, so I had the impression that focus-i ends up as inner-radius in the calls to p/neighbours-indices :( My bad.

No reason to worry about me reading your code. I'm new to the whole HTM/CLA topic, and since Clojure is my go-to language, I'm grateful to have found an encoding of those ideas in an accessible representation. About the documentation: Having consistent parameter names helps a lot. Currently my main problems are understanding region trees, but I will figure it out over time, I hope :)

One last question, is there another place more appropriate for asking questions about your code or should I continue creating issues?

floybix commented 9 years ago

Hey

Don't spend too much time on region trees, I'm in the middle of a change that will overhaul them. And most of the core namespace too! Region trees are kind of a convenient implementation but the more general implementation will be a directed (acyclic) graph. I am splitting the step function into three phases (activate, learn, depolarise) and that will apply to the whole tree/graph/network.

Issues are fine for now, at least they are potentially findable by others. For more general or theoretical questions you could use the numenta mailing lists.

On 28 October 2014 15:58, Steffen Dienst notifications@github.com wrote:

Thanks for the hint. I didn't read the code carefully enough, so I had the impression that focus-i ends up as inner-radius in the calls to p/neighbours-indices :( My bad.

No reason to worry about me reading your code. I'm new to the whole HTM/CLA topic, and since Clojure is my go-to language, I'm grateful to have found an encoding of those ideas in an accessible representation. About the documentation: Having consistent parameter names helps a lot. Currently my main problems are understanding region trees, but I will figure it out over time, I hope :)

One last question, is there another place more appropriate for asking questions about your code or should I continue creating issues?

— Reply to this email directly or view it on GitHub https://github.com/nupic-community/comportex/issues/1#issuecomment-60720575 .

Felix Andrews / 安福立 http://www.neurofractal.org/felix/

smee commented 9 years ago

Thanks!

floybix commented 9 years ago

Forgot to say, another channel for asking questions is direct email to me felix@nfrac.org Would be glad to have another perspective on the code. Cheers