Skip to content

STDP implementation can be simpler #10

@jpalmer

Description

@jpalmer

If anyone wants to do this, the STDP implementation can be simplified.

The idea is similar to what is described in Synaptic plasticity: taming the beast (review article in nature neuroscience). Also similar to the approach to splitting off the R/D variables

Basically, rather than using the lagstorage.c class, we store one new number per neuron.

On each timestep this is multiplied by a constant $C<1$. this depends on the tau in STDP.

On each spike, it is incremented by $A$ which is the same A as in the STDP window function.

Then when another neuron spikes, we just use this value to change the synaptic strengths.

This approach will remove a pretty significant part of the complexity of the calculation.

What can be easily removed/simplified if this is done:

src/lagstorage.*
stdp_change_calc (simplified)

DoSTDP also probably becomes simpler.

The other changes are that STDP_data uses the lags member and gets a different, simpler array instead.

Also, this will use less memory than before - (we go from a lagstorage/neuron to a float/neuron) so is faster because of that

also, the updates in lagstorage.c branch quite unpredictably so it should be faster to change to this new method

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions