Hi guys, I’m new here. I would like to learn about neuromorphic networks and explore Nengo. What would be the best book for me to start my studies? I thought about these two:

- Neural Engineering
- How to build a brain

Hi guys, I’m new here. I would like to learn about neuromorphic networks and explore Nengo. What would be the best book for me to start my studies? I thought about these two:

- Neural Engineering
- How to build a brain

Hello and welcome! Definitely go with How to build a brain, it’s much more reader friendly and has a series of Python tutorials that go along with it!

1 Like

Thank you

To expand on @travis.dewolf’s post, the “How to Build a Brain” (HTBAB) book is a great starting point if you want to start exploring Nengo, and how to use it to build successively complex neural networks. The examples provided in the HTBAB book are a little outdate (it’s using a slightly older version of Nengo than is currently available), however, the NengoGUI has built-in examples (from the “File” dropdown, go to “built-in examples” then “hbb_tutorials”) using the most recent version of Nengo.

As for the “Neural Engineering” book, it is a detailed explanation of one of the methods used in Nengo to construct the neural networks. In machine learning, it is typical to construct neural networks by training them using a machine learning algorithm. The “Neural Engineering” book explores an alternative approach (the Neural Engineering Framework - NEF) that can be used to construct a neural network with the appropriate weights without the lengthy training process. A quick summary of the NEF can be found here (to give you an idea of what it can do), and the algorithm behind the NEF can be found here (the book goes into much more detail about the math behind the algorithm).

Looking at the dates of the books I was afraid they were outdated, but I am interested in the theory behind the algorithms, I will try to start with HTBAB and use “Neural Engineering” as a reference to consult as I feel the need. Thanks for the links and the comment. Best regards,

Hello Everyone! I just grabbed both HTBAB and NEF books, and in the part “Using this book as a course text” from NEF book mentions the following:

I looked at the compneuro and couldn’t find the notes, examples and code written in MatLab. Only found the NESim package written in MatLab but the examples link is broken and it does not mention anywhere that NESim is the actual package referred by the book. Where those materials deleted in order to promote Nengo?

To give you more context of why I’m looking for those materials. I’m experimenting with Julialang, a Language that looks like Python but has the same mathematical expressiveness as MatLab and is as fast as C, and would like to reimplement NEF (as a didactic exercise to understand the framework) and some core parts of Nengo in this Language, and open-source it if someone else wants to contribute to the project.

If the materials mentioned in the NEF book no longer exists, where can I find more references like NEF Summary and NEF Algorithm to start implementing this project? I would like to start with the core parts of NEF and then start adding (or anyone that wants to contribute) more sophisticated parts to reproduce something like SPAUN in the future.

Hi @sgaseretto!

It does seem like the NESim examples really don’t exist on the web server any more. I’m not entirely sure what happened, they might have been deleted by mistake (or to save space on the server). I can ping the code’s author (Chris Eliasmith) to see if he still has those examples somewhere.

However, the Matlab code is pretty ancient now, as it predates Nengo 3.X (the current version), Nengo 2.0 (the first transition to Python), and Nengo 1.4 (the Java implementation). Regardless of the age of the code, the core algorithm remains the same, and the Python version of this algorithm can be found on the Nengo documentation page. As with most software, the rest of the code is just fluff to create a user friendly API.

As for course notes, you won’t find any Matlab version, but the current version of the course notes can be found here (the assignments are done in Python).

Much of the documentation you are looking for should be on the Nengo documentation site, or in the books. There is a written description of the NEF algorithm here that is a more mathematical description of the NEF, to contrast the programmatic description found in the Nengo documentation. If you are looking for something more detailed than these short descriptions, but more digestible than the books (the NEF book in particular can be really heavy ), we published a series of videos walking through the different parts of the NEF algorithm.

As for code, you can find the codebase for the current version of Nengo here, or a simplified (to only the core components) of Nengo here. Several people (e.g., @tcstewar, @arvoelke, @astoecke) have created NEF/Nengo implementations in other languages as well, and they may chime in here with recommendations.

1 Like

Thanks a lot for your answers and resources @xchoo ! So far they have been very helpful! One last question, I haven’t digged too much in the source code as I should, but as I understand so far, the nengo-distilled is a backend that uses the front-end part of nengo, that’s why it also gets imported into the project, am I correct?

Because, if that’s the case, in theory, I could implement the backend in a different language, create some bindings and use them the same way they are used along with nengo in nengo-distilled.

That’s correct! Nengo 2.0 (and 3.0) is designed in such a way to make it easy to develop different simulation backends for it. The front end contains just the model description language (basically, everything that you define in the `with Nengo.network() as model:`

block). The backend is everything in the `with ... as sim:`

block, and different packages use different hardware as backends.

You should be able to do this, as long as the language you are using has some sort of translation layer between Python and said language.

2 Likes

This helps me a lot! Thankfully the language l want to use to implement this backend has utilities to implement binding with Python. Thanks again for your helpful answers @xchoo !

2 Likes