My process was as follows: 1. read WP/Pseudocode 2. read/hack/break actual code 3. Create a Software Design Document that implements your understanding of the solution 4. Implement your SDD 5. Compare the two 6. Refactor 7. Refactor 8. Experiment with new insights and ideas 9. Refactor ... loop 6,7,8,9 Ad Nauseam
2015-04-16 19:49 GMT+02:00 Dillon Bender <[email protected]>: > 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 >
