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
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.
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.
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.