It is great to see this taking shape. I've left comments in the issue that
is tracking this work:

https://github.com/numenta/nupic/issues/654

Note that we are actually in the process of removing FlatSpatialPooler (see
https://github.com/numenta/nupic/issues/627). The high tier stuff was a
hack for tiny datasets, and we don't seem to need it anymore.

--Subutai


On Mon, Feb 24, 2014 at 11:05 AM, Scott Purdy <[email protected]> wrote:

> Thanks for raising these issues. I understand how that could be confusing
> and part of it is why we have separated the FlatSpatialPooler from the more
> general SpatialPooler class.
>
> Hopefully Subutai can chime in since he understands high tier much better
> than me but here are my suspicions for the behavior:
>
> 1. The FlatSpatialPooler implementation includes high tier which causes it
> to try to memorize the initial patterns it sees. It will try to uniquely
> represent the initial patterns. Since the first set of columns hasn't had
> time to adjust to connect to all of the active bits in its potential pool,
> there is an opportunity for other columns with high initial boost (part of
> high tier) to win instead. This is my suspicion but not 100% sure.
>
> High tier solves some problems but causes others. When we were designing
> the new SP implementations we had an explicit goal of separating it from
> the general SpatialPooler class.
>
> 2. The FlatSpatialPooler has an optimized path for no topology. This could
> result in a noticeable difference in speed, even when you specify no
> topology in the SpatialPooler. We could have included the optimization in
> the regular SpatialPooler class but decided that special-casing made more
> sense in a subclass. We wanted to keep the code really simple and clean in
> the generic version.
>
>
> On Sun, Feb 23, 2014 at 11:28 PM, Kevin Martin <
> [email protected]> wrote:
>
>> <https://github.com/lonesword/nupichelloworld/blob/master/helloworld.py>
>> Tinkering a bit, I came to notice that if I used the SpatialPooler class
>> instead of FlatSpatialPooler, I get the same set of active columns for the
>> same input. But it takes much longer to get the results and the 'busy'
>> light of my computer stays on for a really long time. From what I read, I
>> had assumed that the only real difference between the normal spatial pooler
>> and the flat spatial pooler was the lack of topology. But since both of
>> them returned different results I think FSP is minimalistic in much more
>> ways (the SP returns the expected result, while the FSP returns a new
>> result for the same input vector which was not what I had expected). But
>> I'd still like to know why the Flat SP returned different set of active
>> columns for the same input.
>>
>> On Sun, Feb 23, 2014 at 11:19 AM, Kevin Martin <
>> [email protected]> wrote:
>>
>>> I'm on my way to writing a 'hello world' equivalent for nupic. I decided
>>> to work with a flat spatial pooler since it has no topology. I was able to
>>> send in an input vector and get the list of active columns. The source code
>>> is hosted here :
>>>
>>> https://github.com/lonesword/nupichelloworld/blob/master/helloworld.py
>>>
>>> I was under the assumption that similar inputs to the spatial pooler
>>> results in similar SDRs. That is, if I give the same input twice, it is
>>> expected to produce the same SDRs.
>>>
>>> However, sending the same input vector to the compute() function returns
>>> a different set of active columns every time. I'm pasting the code snippet
>>> here :
>>>
>>> for i in range(10):
>>>   example.flat.compute(testinput,True,active)
>>>   for i in range(4096):
>>>     if active[i]!=0:
>>>       print i,
>>>   print " "
>>>   active[0:]=0
>>>
>>> flat is an object of FlatSpatialPooler,
>>> testinput is the input array,
>>> active is the active list of columns.
>>>
>>> I got a different set of active columns for each iteration. Why is this
>>> so? I'm feeding the pooler the same input vector each time.
>>>
>>
>>
>> _______________________________________________
>> nupic mailing list
>> [email protected]
>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>
>>
>
> _______________________________________________
> nupic mailing list
> [email protected]
> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>
>
_______________________________________________
nupic mailing list
[email protected]
http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org

Reply via email to