Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance e-prop plasticity with biologically inspired features #3207

Open
wants to merge 428 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
428 commits
Select commit Hold shift + click to select a range
d538387
Add information on e-prop to eprop_iaf_psc_delta user docs
akorgor Apr 22, 2024
234feda
Inform about loss and learning signal in user docs
akorgor Apr 22, 2024
fe9934e
Explain e-prop with additional biological features in user docs
akorgor Apr 23, 2024
839d625
Correct the V_min default value since dependent on computing system
akorgor Apr 23, 2024
baf967c
Add eprop_is_trace_cutoff to parameter tables
akorgor Apr 23, 2024
630e819
Make equations more readable
akorgor Apr 23, 2024
bd76c81
Add links to iaf_psc_delta and eprop_archiving_node
akorgor Apr 23, 2024
00f3bb0
Rename tutorial files to reflect their usage of bsshslm 2020 models
JesusEV Apr 25, 2024
f93ca53
Rename tutorial files that use standard models
JesusEV Apr 25, 2024
40cfb45
Update documentation to reflect recent tutorial renamings
JesusEV Apr 25, 2024
8462d24
Adjust test and examples doc index to file renaming
akorgor Apr 25, 2024
28675fb
Update authors list for e-prop in NEST paper
akorgor Apr 26, 2024
9a66cae
Increase default cutoff value
akorgor Apr 26, 2024
95c1f8f
Merge pull request #19 from akorgor/increase-eprop_isi_trace_cutoff
JesusEV Apr 26, 2024
cb69781
Explain purpose of surrogate gradients in user docs
akorgor Apr 30, 2024
1899e36
Clarify that \zeta is a constant and not a function
akorgor Apr 30, 2024
72ad04a
Clarify that \zeta is a constant and not a function
akorgor Apr 30, 2024
df800cf
Clarify that \zeta is a constant and not a function
akorgor Apr 30, 2024
7894498
Remove unnecessary brackets in user docs
akorgor Apr 30, 2024
cdf0348
Remove unnecessary brackets in user docs
akorgor Apr 30, 2024
2365c31
Make definition of surrogate gradient more precise
akorgor Apr 30, 2024
7228217
Make definition of surrogate gradient more precise
akorgor Apr 30, 2024
51485ec
Make definition of surrogate gradient more precise
akorgor Apr 30, 2024
82baef0
Fix timing of signals
akorgor May 1, 2024
43c9c62
Fix timing of signals in user docs
akorgor May 1, 2024
24719c6
Fix timing of signals in user docs
akorgor May 1, 2024
42f63a4
Fix syntax error in user docs equation
akorgor May 1, 2024
99c2a53
Remove trailing whitespace
akorgor May 1, 2024
02c88b7
Remove g as math symbol for gradient
akorgor May 1, 2024
15d7dfd
Fix mistakes in the evidence accumulation task docs
akorgor May 1, 2024
0a82b6d
Make format of N-MNIST tutorial consistent to other tutorials
akorgor May 1, 2024
d03aa29
Refactor sparse connection creation
akorgor May 1, 2024
347f7ad
Refactor download and extraction of nmnist dataset
akorgor May 1, 2024
6948f26
Fix condition for pixels_blocklist
akorgor May 1, 2024
c4a498f
Make calculation of loss and y_prediction consistent with other tutor…
akorgor May 1, 2024
674bbdd
Introduce test_every variable
akorgor May 1, 2024
241ea1a
Refactor training and test simulation cycle
akorgor May 1, 2024
07d273c
Refactor evaluation of loss and accuracy
akorgor May 2, 2024
36847cf
Introduce the abbreviation N-MNIST once and use it
akorgor May 2, 2024
f518a2c
Refactor DataLoader
akorgor May 2, 2024
6ce1661
Simplify training test cycle
akorgor May 2, 2024
bcd92db
Introduce explicit variables for the training and test eta
akorgor May 2, 2024
f5ade60
Merge pull request #21 from akorgor/refactor-nmnist-tutorial
akorgor May 2, 2024
9163aed
Replace the vague "some" with "the following"
akorgor May 2, 2024
63f548e
Call x_i^t "input" instead of "state variable"
akorgor May 2, 2024
06a855a
Fix the user docs on the inter-spike integration
akorgor May 2, 2024
65951ad
Make user docs more consistent
akorgor May 2, 2024
dbb0fe1
Merge branch 'fix-user-docs' of https://github.com/akorgor/nest-simul…
akorgor May 2, 2024
12c99b5
Merge branch 'akorgor-fix-user-docs' into eprop_bio_feature
akorgor May 2, 2024
d4b9320
Update e-prop schematics
JesusEV May 2, 2024
77c8d25
Update documentation
JesusEV May 2, 2024
b90e5be
Fix pixel_blocklist conditional
JesusEV May 2, 2024
89aca1f
Fix embedding of nmnist tutorial into docs
akorgor May 3, 2024
d996ff1
Fix syntax error in eprop archiving node user docs
akorgor May 3, 2024
5bd3b91
Set synapse parameters instead of eta in test train cycle
akorgor May 3, 2024
58f6e71
Explain role of eprop_iaf_psc_delta to demonstrate endowing a model w…
akorgor May 3, 2024
eea503b
Add _bsshslm_2020 to distinguish tutorials
akorgor May 3, 2024
7fd67b5
Reduce differences between eprop_iaf_psc_delta and iaf_psc_delta
akorgor May 3, 2024
93cb61c
Make compute gradient definition consistent
akorgor May 3, 2024
d02a541
Make functions private
akorgor May 3, 2024
b4079ba
Fix description of `eprop_iaf_psc_delta` model
akorgor May 3, 2024
04d53e2
Merge pull request #23 from akorgor/improve-setting-eta-in-nmnist
akorgor May 3, 2024
f72b374
Merge branch 'eprop_bio_feature' into clarify-eprop-iaf-psc-delta-pur…
akorgor May 3, 2024
1d6a3bf
Merge pull request #22 from akorgor/clarify-eprop-iaf-psc-delta-purpose
akorgor May 3, 2024
fbbb071
Add suffix _train to params_common_syn_eprop
akorgor May 3, 2024
bbee029
Fix typo
akorgor May 3, 2024
b9ccb80
FIx shallow copy
JesusEV May 6, 2024
9b65de4
Introduce tests for new e-prop models
JesusEV May 6, 2024
52d2ea8
Update platform and environment info for test
JesusEV May 6, 2024
34e682c
Fix lemniscate and handwriting tutorial loss
akorgor May 8, 2024
ed970fb
Re-introduce eta_test and eta_train
akorgor May 8, 2024
37e7c9f
Make loss calculation consistent across tutorials
akorgor May 8, 2024
29a7a93
Introduce create_input_output function
akorgor May 8, 2024
a024fd8
Rename loaders
akorgor May 8, 2024
bb98de7
Rename evaluation_group_size to group_size
akorgor May 8, 2024
c1afc93
Use group_size instead of batch_size for the non-bsshslm_2020 models
akorgor May 8, 2024
25fffd7
Rename n_batch to batch_size
akorgor May 8, 2024
32ff88d
Parameterize neuron model and optimizer
JesusEV May 10, 2024
b834c08
Merge pull request #25 from akorgor/fix-evaluation
JesusEV May 10, 2024
fcd0e9b
Move create_input_output function up to the other functions
akorgor May 11, 2024
71bf710
Adapt tests to new eprop models
akorgor May 11, 2024
228e04e
Merge branch 'official_master' into eprop_bio_feature
akorgor May 11, 2024
ec532ca
Update documentation
JesusEV May 13, 2024
773fe43
Adjust timing calculations for N-MNIST simulation
JesusEV May 13, 2024
27da18c
Update group size parameter of eprop test
JesusEV May 14, 2024
3fcaa45
Merge pull request #24 from JesusEV/make-test-for-new-synapse-models
JesusEV May 14, 2024
451baa2
Remove unused package
akorgor May 13, 2024
361a0df
Refactor timing for plotting
akorgor May 13, 2024
df6ecd4
Make test consistent with tutorials
akorgor May 14, 2024
1861e24
Change sum_gradients value from int to float
akorgor May 14, 2024
3fa8038
Make test consistent with tutorials
akorgor May 15, 2024
32fa32a
Remove unnecessary brackets in np.reshape
akorgor May 15, 2024
0eb2143
Fix start time of the spike recorder
akorgor May 15, 2024
1859571
Update schematics
JesusEV May 15, 2024
dc68354
Merge pull request #26 from akorgor/fix-consistency
akorgor May 15, 2024
9c0df80
Revert "Remove unnecessary brackets in np.reshape"
akorgor May 15, 2024
a35b0a3
Fix pylint
akorgor May 29, 2024
2acf83d
Fix pylint
akorgor May 29, 2024
af39dc6
Test for batch size 2
akorgor May 29, 2024
1b72e45
Merge pull request #27 from akorgor/test_batch-size-2
akorgor May 29, 2024
b5ec74a
Test classification for batch_size 2
akorgor May 29, 2024
5ad10ec
Merge pull request #29 from akorgor/fix_batch-size-2-test
akorgor Jun 3, 2024
5b7dfba
Remove unnecessary argument interval_step
akorgor Jun 6, 2024
fe135e8
Group overloaded write_firing_rate_reg_to_history functions
akorgor Jun 10, 2024
de18167
Remove remaining n_batch
akorgor Jun 10, 2024
5696990
Separate spike recorders
akorgor Jun 21, 2024
49a42fc
Remove unnecessary enumeration and indent
akorgor Jun 21, 2024
489cf76
Remove double space
akorgor Jun 21, 2024
e81c083
Make the "alt" text to the tutorial figure more precise
akorgor Jun 21, 2024
6eda9de
Remove _bsshslm_2020 from learning signal connection
akorgor Jun 21, 2024
2e0b57b
Fix reference for Adam paper
akorgor Jun 21, 2024
dafc5c0
Fix title for N-MNIST tutorial
akorgor Jun 21, 2024
5a13de2
Add tag "synapse" to weight optimizer
akorgor Jun 21, 2024
70d29e7
Fix path to png files in tutorials
akorgor Jun 21, 2024
2b8f436
Add model diagram to examples (#30)
jessica-mitchell Jun 21, 2024
78db399
Increase number of iterations and batch size to enhance learning perf…
akorgor Jun 21, 2024
de3ed3f
Fix typo in eprop history initial value
akorgor Jun 21, 2024
82518a6
Check that update history is larger than 1
akorgor Jun 21, 2024
ef2cf9a
Fix unused access identifier and blank line
akorgor Jun 21, 2024
980d03a
Fix erroneous path variable
akorgor Jun 21, 2024
3b24f4b
Add titles to figures
akorgor Jun 21, 2024
6910b1e
Introduce a distinction between the tutorials more expressive than _b…
akorgor Jun 21, 2024
c588cd2
Add period in et al.
akorgor Jun 24, 2024
4364ed7
Make the test more robust against rare events
akorgor Jun 26, 2024
259a1f5
Reduce whitespace in eprop model diagram
akorgor Jun 26, 2024
76dda41
Make "+ biological features" visible vector graphics on eprop model
akorgor Jun 27, 2024
ad61219
Format N-MNIST tutorial
akorgor Jun 27, 2024
5f6c7e0
Call optimizer outside the loop in compute gradient on summed gradients
akorgor Apr 25, 2024
72d0743
Fix time variable outside loop
akorgor May 15, 2024
0441cab
Introduce optimize_each_step flag
akorgor Jun 6, 2024
b23831a
Fix time variable inside loop
akorgor Jun 26, 2024
a1fc9f0
Introduce optimize_each_step flag to tests
akorgor Jun 26, 2024
ea5063d
Throw BadProperty if optimize_each_step is set for eprop_synapse_bssh…
akorgor Jun 27, 2024
d689c4c
Explain optimize_each_step in user docs
akorgor Jun 27, 2024
7ae6308
Set optimize_each_step to False for gradient descent to profit from s…
akorgor Jun 27, 2024
5408b6f
Inform user about effect of floating point precision on optimization
akorgor Jun 27, 2024
87fe3ad
Merge branch 'master' into eprop_bio_feature
akorgor Jun 29, 2024
cd30f1d
Remove whitespace
akorgor Jun 29, 2024
aac47df
Adjust default parameters
JesusEV Jul 2, 2024
e168736
Refactor `create_input_output` to include non-global variables as params
JesusEV Jul 3, 2024
fae9d9c
Re-order eprop modelset
JesusEV Aug 30, 2024
d7f6106
Remove parameter names
JesusEV Aug 30, 2024
1bd5a9d
Add const qualifier to get_eprop_isi_trace_cutoff()
JesusEV Aug 30, 2024
ac552b5
Remove empty line
JesusEV Aug 30, 2024
23a4817
Update terminology in eprop_plasticity README for improved clarity
JesusEV Aug 30, 2024
a3db9b7
Replace 'whereby' with 'where' in documentation for clarity
JesusEV Sep 2, 2024
13f170b
Document dual use of P_.V_th_ in compute_surrogate_gradient call
JesusEV Sep 2, 2024
9bb9291
Relocate learning_window variable declaration for clarity
JesusEV Sep 2, 2024
36c9ec9
Document what sections of history are removed
JesusEV Sep 3, 2024
2784e34
Replace 'whereby' with 'and' in documentation for clarity
JesusEV Sep 3, 2024
36d866a
Group together function calls that write to history
JesusEV Sep 3, 2024
46b4f57
Clarify documentation
JesusEV Sep 3, 2024
1cfbcc9
Refactor documentation comments in eprop_archiving_node.h
JesusEV Sep 3, 2024
00c80ee
Use long for consistency
JesusEV Sep 3, 2024
44f0c09
Simplify error message for unsupported operation
JesusEV Sep 3, 2024
857ac3f
Replace fabs with std::abs
JesusEV Sep 3, 2024
287b479
Remove redundant condition checks for refractory counts
JesusEV Sep 3, 2024
d04fe55
Enhance documentation of compute_gradient
JesusEV Sep 3, 2024
b12f8ca
Add surrogate gradient tests
JesusEV Sep 4, 2024
2493ee3
Correct test documentation
JesusEV Sep 4, 2024
65f6efa
Merge pull request #33 from JesusEV/add-surrogate-gradient-tests
JesusEV Sep 4, 2024
5356e64
Rename emplace_new_eprop_history_entry append_new_eprop_history_entry
JesusEV Sep 4, 2024
35ebc19
Return firing rate regularization value directly instead of iterator
akorgor Sep 4, 2024
f8bc10a
Add eprop_iaf_psc_delta to list of models compatible with eprop_synapse
akorgor Sep 4, 2024
1d8d6fa
Avoid confusing naming of iterators
akorgor Sep 4, 2024
abfd4ad
Decouple low pass filters of eligibility trace and firing rate
akorgor Sep 5, 2024
64ff25a
Improved implementation of ptr-to-member-fcn for surrogate gradient
heplesser Aug 28, 2024
29377cb
Add comment
heplesser Aug 28, 2024
1ffc752
Incorporate V_th into piecewise linear surrogate gradient parameters
akorgor Sep 6, 2024
a84cf7b
Add comment on why beta is divided by absolute threshold voltage
akorgor Sep 6, 2024
7559b92
Merge pull request #35 from akorgor/fix_piecewise-linear-surrogate-pa…
JesusEV Sep 6, 2024
4f0b6fa
Relocate refractory count down closer to non-eprop code
JesusEV Sep 9, 2024
514e2d3
Complete decoupling filters of eligibility trace and firing rate
JesusEV Sep 5, 2024
7440b3b
Rename filtered eligibility traces
JesusEV Sep 6, 2024
2b5d79b
Improve documentation
JesusEV Sep 6, 2024
6d1159e
Add reset of spiking variable
JesusEV Sep 9, 2024
b2a3cea
Merge branch 'eprop_bio_feature' into fix_decouple-low-pass-filters
akorgor Sep 9, 2024
afbebc4
Merge pull request #34 from akorgor/fix_decouple-low-pass-filters
akorgor Sep 9, 2024
83875ab
Fix cutoff limit handling
akorgor Sep 9, 2024
4ba687e
Set cutoff default to 1000
akorgor Sep 9, 2024
b14215c
Adapt t_compute_until to new default and remove assert
akorgor Sep 9, 2024
b532bda
Refactor cleaning of eprop update history
JesusEV Aug 30, 2024
60a80ee
Fix errors in user docs on kappa_reg
akorgor Sep 11, 2024
757b064
Move user docs on surrogate gradient to eprop_iaf and include elsewhere
akorgor Sep 11, 2024
248bd63
Fix author order in paper reference
akorgor Sep 12, 2024
d6fe979
Fix typos
akorgor Sep 12, 2024
cd5bee4
Add more details to BadProperty
akorgor Sep 12, 2024
090f31e
Replace comment "spiking variable" with "spike state variable"
akorgor Sep 12, 2024
00ce939
Reformat docstrings in tests
akorgor Sep 12, 2024
c36fb0b
Rephrase sentence in README on tutorials
akorgor Sep 12, 2024
62995ea
Refactor erase functions
akorgor Sep 12, 2024
7d5c0bb
Remove remaining "term" behind firing rate regularization in comment
akorgor Sep 12, 2024
9d56e29
Simplify calculation of `cutoff_to_spike_interval`
akorgor Sep 12, 2024
a3f20ec
Clarify the connection between e-prop and BPTT
akorgor Sep 12, 2024
65cfdd6
Remove the parameter names from the prototype for `compute_gradient`
akorgor Sep 13, 2024
ca8f1ff
Label `c_reg` as "coefficient" instead of as "prefactor"
akorgor Sep 13, 2024
c273b8f
Rename `t` to `time_step` for consistency
akorgor Sep 13, 2024
a5e9fe9
Add a @brief for correct display in doxygen
akorgor Sep 13, 2024
102dc90
Add parameters to the doxygen description
akorgor Sep 13, 2024
35e3c10
Copy `eprop_iaf_psc_delta` files to initialize `_adapt` version
akorgor Sep 14, 2024
fb1be29
Fix the order and grouping in the eprop model set
akorgor Sep 14, 2024
5fd2294
Register `eprop_iaf_psc_delta_adapt`
akorgor Sep 14, 2024
7689f36
Add adaptation mechanism
akorgor Sep 14, 2024
a8456b4
Rename schematic files
akorgor Sep 17, 2024
2cc0d2e
Remove matplotlib sans-serif font set to Arial
akorgor Sep 18, 2024
10c0126
Fix typo
akorgor Sep 17, 2024
2711595
Relabel `Variables_` to "internal variables"
akorgor Sep 17, 2024
540ddfd
Remove `nest::`
akorgor Sep 17, 2024
0738607
Rename remaining "prefactor" to "coefficient"
akorgor Sep 18, 2024
f5b7bed
Fix white spaces
akorgor Sep 18, 2024
d08926c
Group default constructors
akorgor Sep 18, 2024
aead293
Rename variables
akorgor Sep 18, 2024
d891691
Adapt `iaf_psc_delta` models to recent upstream modifications
akorgor Sep 18, 2024
8b71139
Refactor `updateValueParam`
akorgor Sep 18, 2024
34b1e25
Rename forgotten "general" to "internal
akorgor Sep 18, 2024
4db2344
Add BadProperty for `V_reset` and `V_th`
akorgor Sep 18, 2024
71b5421
Group `updateValueParam` lines
akorgor Sep 18, 2024
afe535e
Refactor `pre_run_hook`
akorgor Sep 18, 2024
dac9f59
Refactor `handle` function of `CurrentEvent`
akorgor Sep 18, 2024
3807a71
Swap surrogate gradient computation and spike state variable declarat…
akorgor Sep 18, 2024
12e0f18
Refactor doxygen and developer documentation
akorgor Sep 18, 2024
2a1b654
Rename `c_m` to `C_m` for consistency with `nest::names`
akorgor Sep 18, 2024
fef3cf7
Rename `get_V_m` to `get_v_m` for consistency with variable `v_m`
akorgor Sep 18, 2024
5b09bcc
Remove unused spike state variable `S_.z_`
akorgor Sep 18, 2024
172fad7
Add unit of `learning_signal` where missing in user docs
akorgor Sep 18, 2024
bf58171
Refactor `update` function
akorgor Sep 18, 2024
9244829
Reorder parameters and variables
akorgor Sep 18, 2024
a67c43a
Fix link to renamed schematic
akorgor Sep 19, 2024
ab1073c
Fix format of parameters and strings in user doc tables
akorgor Sep 19, 2024
f4e013b
Add missing references
akorgor Sep 19, 2024
9b1c7c2
Fix remaining formats of parameters
akorgor Sep 20, 2024
8403290
Fix parameter tables for `eprop_iaf_psc_delta` models
akorgor Sep 20, 2024
282463c
Fix user doc sections except for description for `eprop_iaf_psc_delta…
akorgor Sep 20, 2024
42451aa
Unify user doc tables
akorgor Sep 20, 2024
188f11d
Copy short and long description to `eprop_iaf_psc_delta` models
akorgor Sep 20, 2024
9f2ebb5
Adjust description of `eprop_iaf_psc_delta` models
akorgor Sep 20, 2024
ab63d55
Remove `P_z_in` since no longer needed
akorgor Sep 20, 2024
c5d1667
Express cutoff at `V_min` via `max` for clarity
akorgor Sep 24, 2024
9134263
Use the more precise "spike state variable" instead of "spike variable"
akorgor Sep 24, 2024
400bf6e
Clamp spike threshold during refractory period
akorgor Sep 24, 2024
2e2e7fa
Implement early-stopping
akorgor May 15, 2024
4d71af0
Enable changing of eta during experiment
akorgor May 15, 2024
70d134e
Introduce eta private to a synapse
akorgor May 29, 2024
17c69d8
Adjust early stopping code to upstream changes
akorgor Sep 21, 2024
f3b277b
Introduce a flag to turn early stopping on and off
akorgor Sep 21, 2024
3b1b930
Modularize training pipeline
akorgor Sep 25, 2024
e029bef
Merge nest-simulator/master into eprop_bio_feature
akorgor Sep 27, 2024
492e557
Fix remaining image file paths
akorgor Sep 27, 2024
c39d88d
Add missing references
akorgor Sep 27, 2024
fdd2533
Fix pylint "too-many-positional-arguments" errors
akorgor Sep 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions doc/htmldoc/examples/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -211,10 +211,13 @@ PyNEST examples
.. grid-item-card:: :doc:`../auto_examples/eprop_plasticity/index`
:img-top: ../static/img/pynest/eprop_supervised_classification_infrastructure.png

* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_classification_evidence-accumulation_bsshslm_2020`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_regression_sine-waves_bsshslm_2020`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_regression_handwriting_bsshslm_2020`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_regression_lemniscate_bsshslm_2020`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_classification_evidence-accumulation`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_regression_sine-waves`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_regression_handwriting`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_regression_infinite-loop`
* :doc:`/auto_examples/eprop_plasticity/eprop_supervised_classification_neuromorphic_mnist`


.. grid:: 1 1 2 3
Expand Down
Loading