Class implementing a readout neuron model for e-prop plasticity. More...
#include <eprop_readout_bsshslm_2020.h>
Classes | |
| struct | Buffers_ |
| Structure of buffers. More... | |
| struct | Parameters_ |
| Structure of parameters. More... | |
| struct | State_ |
| Structure of state variables. More... | |
| struct | Variables_ |
| Structure of internal variables. More... | |
Public Member Functions | |
| eprop_readout_bsshslm_2020 () | |
| Default constructor. | |
| eprop_readout_bsshslm_2020 (const eprop_readout_bsshslm_2020 &) | |
| Copy constructor. | |
| void | sends_secondary_event (LearningSignalConnectionEvent &) override |
| Required to check if source node may send a LearningSignalConnectionEvent. | |
| void | sends_secondary_event (DelayedRateConnectionEvent &) override |
| Required to check, if source neuron may send a SecondaryEvent. | |
| void | handle (SpikeEvent &) override |
| Handle incoming spike events. | |
| void | handle (CurrentEvent &) override |
| Handler for current events. | |
| void | handle (DelayedRateConnectionEvent &) override |
| Handler for delay rate neuron events. | |
| void | handle (DataLoggingRequest &) override |
| Handler for universal data logging request. | |
| size_t | handles_test_event (SpikeEvent &, size_t) override |
| Check if the node can handle a particular event and receptor type. | |
| size_t | handles_test_event (CurrentEvent &, size_t) override |
| size_t | handles_test_event (DelayedRateConnectionEvent &, size_t) override |
| size_t | handles_test_event (DataLoggingRequest &, size_t) override |
| void | get_status (Dictionary &) const override |
| Export properties of the node by setting entries in the status dictionary. | |
| void | set_status (const Dictionary &) override |
| Change properties of the node according to the entries in the dictionary. | |
| virtual void | handle (SpikeEvent &e) |
| Handle incoming spike events. | |
| virtual void | handle (WeightRecorderEvent &e) |
| Handle incoming weight recording events. | |
| virtual void | handle (RateEvent &e) |
| Handler for rate events. | |
| virtual void | handle (DataLoggingRequest &e) |
| Handler for universal data logging request. | |
| virtual void | handle (DataLoggingReply &e) |
| Handler for universal data logging request. | |
| virtual void | handle (CurrentEvent &e) |
| Handler for current events. | |
| virtual void | handle (ConductanceEvent &e) |
| Handler for conductance events. | |
| virtual void | handle (DoubleDataEvent &e) |
| Handler for DoubleData events. | |
| virtual void | handle (GapJunctionEvent &e) |
| Handler for gap junction events. | |
| virtual void | handle (InstantaneousRateConnectionEvent &e) |
| Handler for rate neuron events. | |
| virtual void | handle (DiffusionConnectionEvent &e) |
| Handler for rate neuron events. | |
| virtual void | handle (DelayedRateConnectionEvent &e) |
| Handler for delay rate neuron events. | |
| virtual void | handle (LearningSignalConnectionEvent &e) |
| Handler for learning signal connection events. | |
| virtual void | handle (SICEvent &e) |
| Handler for slow inward current events (SICEvents). | |
| virtual size_t | handles_test_event (SpikeEvent &, size_t receptor_type) |
| Check if the node can handle a particular event and receptor type. | |
| virtual size_t | handles_test_event (WeightRecorderEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (RateEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DataLoggingRequest &, size_t receptor_type) |
| virtual size_t | handles_test_event (CurrentEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (ConductanceEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DoubleDataEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DSSpikeEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DSCurrentEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (GapJunctionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (InstantaneousRateConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DiffusionConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DelayedRateConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (LearningSignalConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (SICEvent &, size_t receptor_type) |
| virtual void | sends_secondary_event (GapJunctionEvent &ge) |
| Required to check, if source neuron may send a SecondaryEvent. | |
| virtual void | sends_secondary_event (InstantaneousRateConnectionEvent &re) |
| Required to check, if source neuron may send a SecondaryEvent. | |
| virtual void | sends_secondary_event (DiffusionConnectionEvent &de) |
| Required to check, if source neuron may send a SecondaryEvent. | |
| virtual void | sends_secondary_event (DelayedRateConnectionEvent &re) |
| Required to check, if source neuron may send a SecondaryEvent. | |
| virtual void | sends_secondary_event (LearningSignalConnectionEvent &re) |
| Required to check if source node may send a LearningSignalConnectionEvent. | |
| virtual void | sends_secondary_event (SICEvent &sic) |
| Required to check if source node may send a SICEvent. | |
Public Member Functions inherited from nest::EpropArchivingNodeReadout< true > | |
| EpropArchivingNodeReadout () | |
| Constructs a new EpropArchivingNodeReadout object. | |
| EpropArchivingNodeReadout (const EpropArchivingNodeReadout &other) | |
| Constructs a new EpropArchivingNodeReadout object by copying another EpropArchivingNodeReadout object. | |
| void | append_new_eprop_history_entry (long time_step) |
| Creates an entry for the specified time step at the end of the eprop history. | |
| void | write_error_signal_to_history (long time_step, const double error_signal) |
| Writes the error signal to the eprop history at the specified time step. | |
| void | get_status (Dictionary &d) const override |
| Export properties of the node by setting entries in the status dictionary. | |
| void | set_status (const Dictionary &d) override |
| Change properties of the node according to the entries in the dictionary. | |
Public Member Functions inherited from nest::EpropArchivingNode< HistEntryEpropReadout > | |
| EpropArchivingNode () | |
| Constructs a new EpropArchivingNode object. | |
| EpropArchivingNode (const EpropArchivingNode &n) | |
| Constructs a new EpropArchivingNode object by copying another EpropArchivingNode object. | |
| void | register_eprop_connection () override |
| Registers an eprop connection. | |
| void | initialize_update_history () override |
| Initializes the update history. | |
| void | write_update_to_history (const long t_previous_update, const long t_current_update, const bool is_flush_event, const bool previous_was_flush_event) override |
| Registers the current update in the update history and deregisters the previous update. | |
| void | require_eprop_history_entry (const typename std::vector< HistEntryEpropReadout >::iterator eprop_hist_it, const long time_step) const |
| Requires that an e-prop history iterator points to the expected time step. | |
| std::vector< HistEntryEpropUpdate >::iterator | get_update_history (const long time_step) |
| Retrieves the update history entry for a specific time step. | |
| std::vector< HistEntryEpropReadout >::iterator | get_eprop_history (const long time_step) |
| Retrieves the eprop history entry for a specified time step. | |
| void | erase_used_eprop_history () override |
Erases the used eprop history for bsshslm_2020 models. | |
| void | erase_used_eprop_history (const long t_spike, const long t_spike_previous) override |
| Erases the used eprop history. | |
| double | get_eprop_history_duration () const |
| Retrieves eprop history size. | |
| long | get_eprop_isi_trace_cutoff () const |
| Retrieves the eprop ISI trace cutoff. | |
Public Member Functions inherited from nest::Node | |
| Node () | |
| Node (Node const &) | |
| virtual | ~Node () |
| virtual Node * | clone () const |
| This function creates a new object by calling the derived class' copy constructor and returning its pointer. | |
| virtual bool | has_proxies () const |
| Returns true if the node has proxies on remote threads. | |
| virtual bool | supports_urbanczik_archiving () const |
| Returns true if the node supports the Urbanczik-Senn plasticity rule. | |
| virtual bool | local_receiver () const |
| Returns true if the node only receives events from nodes/devices on the same thread. | |
| virtual bool | one_node_per_process () const |
| Returns true if the node exists only once per process, but does not have proxies on remote threads. | |
| virtual bool | is_off_grid () const |
| Returns true if the node sends/receives off-grid events. | |
| virtual bool | is_proxy () const |
| Returns true if the node is a proxy node. | |
| std::string | get_name () const |
| Return class name. | |
| virtual std::string | get_element_type () const |
| Return the element type of the node. | |
| size_t | get_node_id () const |
| Return global Network ID. | |
| int | get_model_id () const |
| Return model ID of the node. | |
| bool | is_frozen () const |
| Returns true if node is frozen, i.e., shall not be updated. | |
| bool | node_uses_wfr () const |
| Returns true if the node uses the waveform relaxation method. | |
| void | set_node_uses_wfr (const bool) |
| Sets node_uses_wfr_ member variable (to be able to set it to "true" for any class derived from Node) | |
| void | init () |
| Initialize node prior to first simulation after node has been created. | |
| virtual void | calibrate_time (const TimeConverter &) |
| Re-calculate time-based properties of the node. | |
| virtual void | post_run_cleanup () |
| Cleanup node after Run. | |
| virtual void | finalize () |
| Finalize node. | |
| virtual bool | wfr_update (Time const &, const long, const long) |
| Advance the state of the node in time through the given interval (see Node::update() for more details). | |
| virtual size_t | send_test_event (Node &receiving_node, size_t receptor_type, synindex syn_id, bool dummy_target) |
| Send an event to the receiving_node passed as an argument. | |
| virtual void | register_stdp_connection (double, double) |
| Register a STDP connection. | |
| virtual double | get_Ca_minus () const |
| Return the Ca_minus value at time Ca_t which corresponds to the time of the last update in Calcium concentration which is performed each time a Node spikes. | |
| virtual double | get_synaptic_elements (std::string) const |
| Get the number of synaptic element for the current Node at Ca_t which corresponds to the time of the last spike. | |
| virtual int | get_synaptic_elements_vacant (std::string) const |
| Get the number of vacant synaptic element for the current Node Return 0 if not overridden. | |
| virtual int | get_synaptic_elements_connected (std::string) const |
| Get the number of connected synaptic element for the current Node. | |
| virtual std::map< std::string, double > | get_synaptic_elements () const |
| Get the number of all synaptic elements for the current Node at time t. | |
| virtual void | update_synaptic_elements (double) |
| Triggers the update of all SynapticElements stored in the synaptic_element_map_. | |
| virtual void | decay_synaptic_elements_vacant () |
| Is used to reduce the number of synaptic elements in the node through time. | |
| virtual void | connect_synaptic_element (std::string, int) |
| Is used to update the number of connected synaptic elements (SynapticElement::z_connected_) when a synapse is formed or deleted. | |
| virtual double | get_K_value (double t) |
| return the Kminus value at t (in ms). | |
| virtual double | get_LTD_value (double t) |
| virtual void | get_K_values (double t, double &Kminus, double &nearest_neighbor_Kminus, double &Kminus_triplet) |
| write the Kminus, nearest_neighbor_Kminus, and Kminus_triplet values at t (in ms) to the provided locations. | |
| virtual void | get_history (double t1, double t2, std::deque< histentry >::iterator *start, std::deque< histentry >::iterator *finish) |
| return the spike history for (t1,t2]. | |
| virtual void | get_LTP_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish) |
| virtual void | get_urbanczik_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish, int) |
| virtual double | get_C_m (int comp) |
| virtual double | get_g_L (int comp) |
| virtual double | get_tau_L (int comp) |
| virtual double | get_tau_s (int comp) |
| virtual double | get_tau_syn_ex (int comp) |
| virtual double | get_tau_syn_in (int comp) |
| virtual void | compute_gradient (const long t_spike, const long t_spike_previous, double &z_previous_buffer, double &z_bar, double &e_bar, double &e_bar_reg, double &epsilon, double &weight, const CommonSynapseProperties &cp, WeightOptimizer *optimizer, bool is_flush_event, bool previous_was_flush_event, double &sum_grad, long &remaining_steps_until_cutoff, long &decay_steps) |
| Compute gradient change for eprop synapses. | |
| virtual void | event_hook (DSSpikeEvent &) |
| Modify Event object parameters during event delivery. | |
| virtual void | event_hook (DSCurrentEvent &) |
| void | set_thread (size_t) |
| Store the number of the thread to which the node is assigned. | |
| size_t | get_thread () const |
| Retrieve the number of the thread to which the node is assigned. | |
| void | set_vp (size_t) |
| Store the number of the virtual process to which the node is assigned. | |
| size_t | get_vp () const |
| Retrieve the number of the virtual process to which the node is assigned. | |
| void | set_model_id (int) |
| Set the model id. | |
| void | set_initialized () |
| Execute post-initialization actions in node models. | |
| virtual SignalType | sends_signal () const |
| virtual SignalType | receives_signal () const |
| Dictionary | get_status_base () |
| Return a dictionary with the node's properties. | |
| void | set_status_base (const Dictionary &) |
| Set status dictionary of a node. | |
| bool | is_model_prototype () const |
| Returns true if node is model prototype. | |
| void | set_thread_lid (const size_t) |
| set thread local index | |
| size_t | get_thread_lid () const |
| get thread local index | |
| virtual void | set_local_device_id (const size_t lsdid) |
| Sets the local device id. | |
| virtual size_t | get_local_device_id () const |
| Gets the local device id. | |
| void | set_tmp_nc_index (size_t index) |
| Set index in node collection; required by ThirdOutBuilder. | |
| size_t | get_tmp_nc_index () |
| Return and invalidate index in node collection; required by ThirdOutBuilder. | |
Public Member Functions inherited from nest::FlushEventMechanism | |
| FlushEventMechanism () | |
| Default constructor. | |
| FlushEventMechanism (const FlushEventMechanism &n) | |
| Copy constructor. | |
| virtual | ~FlushEventMechanism ()=default |
| Destructor. | |
| void | set_last_event_time (const long last_event_time) |
| Sets the time the neuron last sent an event (spike or flush event). | |
| long | get_last_event_time () const |
| Gets the last time the neuron sent an event (spike or flush event). | |
| void | pre_run_hook () |
| Re-calculates dependent parameters. | |
| bool | flush_event_is_due (const long current_time) const |
| Checks if a flush event is due at the current time. | |
| void | get_status (Dictionary &d) const |
| Retrieves parameters and adds them to the status dictionary. | |
| void | set_status (const Dictionary &d, Node *node, const bool check_eprop_constraint=false) |
| Sets and validates parameters from the status dictionary. | |
Public Member Functions inherited from nest::IgnoreAndSpikeMechanism | |
| IgnoreAndSpikeMechanism () | |
| Default constructor. | |
| IgnoreAndSpikeMechanism (const IgnoreAndSpikeMechanism &n) | |
| Copy constructor. | |
| virtual | ~IgnoreAndSpikeMechanism ()=default |
| Virtual destructor. | |
| bool | spike_event_is_due (bool emit_dynamic_spike) |
| Updates spike schedule and returns whether a spike should be emitted. | |
| void | get_status (Dictionary &d) const |
| Retrieves parameters and adds them to the status dictionary. | |
| void | set_status (const Dictionary &d, Node *node) |
| Sets and validates parameters from the status dictionary. | |
Private Types | |
| enum | RateSynapseTypes { READOUT_SIG = MIN_RATE_RECEPTOR , TARGET_SIG , SUP_RATE_RECEPTOR } |
| Enumeration of spike receptor types. More... | |
Private Member Functions | |
| void | init_buffers_ () override |
| Configure persistent internal data structures. | |
| void | pre_run_hook () override |
| Re-calculate dependent parameters of the node. | |
| void | update (Time const &, const long, const long) override |
| Advance the state of the node in time through the given interval. | |
| double | compute_gradient (std::vector< long > &presyn_isis, const long t_previous_update, const long t_previous_trigger_spike, const double kappa, const bool average_gradient) override |
| Compute gradient change for eprop synapses. | |
| long | get_shift () const override |
| Retrieves the temporal shift of the signal. | |
| bool | is_eprop_recurrent_node () const override |
| Checks if the node is part of the recurrent network and thus not a readout neuron. | |
| void | compute_error_signal_mean_squared_error () |
| Compute the error signal based on the mean-squared error loss. | |
| void | compute_error_signal_cross_entropy () |
| Compute the error signal based on the cross-entropy loss. | |
| double | get_v_m_ () const |
| Get the current value of the membrane voltage. | |
| double | get_readout_signal_ () const |
| Get the current value of the normalized readout signal. | |
| double | get_readout_signal_unnorm_ () const |
| Get the current value of the unnormalized readout signal. | |
| double | get_target_signal_ () const |
| Get the current value of the target signal. | |
| double | get_error_signal_ () const |
| Get the current value of the error signal. | |
Private Attributes | |
| void(eprop_readout_bsshslm_2020::* | compute_error_signal )() |
| Compute the error signal based on a loss function. | |
| Parameters_ | P_ |
| Structure of parameters. | |
| State_ | S_ |
| Structure of state variables. | |
| Variables_ | V_ |
| Structure of internal variables. | |
| Buffers_ | B_ |
| Structure of buffers. | |
Static Private Attributes | |
| static const size_t | MIN_RATE_RECEPTOR = 1 |
| Minimal spike receptor type. | |
| static RecordablesMap< eprop_readout_bsshslm_2020 > | recordablesMap_ |
| Map storing a static set of recordables. | |
Friends | |
| class | RecordablesMap< eprop_readout_bsshslm_2020 > |
| Map for storing a static set of recordables. | |
| class | UniversalDataLogger< eprop_readout_bsshslm_2020 > |
| Logger for universal data supporting the data logging request / reply mechanism. Populated with a recordables map. | |
Additional Inherited Members | |
Public Attributes inherited from nest::Node | |
| DeprecationWarning | deprecation_warning |
| Member of DeprecationWarning class to be used by models if parameters are deprecated. | |
Protected Member Functions inherited from nest::EpropArchivingNodeReadout< true > | |
| long | model_dependent_history_shift_ () const override |
| Returns the correct shift for history depending on whether it is a normal or a bsshslm_2020 model. | |
Protected Member Functions inherited from nest::Node | |
| virtual void | init_state_ () |
| Configure state variables depending on runtime information. | |
| virtual void | set_initialized_ () |
| Model & | get_model_ () const |
| void | set_frozen_ (bool frozen) |
| Mark node as frozen. | |
| template<typename ConcreteNode > | |
| const ConcreteNode & | downcast (const Node &) |
| Auxiliary function to downcast a Node to a concrete class derived from Node. | |
Protected Attributes inherited from nest::EpropArchivingNode< HistEntryEpropReadout > | |
| size_t | eprop_indegree_ |
| Number of incoming eprop synapses. | |
| double | eprop_isi_trace_cutoff_ |
| Time interval from the previous spike until the cutoff of e-prop update computation between two spikes (ms). | |
| std::vector< HistEntryEpropUpdate > | update_history_ |
| History of updates still needed by at least one synapse. | |
| std::vector< HistEntryEpropReadout > | eprop_history_ |
| History of dynamic variables needed for e-prop plasticity. | |
| const long | offset_gen_ |
| Offset since generator signals start from time step 1. | |
| const long | delay_in_rec_ |
| Transmission delay from input to recurrent neurons. | |
| const long | delay_rec_out_ |
| Transmission delay from recurrent to output neurons. | |
| const long | delay_out_norm_ |
| Transmission delay between output neurons for normalization. | |
| const long | delay_out_rec_ |
| Transmission delay from output neurons to recurrent neurons. | |
Protected Attributes inherited from nest::FlushEventMechanism | |
| double | flush_event_send_interval_ |
| Interval since previous event after which a flush event is sent (ms). | |
| long | flush_event_send_interval_steps_ |
| Interval since previous event after which a flush event is sent (steps). | |
| long | last_event_time_ |
| Time of last spike or flush event (steps). | |
Class implementing a readout neuron model for e-prop plasticity.
Class implementing a current-based leaky integrate readout neuron model with delta-shaped postsynaptic currents for e-prop plasticity according to Bellec et al. (2020).
|
private |
| nest::eprop_readout_bsshslm_2020::eprop_readout_bsshslm_2020 | ( | ) |
Default constructor.
References recordablesMap_.
| nest::eprop_readout_bsshslm_2020::eprop_readout_bsshslm_2020 | ( | const eprop_readout_bsshslm_2020 & | n | ) |
Copy constructor.
|
private |
Compute the error signal based on the cross-entropy loss.
References B_, nest::eprop_readout_bsshslm_2020::Parameters_::E_L_, nest::eprop_readout_bsshslm_2020::State_::error_signal_, nest::eprop_readout_bsshslm_2020::Buffers_::normalization_rate_, P_, nest::eprop_readout_bsshslm_2020::State_::readout_signal_, nest::eprop_readout_bsshslm_2020::State_::readout_signal_unnorm_, S_, nest::eprop_readout_bsshslm_2020::State_::target_signal_, and nest::eprop_readout_bsshslm_2020::State_::v_m_.
Referenced by pre_run_hook().
|
private |
Compute the error signal based on the mean-squared error loss.
References nest::eprop_readout_bsshslm_2020::Parameters_::E_L_, nest::eprop_readout_bsshslm_2020::State_::error_signal_, P_, nest::eprop_readout_bsshslm_2020::State_::readout_signal_, nest::eprop_readout_bsshslm_2020::State_::readout_signal_unnorm_, S_, nest::eprop_readout_bsshslm_2020::State_::target_signal_, and nest::eprop_readout_bsshslm_2020::State_::v_m_.
Referenced by pre_run_hook().
|
overrideprivatevirtual |
Compute gradient change for eprop synapses.
This method is called from an eprop synapse on the eprop target neuron. It updates various parameters related to e-prop plasticity according to Bellec et al. (2020).
| presyn_isis | [in, out] Vector of inter-spike intervals. |
| t_previous_update | [in] Time of the last update. |
| t_previous_trigger_spike | [in] Time of the last trigger spike. |
| kappa | [in] Decay factor for the eligibility trace. |
| average_gradient | [in] Boolean flag determining whether to compute an average of the gradients over the given period. |
Reimplemented from nest::Node.
References nest::EpropArchivingNode< HistEntryEpropReadout >::get_eprop_history(), nest::SimulationManager::get_eprop_learning_window(), nest::Time::get_steps(), nest::kernel(), nest::eprop_readout_bsshslm_2020::Variables_::P_v_m_, nest::eprop_readout_bsshslm_2020::Variables_::P_z_in_, nest::EpropArchivingNode< HistEntryEpropReadout >::require_eprop_history_entry(), nest::KernelManager::simulation_manager, and V_.
|
inlineprivate |
Get the current value of the error signal.
References nest::eprop_readout_bsshslm_2020::State_::error_signal_, and S_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineprivate |
Get the current value of the normalized readout signal.
References nest::eprop_readout_bsshslm_2020::State_::readout_signal_, and S_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineprivate |
Get the current value of the unnormalized readout signal.
References nest::eprop_readout_bsshslm_2020::State_::readout_signal_unnorm_, and S_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineoverrideprivatevirtual |
Retrieves the temporal shift of the signal.
Retrieves the number of steps the time-point of the signal has to be shifted to place it at the correct location in the e-prop-related histories.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::EpropArchivingNode< HistEntryEpropReadout >::delay_in_rec_, nest::EpropArchivingNode< HistEntryEpropReadout >::delay_rec_out_, and nest::EpropArchivingNode< HistEntryEpropReadout >::offset_gen_.
Referenced by update().
|
inlineoverridevirtual |
Export properties of the node by setting entries in the status dictionary.
| d | Dictionary. |
Implements nest::Node.
References nest::eprop_readout_bsshslm_2020::Parameters_::get(), nest::eprop_readout_bsshslm_2020::State_::get(), nest::EpropArchivingNodeReadout< hist_shift_required >::get_status(), P_, READOUT_SIG, nest::names::readout_signal(), nest::names::receptor_types(), nest::names::recordables(), recordablesMap_, S_, TARGET_SIG, and nest::names::target_signal().
|
inlineprivate |
Get the current value of the target signal.
References S_, and nest::eprop_readout_bsshslm_2020::State_::target_signal_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
inlineprivate |
Get the current value of the membrane voltage.
References nest::eprop_readout_bsshslm_2020::Parameters_::E_L_, P_, S_, and nest::eprop_readout_bsshslm_2020::State_::v_m_.
Referenced by nest::RecordablesMap< HostNode >::create().
|
virtual |
Handler for conductance events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handler for current events.
| UnexpectedEvent |
Reimplemented from nest::Node.
References nest::RingBuffer::add_value(), B_, nest::eprop_readout_bsshslm_2020::Buffers_::currents_, and nest::kernel().
|
virtual |
Handler for current events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for universal data logging request.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handler for universal data logging request.
| UnexpectedEvent |
Reimplemented from nest::Node.
References B_, and nest::eprop_readout_bsshslm_2020::Buffers_::logger_.
|
virtual |
Handler for universal data logging request.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handler for delay rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
References B_, nest::eprop_readout_bsshslm_2020::Buffers_::normalization_rate_, READOUT_SIG, S_, SUP_RATE_RECEPTOR, TARGET_SIG, and nest::eprop_readout_bsshslm_2020::State_::target_signal_.
|
virtual |
Handler for delay rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for DoubleData events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for gap junction events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for rate neuron events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for learning signal connection events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for rate events.
| UnexpectedEvent |
Reimplemented from nest::Node.
|
virtual |
Handler for slow inward current events (SICEvents).
| UnexpectedEvent |
Reimplemented from nest::Node.
|
overridevirtual |
Handle incoming spike events.
Default implementation of event handlers just throws an UnexpectedEvent exception.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept spike events.
| UnexpectedEvent | This is the default event to throw. |
Reimplemented from nest::Node.
References nest::RingBuffer::add_value(), B_, nest::kernel(), and nest::eprop_readout_bsshslm_2020::Buffers_::spikes_.
|
virtual |
Handle incoming spike events.
Default implementation of event handlers just throws an UnexpectedEvent exception.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept spike events.
| UnexpectedEvent | This is the default event to throw. |
Reimplemented from nest::Node.
|
virtual |
Handle incoming weight recording events.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept weight recording events.
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Reimplemented from nest::Node.
References nest::Node::get_name().
|
virtual |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Reimplemented from nest::Node.
References B_, nest::Node::get_name(), nest::eprop_readout_bsshslm_2020::Buffers_::logger_, and recordablesMap_.
|
virtual |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Reimplemented from nest::Node.
References nest::Node::get_name(), nest::ModelManager::get_node_model_id(), nest::kernel(), nest::KernelManager::model_manager, SUP_RATE_RECEPTOR, and TARGET_SIG.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Reimplemented from nest::Node.
|
virtual |
Check if the node can handle a particular event and receptor type.
This function is called upon connection setup by send_test_event().
handles_test_event() function is used to verify that the receiver can handle the event. It can also be used by the receiver to return information to the sender in form of the returned port. The default implementation throws an IllegalConnection exception. Any node class should define handles_test_event() functions for all those event types it can handle.
See Kunkel et al, Front Neuroinform 8:78 (2014), Sec 3.
| IllegalConnection |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Check if the node can handle a particular event and receptor type.
This function is called upon connection setup by send_test_event().
handles_test_event() function is used to verify that the receiver can handle the event. It can also be used by the receiver to return information to the sender in form of the returned port. The default implementation throws an IllegalConnection exception. Any node class should define handles_test_event() functions for all those event types it can handle.
See Kunkel et al, Front Neuroinform 8:78 (2014), Sec 3.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_name().
|
virtual |
Reimplemented from nest::Node.
|
overrideprivatevirtual |
Configure persistent internal data structures.
Let node configure persistent internal data structures, such as input buffers or ODE solvers, to runtime information prior to first simulation.
Reimplemented from nest::Node.
References B_, nest::RingBuffer::clear(), nest::eprop_readout_bsshslm_2020::Buffers_::currents_, nest::eprop_readout_bsshslm_2020::Buffers_::logger_, nest::eprop_readout_bsshslm_2020::Buffers_::normalization_rate_, and nest::eprop_readout_bsshslm_2020::Buffers_::spikes_.
|
inlineoverrideprivatevirtual |
Checks if the node is part of the recurrent network and thus not a readout neuron.
| IllegalConnection |
Reimplemented from nest::Node.
|
overrideprivatevirtual |
Re-calculate dependent parameters of the node.
This function is called each time a simulation is begun/resumed. It must re-calculate all internal Variables of the node required for spike handling or updating the node.
Implements nest::Node.
References B_, nest::eprop_readout_bsshslm_2020::Parameters_::C_m_, compute_error_signal, compute_error_signal_cross_entropy(), compute_error_signal_mean_squared_error(), nest::Time::get_ms(), nest::Time::get_resolution(), nest::eprop_readout_bsshslm_2020::Buffers_::logger_, nest::eprop_readout_bsshslm_2020::Parameters_::loss_, P_, nest::eprop_readout_bsshslm_2020::Variables_::P_i_in_, nest::eprop_readout_bsshslm_2020::Variables_::P_v_m_, nest::eprop_readout_bsshslm_2020::Variables_::P_z_in_, nest::eprop_readout_bsshslm_2020::Parameters_::regular_spike_arrival_, nest::eprop_readout_bsshslm_2020::Variables_::signal_to_other_readouts_, nest::eprop_readout_bsshslm_2020::Parameters_::tau_m_, and V_.
|
inlineoverridevirtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
virtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
virtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
virtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
virtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Required to check if source node may send a LearningSignalConnectionEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
virtual |
Required to check if source node may send a LearningSignalConnectionEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
virtual |
Required to check if source node may send a SICEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Change properties of the node according to the entries in the dictionary.
| d | Dictionary with named parameter settings. |
Implements nest::Node.
References P_, S_, nest::eprop_readout_bsshslm_2020::State_::set(), nest::eprop_readout_bsshslm_2020::Parameters_::set(), and nest::EpropArchivingNodeReadout< hist_shift_required >::set_status().
|
overrideprivatevirtual |
Advance the state of the node in time through the given interval.
This method advances the state of the node through the interval (origin+from, origin+to], which is at most min_delay long.
origin+from.origin+to.Each step between from and to corresponds to one simulation timestep (nest.resolution).
If events are emitted, they have time stamps in the interval T+from+1 .. T+to.
| origin | network time at beginning of time slice |
| from | initial step inside time slice |
| to | post-final step inside time slice |
Implements nest::Node.
References nest::EpropArchivingNodeReadout< true >::append_new_eprop_history_entry(), B_, compute_error_signal, nest::KernelManager::connection_manager, nest::eprop_readout_bsshslm_2020::Buffers_::currents_, nest::EpropArchivingNode< HistEntryEpropReadout >::delay_out_norm_, nest::EpropArchivingNode< HistEntryEpropReadout >::erase_used_eprop_history(), nest::eprop_readout_bsshslm_2020::State_::error_signal_, nest::KernelManager::event_delivery_manager, nest::SimulationManager::get_eprop_learning_window(), nest::SimulationManager::get_eprop_reset_neurons_on_update(), nest::SimulationManager::get_eprop_update_interval(), nest::ConnectionManager::get_min_delay(), get_shift(), nest::Time::get_steps(), nest::RingBuffer::get_value(), nest::eprop_readout_bsshslm_2020::Parameters_::I_e_, nest::eprop_readout_bsshslm_2020::State_::i_in_, nest::kernel(), nest::eprop_readout_bsshslm_2020::Buffers_::logger_, nest::eprop_readout_bsshslm_2020::Buffers_::normalization_rate_, P_, nest::eprop_readout_bsshslm_2020::Variables_::P_i_in_, nest::eprop_readout_bsshslm_2020::Variables_::P_v_m_, nest::eprop_readout_bsshslm_2020::Variables_::P_z_in_, nest::eprop_readout_bsshslm_2020::State_::readout_signal_, nest::eprop_readout_bsshslm_2020::State_::readout_signal_unnorm_, S_, nest::EventDeliveryManager::send_secondary(), nest::DataSecondaryEvent< DataType, Subclass >::set_coeffarray(), nest::eprop_readout_bsshslm_2020::Variables_::signal_to_other_readouts_, nest::KernelManager::simulation_manager, nest::eprop_readout_bsshslm_2020::Buffers_::spikes_, nest::eprop_readout_bsshslm_2020::State_::target_signal_, V_, nest::eprop_readout_bsshslm_2020::State_::v_m_, nest::eprop_readout_bsshslm_2020::Parameters_::V_min_, nest::EpropArchivingNodeReadout< true >::write_error_signal_to_history(), and nest::eprop_readout_bsshslm_2020::State_::z_in_.
|
friend |
Map for storing a static set of recordables.
|
friend |
Logger for universal data supporting the data logging request / reply mechanism. Populated with a recordables map.
|
private |
Structure of buffers.
Referenced by compute_error_signal_cross_entropy(), handle(), handle(), handle(), handle(), handles_test_event(), init_buffers_(), pre_run_hook(), and update().
|
private |
Compute the error signal based on a loss function.
Referenced by pre_run_hook(), and update().
|
staticprivate |
Minimal spike receptor type.
Start with 1 to forbid port 0 and avoid accidental creation of connections with no receptor type set.
|
private |
Structure of parameters.
Referenced by compute_error_signal_cross_entropy(), compute_error_signal_mean_squared_error(), get_status(), get_v_m_(), pre_run_hook(), set_status(), and update().
|
staticprivate |
Map storing a static set of recordables.
Referenced by eprop_readout_bsshslm_2020(), get_status(), and handles_test_event().
|
private |
Structure of state variables.
Referenced by compute_error_signal_cross_entropy(), compute_error_signal_mean_squared_error(), get_error_signal_(), get_readout_signal_(), get_readout_signal_unnorm_(), get_status(), get_target_signal_(), get_v_m_(), handle(), set_status(), and update().
|
private |
Structure of internal variables.
Referenced by compute_gradient(), pre_run_hook(), and update().