This was the route I took.

I’m still in the process of creating my own application of the algorithms (not 
going into detail of that). I wrote my implementation of the algorithms from 
scratch in C++ in a Linux VM and compiled them into one shared library object 
that I am designing as a sort of “libhtm” interface for the application. I 
definitely did more than reimplement the underlying learning algorithms of 
NuPIC; probably more along the lines of reimplementing NuPIC itself. But I 
figured this was the easiest and most beneficial way for me to integrate an HTM 
library into my own application and truly learn the algorithms themselves.

There have been two main problems for me. The first is actually testing my 
implementation along different points of development and determining how well 
it works. I had to develop a UI and all for visualizing the algorithms and 
tests. The second is trying to figure out exactly the right way to go about the 
implementation for optimization and simplicity. I ended up refactoring the 
entire project once or two. But that is bound to happen with a development team 
of one. NuPIC has many, many hacks within it and for good reason. I had to 
rediscover the hacks myself, and probably my own unique ones.

I don’t regret recreating it all from scratch one bit. I feel like I would get 
the sense that there was something I am missing if I just tried to improve or 
enhance someone else’s work. If you would rather not spend a considerable 
amount of time building your own foundation, then maybe reconsider doing what I 
did.

Suid


From: nupic [mailto:[email protected]] On Behalf Of Jeff Fohl
Sent: Thursday, April 16, 2015 12:27 PM
To: Dillon Bender
Subject: How best to learn HTM algorithms by implementing them?

I am interested in learning the HTM algorithms at a deeper level by writing my 
own implementation. The language I am currently work with most frequently is 
Javascript, so I was planning on doing my implementation in that language.

My question for those who have gone this route already is: if the primary goal 
of the exercise is a deeper understanding of the algorithms, is it best to 
start from scratch, implementing the pseudocode as described in the white 
paper, or is porting an existing implementation - such as htm.java more 
fruitful?

- Jeff

Reply via email to