-
Notifications
You must be signed in to change notification settings - Fork 392
Implement e-prop plasticity #2867
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
Merged
Merged
Changes from all commits
Commits
Show all changes
416 commits
Select commit
Hold shift + click to select a range
7ef1b3d
Use auto instead of explicit HistEntryEprop types
akorgor cfcb9c7
Initialize n_spikes in the constructor
akorgor ffda252
Improve naming of iterators
akorgor 1e95a4e
Unify retrieval of eprop, update and firing rate reg history
akorgor 6ccefa0
Remove unneeded empty vector guards
akorgor 1c2a080
Change order of history vectors for consistency
akorgor 4a8d8e8
Hike clang-format version to 17 and activate InsertBraces
heplesser 63ff6b4
Prescribe exact clang-format version
heplesser 30c590c
Insert braces around single-line blocks.
heplesser 87a8062
Add const where needed and remove unneeded
akorgor b2a10af
Re-add necessary checks for empty containers
heplesser ba34ef6
Merge branch 'eprop_feature' of github.com:jstapmanns/nest-simulator …
heplesser b1acfa1
Fix formatting
heplesser 599094b
Merge pull request #35 from heplesser/fix-guards
akorgor 2912044
Improve optimize functions
akorgor be6583d
Fix loops and types in learning signal handling
akorgor b00220e
Remove unneeded brackets
akorgor 6012a9c
Introduce option to average gradient
akorgor 55913ae
Make get_shift virtual and implement in neurons
akorgor abf5eb3
Avoid type casting in firing rate reg
akorgor 5bbf400
Remove blank line
akorgor 3d4f00e
Lift restriction resolution = 1 ms
akorgor f153344
Change type of z and add description
akorgor e620b44
Make the tests full-scale
akorgor a356252
Write to history only if eprop neuron receives eprop synapses
heplesser 81eb0ff
Make examples more robust and informative.
heplesser 3adb1c1
Merge branch 'verification_problem' into add-synapse-registration
heplesser a0312fe
Fix flake8 problem
heplesser c0fa755
Merge branch 'verification_problem' into add-synapse-registration
heplesser ba3ca44
Fix learning-signal readout for empty history
heplesser a2d3fa7
Make examples more robust and informative.
heplesser af22125
Fix flake8 problem
heplesser 6a7283c
Fix comment on removing spikes in 0th time step
akorgor b06a52e
Compare in tests with rtol instead of atol
akorgor 2432a91
Add links to NEST and TF reference implementation
akorgor 8b14794
Fix condition in write_update_history
akorgor fb10cce
Let linter ignore too long line
akorgor c8a1e4b
Let linter ignore too long line (second try)
akorgor 3304c6b
Add comment on why decreasing the access counter
akorgor 2be2640
Let linter ignore too long line (third try)
akorgor bd86a5a
Resolve discrepancy between implementation and name of write_learning…
akorgor 276cd36
Add doxygen comments to eprop archiving node
akorgor 05cf6f9
Protect verification from case len(loss) < len(loss_verification)
JesusEV a7ff7fd
Add missing BadProperty checks
JesusEV c56f9a8
Improve accuracy of decreasing counter comment
JesusEV 20f9674
Fix formatting
JesusEV d9620e3
Improve readability of gradient_change functions
JesusEV b75d6c3
Refactor erase_unneeded_eprop_history() function via lambda function
JesusEV b90fbdd
Add comprehensive comments to erase_unneeded* functions
JesusEV 5d48b98
Add comments to init_update_history() function
JesusEV d88c95a
Add comments to write_learning_signal_to_history() function
JesusEV 83e4907
Add comments to functions
JesusEV b664c12
Add comments to functions
JesusEV 8efeb8c
Add comments to functions count_spike() and reset_spike_count()
JesusEV c563a8d
Improve comment
JesusEV b28cdec
Improve comment
JesusEV f6a1bb5
Improve comment
JesusEV 1969e37
Fix typo
JesusEV 98e880b
Update comments in eprop_archiving_node
JesusEV fcccfb8
Update comments in gradient_change() functions
JesusEV 4d0bc1e
Fix formatting
JesusEV ebc6f5c
Fix wrong identation error in userdocs compilation
akorgor b5ab4b4
Fix dt-dependence of firing rate regularization
akorgor 4df1a62
Make unit-conversion comment more precise
akorgor 25728ed
Fix pylint line-too-long error
akorgor 9c33165
Refactor erase_unneeded_eprop_history() function
JesusEV dfada25
Improve iterator security during histories cleanup
JesusEV 66d801a
Replace propagator_idx with descriptive and restrictive str variable
JesusEV 0bdb9e0
Improve variable name
JesusEV 9fd8669
Merge pull request #39 from jstapmanns/remove-propagator-idx
JesusEV 65305b8
Fix malformed tables
akorgor 6755da6
Create skeleton for doxygen comments
akorgor cced367
Merge branch 'eprop_feature' into add-synapse-registration
JesusEV 2c8a38a
Merge pull request #37 from heplesser/add-synapse-registration
JesusEV 93111af
Fix formatting
JesusEV ddbd373
Make piecewise_linear funcs more readable and marginally more efficient
JesusEV c02d1de
Fix bug in tutorial regression script
JesusEV 0ec3135
Fix BadProperty checks
akorgor c67d015
Remove restriction on eta
akorgor fccd6a1
Initialize z in the constructor
akorgor 6ae9d6e
Remove remaining "leak constant complement"
akorgor f9fce8e
Increase readability wrt to identity propagator
akorgor 3a88a31
Unify namescape nest scopes
akorgor 555087e
Disentangle propagators by introducing alpha
akorgor 642fb56
Replace leak_propagator_complement with alpha_complement
akorgor f74ed59
Fix format
akorgor 4a500ec
Merge branch 'eprop_feature' into wip-eprop-doxygen
akorgor bc06190
State doxygen descriptions more precisely
akorgor 4c6d6c5
Replace identity with unity
JesusEV 63b5762
Remove remaining eprop_regression
akorgor a32b904
Add missing identity-unity renaming
akorgor 199f550
Merge branch 'eprop_feature' into wip-eprop-doxygen
akorgor eff2a7b
Add start to multimeters of recurrent neurons
akorgor 5894c07
Include initial weight in weight plotting
akorgor 81b732f
Emphasize difference to iaf_psc_delta
akorgor b1110b9
Remove unnecessary n_compare comments
akorgor 2f97d19
Declare variables in gradient_change earlier
akorgor 5fe3a37
Rename requires_buffer to avoid ambiguity
akorgor a1b4435
Merge branch 'eprop_feature' into wip-eprop-doxygen
akorgor 202d54a
Merge pull request #41 from akorgor/wip-eprop-doxygen
akorgor b611aec
Remove loss from cross_entropy_loss
akorgor 47ed061
Add/remove blank lines and typo
akorgor 1d1c1a5
First version of eprop optimizer as classes; compiles but fails under…
heplesser 9f7b17c
Fixing bugs
heplesser 5a1fb93
Rename propagators and associated variables
akorgor ae6ff4e
Rename v_ to v_m_
akorgor 4a05e07
Rename a_ to adapt_
akorgor bbecfba
Match order of z, z_in to header file
akorgor 2daee47
Set multimeter stop to exclude forced spike
akorgor 8f3990c
Fix generation of input spikes for regression for n_batch > 1
JesusEV 716279b
Fix learning signal getter
akorgor 1747974
Add missing initialization of v_th_adapt
akorgor 2d88981
Add check eprop_learning_window_new > eprop_update_interval_
JesusEV 51a34fd
Fix typo
JesusEV ca31153
Simplify tutorials and test
akorgor 7824976
Rename tutorials
akorgor 5d86319
Prepare adding more tutorials
akorgor 3e570ff
Remove flake8 in front of noqa
akorgor 260a0b1
Add handwriting and infinite loop task
akorgor c9a46d1
Add erase_unneeded_* functions to eprop_readout
JesusEV a798b96
Split optimizers on common and synapse-specific part; does not work f…
heplesser 04e10ff
Fix eprop synapse copy and assignment
heplesser f22f544
Add assertion
heplesser 4783b65
Update eprop examples
heplesser ace2098
Add minimal modelset for eprop examples
heplesser 21dbc97
Fix bugs in optimizer class implementation
heplesser 3b1faee
Merge branch 'master' of github.com:nest/nest-simulator into jstap-eprop
heplesser b634673
Merge branch 'jstap-eprop' into optimizer-class
heplesser 183043a
Adapt eprop tests to new parameter settings approach
heplesser 22fe35b
Adapt eprop examples to new parameter settings approach
heplesser b2bea9d
Fix pylint
heplesser 1dbe3e0
Place optimizer properties in subdict; work in progress
heplesser f67066c
Merge pull request #46 from heplesser/jstap-eprop
akorgor 20c7140
Add move constructor and assignment to blockvector and connector
heplesser bef1975
Set optimizer for all instances of eprop_synapse and add move semantics
heplesser 6f3f092
Remove accidentally added debug output
heplesser d659037
Fix NEST random seed for examples
akorgor 3d06a2e
Merge branch 'optimizer-class-nested-dict' into optimizer-class
heplesser eb7b96c
Introduce derived EpropArchivingNode classes
akorgor 7e151f6
Replace get_name with is_eprop_recurrent_node
akorgor c2d65cc
Fix copyright header
akorgor 3288ff1
Replace get_name with is_eprop_recurrent_node
JesusEV 152493a
Trigger eprop update only after t_next_update + shift
JesusEV 456269f
Add additional checks against user errors
heplesser 131ce25
Merge branch 'jstap-eprop' into optimizer-class
heplesser 9518b70
Merge branch 'master' of github.com:nest/nest-simulator into optimize…
heplesser d15fbca
Fix merge error
heplesser 8fc48db
Add missing return
heplesser feb759e
Move management of eprop optimizer object to Connector class with spe…
heplesser 6ec2b53
Merge branch 'optimizer-bugfix' into optimizer-class
heplesser 2050e0d
Fix formatting in documentation
akorgor 2e8fdec
Correct index formatting in docs
akorgor 3f6267c
Fix generation of modelsmodule to include necessary headers
heplesser 77cd5c7
Allow setting of nested optimizer parameters
heplesser 834247c
Convert eprop code, test and examples to nested dict with optimizer t…
heplesser b0167cc
Adapt test to modified eprop_synapse optimizer settings
heplesser 754ff51
Rename surrogate_gradient to avoid name clash
akorgor af15301
Add more variables to state::get
akorgor efab736
Link to eprop_plasticity/index
akorgor 3e27574
Apply suggestions from code review
heplesser 9c5283a
Name changes based on review
heplesser c289055
Merge branch 'optimizer-class' of github.com:heplesser/nest-simulator…
heplesser 7799a93
Place Wmin before Wmax in examples
heplesser 62f5bc0
Now single modelset for eprop
heplesser 8e49110
Renamed EpropOptimizer* to WeightOptimizer*
heplesser 3c475c6
Making optimizer_ member of eprop_synapse private; remove debugging o…
heplesser c1f9b39
Convert last remaining EpropOptimizer... to WeightOptimizer...
heplesser abc5cc3
Update modelsets/eprop
heplesser 23ed521
Merge branch 'eprop_feature' of github.com:jstapmanns/nest-simulator …
heplesser 2caa905
Fix E_L adjustment of adaptive threshold
heplesser 82ec2d1
Merge pull request #47 from heplesser/optimizer-class
akorgor de3b6b8
Merge branch 'master' of github.com:nest/nest-simulator into jstap-eprop
heplesser 2cc2758
Merge pull request #48 from heplesser/jstap-eprop
akorgor f2cd3f1
Fix compilation in absence of eprop_synapse
heplesser aab1f57
Much cleaner implementation of Conncetor template specialisations for…
heplesser c2547d8
Merge pull request #49 from heplesser/jstap-eprop
akorgor b0e377b
Rename adapting_threshold to V_th_adapt
akorgor 29f599c
Make BadProperty messages consistent
akorgor a786e9b
Refactor synapse dictionaries in tutorials
akorgor 580f72f
Instead of resolution=1ms, set delay=resolution in tests
akorgor 4fa0bb3
Add _to_history to get_learning_signal to avoid name clash
akorgor 63410bd
Initialize dynamic variables of Adam optimizer
akorgor 6210cdf
Match access specifiers between base and derived node classes
akorgor b85dc1a
Add technical comments
heplesser 0d1f255
Merge pull request #50 from heplesser/jstap-eprop
akorgor 9cc78b9
Reorganize user documentation and update parameters
akorgor 1fb6a90
Add more information to e-prop functions in node
akorgor bc77ddb
List criteria to erase in erase functions
akorgor 02c1448
Add _from to name get_learning_signal_history
akorgor a2f1403
Rename beta1, beta2 to beta_1, beta_2
akorgor b1b37d7
Simplify comment
akorgor 8988bac
Add more doxygen class headers
akorgor 2a9ca90
Add more doxygen comments
akorgor 078b8c8
Update user documentation
akorgor 9e37e0b
Make developer comments consistent
akorgor 7b7366d
Adjust learning rate validation in weight_optimizer
JesusEV e22f06f
Adjust lower bound of weight range in WeightOptimizer
JesusEV f03e896
Rename gradient_change to compute_gradient across eprop models
JesusEV 5e4ecf7
Update eprop example images
JesusEV a4b2d81
Renamed eprop models to include _bsshslm_2020; compiles, examples and…
heplesser 1b8b092
Tests adapted to renamed eprop models
heplesser 118fd64
Adjusted examples to renamed eprop models
heplesser 220c976
Renamed test file
heplesser b38be21
Renamed eprop_iaf_bsshslm_2020_adapt to eprop_iaf_adapt_bsshslm_2020 …
heplesser b563ddd
Remove verification from tutorials
akorgor 8f33438
Add info in what's new
akorgor ed574ae
Merge branch 'eprop_feature' of github.com:jstapmanns/nest-simulator …
heplesser ab948fa
Apply suggestions from code review
heplesser 601f87a
Merge branch 'jstap-eprop' of github.com:heplesser/nest-simulator int…
heplesser 48c6f8c
Fix modelsets
heplesser ec41554
Merge branch 'master' of github.com:nest/nest-simulator into jstap-eprop
heplesser 3253f47
Merge pull request #51 from heplesser/jstap-eprop
akorgor 5a9d0d2
Add explanation of _bsshslm_2020 to user documentation
akorgor e608e42
Turn plotting on in tutorials
akorgor ae675f9
Fix rendering of math equations
akorgor af143a2
Adjust note on similarity to iaf_psc_delta
akorgor 5120f72
Fix type of learning window
akorgor c18aeca
Fix developer comment on error signal
akorgor 6d7c05e
Add missing arg average_gradient in compute_gradient declaration
akorgor 8a180d6
Fix type of t in HistEntryEpropReadout
akorgor a53c915
Rename erase_unneeded* to erase_used*
akorgor 540d23b
Fix typo
akorgor 6691e5c
Turn KernelException into an IllegalConnection
akorgor a3fdbde
Rename alpha_t to alpha
akorgor 1b58a27
Order variables alphabetically
akorgor beda0c1
Add protection for n_record, n_record == 0
akorgor 0cac4f0
Remove else which is not needed because of return
akorgor 01d0a24
Merge branch 'master' into eprop_feature
akorgor 046e247
Make leak / resting membrane potential naming consistent
akorgor bea0837
Update models/eprop_synapse_bsshslm_2020.h
akorgor b875e0c
Update nestkernel/histentry.h
akorgor f394e3d
Update models/eprop_synapse_bsshslm_2020.h
akorgor 61f17ee
Update nestkernel/histentry.h
akorgor 67769c0
Update nestkernel/histentry.h
akorgor 6fbcf94
Update nestkernel/eprop_archiving_node.h
akorgor 3a00b34
Update nestkernel/eprop_archiving_node.h
akorgor f384e86
Update models/weight_optimizer.h
akorgor b0c7f6d
Update models/weight_optimizer.h
akorgor 1afb404
Update models/eprop_iaf_adapt_bsshslm_2020.cpp
akorgor c612b07
Complete regular_spike_arrival framework
akorgor 12981cc
Fix docs on regular_spike_arrival
akorgor dee5908
Fix typo
akorgor 56465c1
Fix spelling
akorgor 13797e6
Add n_record note to all tutorials
akorgor 0112c5a
Add start and stop to spike and weight recorder
akorgor 178ea14
Remove old n_record setting
akorgor 5ad82f5
Avoid unnecessary elements in loop to accelerate plotting
akorgor 0ea9212
Turn f- into r-strings to fix flake8 error
akorgor cdc27d7
Add missing information to the user documentation
akorgor 3fff77a
Merge branch 'master' into eprop_feature
akorgor File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file added
BIN
+107 KB
doc/htmldoc/static/img/pynest/eprop_supervised_classification_infrastructure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.