Comments (5)
To some degree I understand @Jegp 's viewpoint that this behaviour is intended to simulate the neuron's dynamics. That's why I introduced this issue as a discussion rather than an issue.
After reading the merge request I understand this might ahve been mostly motivated by the recurrent layers and their consistency. However, for straight feed-forward networks this change is really important. Many SNN papers such as this and this mainly concern themselves with a short sequence length to reduce computational overhead. With the current implementation, the input lag actually makes implementing a comparably fast network impossible.
I'm very thankful for @cpehle to take my topic to heart and writing this update. I'm looking forward to future versions of Norse containg these changes.
from norse.
I'm not sure I follow the logic here. I completely understand that the delay is "annoying" from a practical point of view. But it's also an inherent property of SNNs that they simply do not propagate signals immediately.
I'm wondering whether this is A) something Norse should consider and, if so, B) something we can include in the synapse dynamics. I'm saying that because we recently had talks about separating synapse and cell dynamics. That could be one way of getting about this issue, because we could have models without any form of delay.
from norse.
The current behavior was mostly motivated to be consistent with the current recurrent implementation, where a delay of 1 timestep seems sensible. For the forward integration that is less relevant and can lead to undesirably long delays. I think doing this change would probably be less work than doing a wholesale migration to a synapse neuron dynamics split.
from norse.
There is one additional concern that I haven't mentioned yet and that is compatibility with the "adjoint code", I admittedly have not fully investigated this, as there the order also affects the correct order in which the "backward dynamics" needs to be implemented.
from norse.
Thanks for your understanding @LennardBo. I'm grateful you brought it up, and I strongly believe we should act on the shorter term.
As @cpehle mentioned, we've been thinking about ways to progress Norse without loss of generality. Your issue is (unfortunately) touching on a longer discussion that I would like to think carefully about, hence the skepticism. One of the reasons Norse is attractive/viable, I believe, is because we're serious about stability and correctness. But @cpehle correctly acted on this and I'm sure we can wrap up the short-term matters quickly.
So, thanks again for bringing this to our attention! :-) I think we should try to move the discussion about integration out in the open and see how we can proceed there. Inputs are deeply appreciated.
from norse.
Related Issues (20)
- Spack build failing HOT 3
- Task 'memory.py' is broken HOT 3
- Implement the GLIF model
- Shared Lib issues relating to norse_op with `torch` + CUDA 11.7 HOT 1
- Implement BNTT (Batch Norm through time)
- Implement Forward Propagation Through Time (FPTT)
- Implement Liquid Time Constant SNN
- Error in population_encode when encoding higher-dimensional Tensor HOT 5
- spack build fails HOT 1
- Add IAF neuron module
- Windows CI builds fail HOT 1
- Implement synops metric HOT 3
- Move to PyTorch 2.0 HOT 1
- Implement wheel build matrix
- Norse is broken on Google Colab HOT 1
- Require an example that using STDP to train the SNN HOT 1
- CIFAR example not working HOT 1
- Can Norse support no delay between input and output of spiking neurons? HOT 3
- ipywidgets package missing when executing notebook for documentation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from norse.