BCPNN learning rule in GeNN #570
Replies: 4 comments 7 replies
-
Not sure yet what the problem is but I notice the following:
|
Beta Was this translation helpful? Give feedback.
-
I believe http://www.frontiersin.org/Neuromorphic_Engineering/10.3389/fnins.2015.00002/abstract explains the event-based implementation |
Beta Was this translation helpful? Give feedback.
-
A long time ago, I did actually make a GeNN implementation of a two trace (so Z and P) BCPNN learning rule using analytical II at https://github.com/neworderofjamie/genn_examples/blob/master/common/bcpnn.h. Sadly it predates PyGeNN so is in C++ but porting it should be pretty easy and the learning rule it appears to work well enough to reproduce figure 4 of Tully 2014 using https://github.com/neworderofjamie/genn_examples/tree/master/bcpnn_simple). It also predates the |
Beta Was this translation helpful? Give feedback.
-
thanks for the input, seems to work now! |
Beta Was this translation helpful? Give feedback.
-
So I´m recently trying to implement BCPNN in GeNN as an alternative to STDP.
The basic idea is that the values for Pi/Pj are bigger if both pre- and postsyn neuron fire which leads to an increased synaptic weight. If only for example the presyn neuron fires and the postsyn neuron doesn´t, the P-value of the postsyn neuron gets lower which leads to a decreased weight. However, I have difficulties reproducing the latter aspect, my synaptic weights also increase (weaker, but still) if only one of the neurons fires. As an example, I plotted the synaptic weights between two pyramidal neurons over time. The synaptic weights additionally become a bit lower than expected.
Si represents presyn spiking events and is = 1 if the presyn neuron fires and = 0 if the presyn neuron doesn´t fire, same goes for Sj and the postsyn neuron. The other parameters are taken over from another paper where it worked totally fine so there has to be some issue with my implementation. I also checked it against STDP, STDP works just fine in my model. I have been sitting over my code for a bit and can´t figure out where it is off. Do you have any suggestions?
Beta Was this translation helpful? Give feedback.
All reactions