I just wanted to see if any of the users could point me in a good direction to start with implementing STDP. This is all for a visual recognition task. I have an SNN set up in Matlab that I am hoping to convert into a Nengo model, It’s a simplified STDP learning rule and a simple IF neurons. The last post on this was a while ago so just wanted to see if anyone had made any progress?
The next step is then tracking of some sort with either a Kalman filter or I could just use a PID controller to move a bounding box, whichever one comes more naturally.
For the team at Waterloo has any undergrads or postgrads tackled any of these issues within a project i’d be interested to see how they got on.
I have pinged a couple researchers at the lab who have been looking at this. I’m not sure how much can be shared at the current moment in time, as it is active work.
Could you provide some clarification for the STDP learning rule? Different people tend to mean different things by “implementing STDP” this so it would be good to give some specifics.
If you already have a Matlab model functioning, it should not be too hard to port this over to Nengo, which supports custom learning rules. IF neurons are also supported via
The rule I am trying to implement is
the same as “STDP-based spiking deep convolutional neural networks for object recognition” Kheradpisheh et al. (https://www.sciencedirect.com/science/article/pii/S0893608017302903#!)
essentially a simplified version of STDP (Masquelier & Thorpe, 2007)
Also if you know of any recent examples that have been ported onto the Nengo FPGA that would be great as that is my ultimate aim.
It’s always nice to see what people want to do with NengoFPGA, so thank you for bringing this up!
The short answer: no, we don’t have STDP or anything ‘deep’ running on the FPGA right now, but we are working to scale up to larger FPGAs which would provide a more flexible and fully featured system in the future.
For a longer explanation…
Currently we have NengoFPGA setup to run a single population ReLU (
nengo.RectifiedLinear) or IF (
nengo.SpikingRectifiedLinear) neurons with the PES learning rule (
nengo.pes). The NengoFPGA system also provides an interface to integrate this single population on the FPGA with a larger network running on the PC. Using this PC integration it is possible to use multiple FPGAs in a single model hosted by the PC, and by this token it may be possible to finagle something using multiple FPGAs and adding some logic on the PC side between them, but I’m guessing this isn’t what you’re after! We are continuously working on NengoFPGA to both polish this small scale version we have now and add functionality to that, as well as looking to scale up and provide a more featured FPGA backend going forward.
Since this is very much under development, getting community input is definitely welcome and helps guide our efforts moving forward.