-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SpatialPooler: Needs Additional Documentation re: PotentialRadius #3366
Comments
This is not a problem in the SP codebase, but in the NAPI codebase, right? |
In a way. The problem only arises for "raw" SP use (i.e. use of the SP outside of the OPF or Network API), so in a way its exactly the opposite of what you asked? So, in my opinion, the SP itself should be documented with a warning: that way it gets headed off at the source. 😉 |
Wait, that's not what the issue description says. It says either the OPF or NAPI changes the From what I can tell from the problem description, the |
Yes that is true. Outside of the OPF or NAPI, the And this PR is about the fact that, without a warning or instruction - the user will never know that this is necessary? |
This is an educational issue. You want it to be more clear that when @mrcslws Does that sound right to you as well? |
@scottpurdy |
So there is no |
@rhyolight But I don't understand. Where would the user gain this knowledge of what to do? If there's no documentation for its affect on performance in different scenarios? |
I think this is another discussion, and any documentation about it should be included in future educational work about topology. Currently, topology is an advanced use-case. We don't have many code examples or instructions of its use because all our current examples do not use it. I will be coming back to topology soon in the HTM School vids, so I will readdress later. |
@rhyolight Ok, I'm following your lead for how to treat this in HTM.Java also... Also, it goes without saying that we are all on the edge of our seats, anxiously awaiting more HTM School vids! 😉 Go NMDASpike Lee! :-P |
@rhyolight I think education about this is important. One look at this description for the * If the potentialRadius is greater than or equal to the largest input
dimension then each column connects to all of the inputs.
* If the topology is one dimensional, the input space is divided up evenly
among the columns and each column is centered over its share of the
inputs. If the potentialRadius is 5, then each column connects to the
input it is centered above as well as the 5 inputs to the left of that
input and the five inputs to the right of that input, wrapping around if
wrapAround=True.
* If the topology is two dimensional, the input space is again divided up
evenly among the columns and each column is centered above its share of
the inputs. If the potentialRadius is 5, the column connects to a square
that has 11 inputs on a side and is centered on the input that the column
is centered above. ...and I just discovered an example where this is set correctly in hello_sp.py - so it is a "known" fact that this needs to be set, we just didn't have documentation for it? |
The SpatialPooler's
potentialRadius
"silently" gets adjusted in the background during initialization of the OPF or Network API, to be the same size as theinputWidth
(as opposed to its default of "16") - which for unsuspecting users of the SpatialPooler outside of those two contexts, can lead to (read: will lead to...) very poor accuracy and performance when using global inhibition!(@cogmission scrambles on the floor to find missing hair after frantically pulling it out. 👅 )
The text was updated successfully, but these errors were encountered: