I am currently working on a project involving synaptic weight normalization using the guidelines provided in the NEST simulator documentation. I have implemented the normalization process; however, I encountered some questions that I would appreciate your insights on.
1.
Normalization Value: I found that the normalization value for a neuron with approximately 190 synapses is around 420, which I do not fully understand. This looks like the total weight of the neuron synapses. Could you provide clarification on how the normalisation value is determined? 2.
Simulation State Preservation: I would like to save and restore the state of synaptic weights to maintain the simulation's behaviour across sessions. Below is the pseudocode I intend to use:
Save synaptic weights: w = array of current weights of neuron connections normalization_factor = sum of absolute weights if normalization_factor != 0: normalized_weights = w / normalization_factor save normalized_weights to file
Load synaptic weights: read normalized_weights from file assign loaded weights back to connection
I would like to know if you have any suggestions for improving this pseudocode or if there are best practices I should consider.
Thank you for your time and assistance. I look forward to your response.
Hi Peter,
In the page on weight normalisation (https://nest-simulator.readthedocs.io/en/v3.8/synapses/weight_normalization....), an example is shown that normalises the L1-norm of the vector. Indeed, it divides by sum(abs(w)). So after the normalisation step, |w| = 1. I don't know where the number 420 comes from, perhaps you can check your code on a more simple example with only one neuron (or send us a minimal reproducing code for the issue).
For your second query, please see: https://nest-simulator.readthedocs.io/en/latest/auto_examples/store_restore_...
Hope this helps!
With kind regards, Charl
On Sun, Dec 1, 2024, at 21:00, Peter Mason wrote:
I am currently working on a project involving synaptic weight normalization using the guidelines provided in the NEST simulator documentation. I have implemented the normalization process; however, I encountered some questions that I would appreciate your insights on.
Normalization Value: I found that the normalization value for a neuron with approximately 190 synapses is around 420, which I do not fully understand. This looks like the total weight of the neuron synapses. Could you provide clarification on how the normalisation value is determined?
Simulation State Preservation: I would like to save and restore the state of synaptic weights to maintain the simulation's behaviour across sessions. Below is the pseudocode I intend to use:
`Save synaptic weights: w = array of current weights of neuron connections normalization_factor = sum of absolute weights if normalization_factor != 0: normalized_weights = w / normalization_factor save normalized_weights to file
Load synaptic weights: read normalized_weights from file assign loaded weights back to connection
`
I would like to know if you have any suggestions for improving this pseudocode or if there are best practices I should consider.
Thank you for your time and assistance. I look forward to your response.
NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
Dear Peter,
just a minor addition to Charl's observations: your pseudocode is missing the scaling by the target weight w_target , which is present in the example and may be wanted depending on your application.
Best, Barna
On 02.12.24 11:44, Charl Linssen wrote: Hi Peter,
In the page on weight normalisation (https://nest-simulator.readthedocs.io/en/v3.8/synapses/weight_normalization....), an example is shown that normalises the L1-norm of the vector. Indeed, it divides by sum(abs(w)). So after the normalisation step, |w| = 1. I don't know where the number 420 comes from, perhaps you can check your code on a more simple example with only one neuron (or send us a minimal reproducing code for the issue).
For your second query, please see: https://nest-simulator.readthedocs.io/en/latest/auto_examples/store_restore_...
Hope this helps!
With kind regards, Charl
On Sun, Dec 1, 2024, at 21:00, Peter Mason wrote:
I am currently working on a project involving synaptic weight normalization using the guidelines provided in the NEST simulator documentation. I have implemented the normalization process; however, I encountered some questions that I would appreciate your insights on.
1. Normalization Value: I found that the normalization value for a neuron with approximately 190 synapses is around 420, which I do not fully understand. This looks like the total weight of the neuron synapses. Could you provide clarification on how the normalisation value is determined?
2. Simulation State Preservation: I would like to save and restore the state of synaptic weights to maintain the simulation's behaviour across sessions. Below is the pseudocode I intend to use:
Save synaptic weights: w = array of current weights of neuron connections normalization_factor = sum of absolute weights if normalization_factor != 0: normalized_weights = w / normalization_factor save normalized_weights to file
Load synaptic weights: read normalized_weights from file assign loaded weights back to connection
I would like to know if you have any suggestions for improving this pseudocode or if there are best practices I should consider.
Thank you for your time and assistance. I look forward to your response.
_______________________________________________ NEST Users mailing list -- users@nest-simulator.orgmailto:users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.orgmailto:users-leave@nest-simulator.org
_______________________________________________ NEST Users mailing list -- users@nest-simulator.orgmailto:users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.orgmailto:users-leave@nest-simulator.org
-- Barna Zajzon, Postdoctoral Researcher Institute for Advanced Simulation (IAS-6) Computational and Systems Neuroscience Jülich Research Centre, Jülich, Germany
------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------ Forschungszentrum Jülich GmbH 52425 Jülich Sitz der Gesellschaft: Jülich Eingetragen im Handelsregister des Amtsgerichts Düren Nr. HR B 3498 Vorsitzender des Aufsichtsrats: MinDir Stefan Müller Geschäftsführung: Prof. Dr. Astrid Lambrecht (Vorsitzende), Karsten Beneke (stellv. Vorsitzender), Prof. Dr. Ir. Pieter Jansens ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------
Barna Thank you for your reply. I think you have identified the core of the issue. The target weight that I need to use is 470 to achieve a node weight in the order of one, which seems wrong. I will attempt to explain this to Charl.
On Mon, Dec 2, 2024 at 2:13 PM Barna Zajzon b.zajzon@fz-juelich.de wrote:
Dear Peter,
just a minor addition to Charl's observations: your pseudocode is missing the scaling by the target weight w_target , which is present in the example and may be wanted depending on your application.
Best, Barna On 02.12.24 11:44, Charl Linssen wrote:
Hi Peter,
In the page on weight normalisation ( https://nest-simulator.readthedocs.io/en/v3.8/synapses/weight_normalization....), an example is shown that normalises the L1-norm of the vector. Indeed, it divides by sum(abs(w)). So after the normalisation step, |w| = 1. I don't know where the number 420 comes from, perhaps you can check your code on a more simple example with only one neuron (or send us a minimal reproducing code for the issue).
For your second query, please see: https://nest-simulator.readthedocs.io/en/latest/auto_examples/store_restore_...
Hope this helps!
With kind regards, Charl
On Sun, Dec 1, 2024, at 21:00, Peter Mason wrote:
I am currently working on a project involving synaptic weight normalization using the guidelines provided in the NEST simulator documentation. I have implemented the normalization process; however, I encountered some questions that I would appreciate your insights on.
Normalization Value: I found that the normalization value for a neuron with approximately 190 synapses is around 420, which I do not fully understand. This looks like the total weight of the neuron synapses. Could you provide clarification on how the normalisation value is determined? 2.
Simulation State Preservation: I would like to save and restore the state of synaptic weights to maintain the simulation's behaviour across sessions. Below is the pseudocode I intend to use:
Save synaptic weights: w = array of current weights of neuron connections normalization_factor = sum of absolute weights if normalization_factor != 0: normalized_weights = w / normalization_factor save normalized_weights to file
Load synaptic weights: read normalized_weights from file assign loaded weights back to connection
I would like to know if you have any suggestions for improving this pseudocode or if there are best practices I should consider.
Thank you for your time and assistance. I look forward to your response. _______________________________________________ NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
-- Barna Zajzon, Postdoctoral Researcher Institute for Advanced Simulation (IAS-6) Computational and Systems Neuroscience Jülich Research Centre, Jülich, Germany
Forschungszentrum Jülich GmbH 52425 Jülich Sitz der Gesellschaft: Jülich Eingetragen im Handelsregister des Amtsgerichts Düren Nr. HR B 3498 Vorsitzender des Aufsichtsrats: MinDir Stefan Müller Geschäftsführung: Prof. Dr. Astrid Lambrecht (Vorsitzende), Karsten Beneke (stellv. Vorsitzender), Prof. Dr. Ir. Pieter Jansens
NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
Thank you for the response. The second point first. I tried to get your example code to work some time ago and gave up as being too difficult. The question I now have is does saving the node weights fully describe the state of the network, or at least to a first approximation, or are there internal nest conditions that need to be restored? It seems easier to dump the weights to a pickle file and reinstate them at start-up.
This is a real time system to emulate the motion of C.elegans. and I am attempting to update the parameters dynamically including the neuron weights to be able to see the result of the changes in parameter. Is normalisation the correct way to update synapse weights?. I tried addressing the neuron weight directly but this failed with pyNN so I changed to doing it with normalisation. It does at least change the simulation response. but I need a param_value of 470 to achieve a weight of around unity.
The method pm_normalisation_weights is basically the example code and attempts to normalise to param_value which would be a synapse weight of typically 0.45. This is the initial value I have been using to create the neurons and run the simulation until now. The introduction of the normalisation module resulted in needing a param_value of 470 to achieve a similar simulation response to the un-normalised version. Is this the scaling that Barna indicated? The question then is why scaling.
On Mon, Dec 2, 2024 at 11:53 AM Charl Linssen nest-users@turingbirds.com wrote:
Hi Peter,
In the page on weight normalisation ( https://nest-simulator.readthedocs.io/en/v3.8/synapses/weight_normalization....), an example is shown that normalises the L1-norm of the vector. Indeed, it divides by sum(abs(w)). So after the normalisation step, |w| = 1. I don't know where the number 420 comes from, perhaps you can check your code on a more simple example with only one neuron (or send us a minimal reproducing code for the issue).
For your second query, please see: https://nest-simulator.readthedocs.io/en/latest/auto_examples/store_restore_...
Hope this helps!
With kind regards, Charl
On Sun, Dec 1, 2024, at 21:00, Peter Mason wrote:
I am currently working on a project involving synaptic weight normalization using the guidelines provided in the NEST simulator documentation. I have implemented the normalization process; however, I encountered some questions that I would appreciate your insights on.
Normalization Value: I found that the normalization value for a neuron with approximately 190 synapses is around 420, which I do not fully understand. This looks like the total weight of the neuron synapses. Could you provide clarification on how the normalisation value is determined? 2.
Simulation State Preservation: I would like to save and restore the state of synaptic weights to maintain the simulation's behaviour across sessions. Below is the pseudocode I intend to use:
Save synaptic weights: w = array of current weights of neuron connections normalization_factor = sum of absolute weights if normalization_factor != 0: normalized_weights = w / normalization_factor save normalized_weights to file
Load synaptic weights: read normalized_weights from file assign loaded weights back to connection
I would like to know if you have any suggestions for improving this pseudocode or if there are best practices I should consider.
Thank you for your time and assistance. I look forward to your response. _______________________________________________ NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org