Coding up Augmented Spatial Pooler

As of now, I am focusing all my efforts on coding up Augmented Spatial Pooler as defined in this paper (working on it as of 20 September 2015)

We have put a binary version of spatial pooler here.

Our Spatial Pooler implementation on Github

we have also put a Augmented Spatial Pooler version of the code here.

Our Augment Spatial Pooler implementation on Github

Augmented Spatial Pooling and Spatial Pooling for Greyscale Images

I am trying to better understand spatial pooling and am wanting to code up a working version of it on my own.  I found two works (shown below) by Professor John Thornton in Australia as quite useful in this regard.  I hope to implement these in time.

I had trouble keeping up with my overall schedule this week but I plan to finish it all up by tomorrow.


Spatial Pooler and Nupic Error

I am trying to reinstall Nupic today and getting the sine-wave example to run.  So haven’t had a much time to deliver anything.

As far as Nupic goes, I found this overview on youtube video by Rahul pretty good in terms explaining implementation details for Spatial and Temporal Pooler.  I think once you have grasped the white paper, it’s good to go over this.

My goal is to implement encoder, spatial pooler, temporal pooler, CLA classifier.

I am getting this error in installing Nupic:

clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later). 

I have os 10.10.1, so am already updated.. not sure why i am getting this error.


Onto Spatial Pooler

Written by Chirag on Sunday, July 26, 2016 (around: 6:30pm)

This week I am working on the Spatial Pooler from Numenta’s Cortical Learning Algorithm white paper.  Instead of typical CLA (Cortical Learning Algorithm) reading, I will be focused on implementing and testing my own version of CLA-Spatial Pooler (page 34 has the pseudocode).  So that I can  understand it better.

CLA has two key input pooling components. Effectively, in Jeff Hawkins words, pooling is the mapping of a set of inputs (visual, auditory, smell, sensorimotor) onto a single output pattern. There are two basic forms of pooling.

1) Spatial Pooler: “Spatial Pooling” maps two or more patterns together based on bit overlap. If two patterns share sufficient number of bits they are mapped onto a common output pattern.

2) Temporal Pooler: “Temporal Pooling” maps two or more patterns together based on temporal proximity. If two patterns occur adjacent in time they are likely to have a common cause in the world.

Quite honestly, given my limited python skills, I am finding it very difficult to code up the Spatial Pooler.  I am thinking it will take me at least six months. But, I think this will be worth the deep dive.