-
Notifications
You must be signed in to change notification settings - Fork 12
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
Always set filter on post ensemble in connection #45
Conversation
ba33c76
to
e239305
Compare
Based on the discussion in #63, I think this is ready for review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't quite understand in what conditions the system uses tau_s
and in what conditions it uses INTER_TAU
, but I can confirm that this change fixes the issue I posted #63 . So perhaps a bit of a comment in builder.py indicating what the conditions are and why we're sometimes using tau_s
and sometimes using INTER_TAU
would be nice, but other than that it looks fine to me!
@tcstewar: I've added some comments. Let me know what you think. One situation that we're going to have trouble with in general is that each group of neurons can only have one input synapse. So right now, in the case where we have a recurrent connection (which would have a INTER_TAU filter going back in to the neurons) and an input node (with this change, would now apply its own filter), things would break. One solution, especially since it seems we don't need filtering on the interneurons (at least on node interneurons, I haven't tested on ensemble ones where we use 20 neurons at 100 Hz instead of 2 at 1000 Hz), would be to only use INTER_TAU as a default for ensembles, and if anything else overrides that, then that would be the new input filter. |
So I think I'd added the comments, but not pushed them. Sorry @tcstewar! If you want to take a look now, go ahead. I think @tbekolay is looking to merge this soon. I was trying to figure out what I was talking about in that last comment about only making INTER_TAU the default for ensembles; it seems like that was done in cb6ba75. As far as I can tell, this is good to go. |
Those comments look good to me! Thank you for clarifying! :) |
8313af2
to
fd8511e
Compare
After rebasing, this fails |
Fails in emulator or on Loihi? |
I just rebased myself and found this failure in the emulator for test_node_ens_ens. It did not fail before the rebase (in the emulator). I'll look into these failures. |
Emulator, therefore probably both. You can see the failures in travis CI. |
fd8511e
to
9930afe
Compare
Ok, I think this should all pass now. I'm not quite sure what changed about test_node_ens_ens, but essentially I had made the tolerances a bit tighter in one of these commits so I backed them up a bit (though they're still tighter than originally). Wtih test_amplitude, we were using a filter from an (input) node to an ensemble with no synapse. Before these commits, that would still provide some filtering, now it provides none. So I just removed the I think for merging, all these commits can probably get squashed down into one. |
Could we add a warning for node->* connections with |
@hunse Could you explain a bit what the issue is with having no filter on nodes? Is it because node inputs are translated to spikes later on? Is there a mechanism for injecting current? Obviously not things to look into in this PR, but a bit of this explanation would be good to have on the warning raised for node->* connections. |
So yeah, all node output gets turned into spikes by this ensemble that we introduce in the splitter: nengo-loihi/nengo_loihi/splitter.py Line 187 in 619e45b
The filter on the node connection is applied to the output spikes of that ensemble. Things work without a filter, they're just a little noisier. Another option for down the road would be to have the standard |
Ok, added a warning. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a commit fixing any warnings about synapse=None
raised in the test suite. I am slightly concerned that the RMSE goes from 0.19802 +/- 0.6952 before that commit to 0.21271 +/- 0.7643, but I'll let it slide for now.
This fixes (for example) neuron->ensemble connections (of which we currently have no test cases). This commit also includes some fixes for tests affected by this change.
All tests that encountered this warning have been changed to use a synapse.
fc0b6c9
to
de8a321
Compare
We're not good about accounting for synaptic delays in our tests, so I'm
guessing that's the cause of the RMSE change.
…On Wed, Sep 26, 2018, 21:24 Trevor Bekolay ***@***.***> wrote:
***@***.**** approved this pull request.
Added a commit fixing any warnings about synapse=None raised in the test
suite. I am slightly concerned that the RMSE goes from 0.19802 +/- 0.6952
before that commit to 0.21271 +/- 0.7643, but I'll let it slide for now.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#45 (review)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AB3J-i5845JBwcm3tMG5ohYE2iaFY5Ggks5ufCi2gaJpZM4WZrRQ>
.
|
This would fix (for example) neuron->ensemble connections
(of which we currently have no test cases).
Unfortunately, this changes the behaviour of node->ensemble connections,
causing node_ens_ens to fail. The synapse set on the connection (None)
overrides the default INTER_TAU synapse, removing the filtering on
the ReLU neurons used to turn the node values into spikes.
Based on #43.