23#ifndef WEIGHT_OPTIMIZER_H
24#define WEIGHT_OPTIMIZER_H
144class WeightOptimizer;
262 const size_t idx_current_update,
263 const double gradient,
332 return "gradient_descent";
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Base class implementing an Adam weight optimizer model.
Definition weight_optimizer.h:340
double beta_2_power_
Power of beta_2 factor.
Definition weight_optimizer.h:367
double optimize_(const WeightOptimizerCommonProperties &cp, double weight, size_t current_opt_step) override
Perform specific optimization.
Definition weight_optimizer.cpp:269
double m_
First moment estimate variable.
Definition weight_optimizer.h:358
WeightOptimizerAdam()
Default constructor.
Definition weight_optimizer.cpp:242
void get_status(Dictionary &d) const override
Get parameter dictionary.
Definition weight_optimizer.cpp:252
void set_status(const Dictionary &d) override
Update values in parameter dictionary.
Definition weight_optimizer.cpp:260
double beta_1_power_
Power of beta_1 factor.
Definition weight_optimizer.h:364
WeightOptimizerAdam & operator=(const WeightOptimizerAdam &)=delete
Assignment operator.
double v_
Second moment estimate variable.
Definition weight_optimizer.h:361
WeightOptimizerAdam(const WeightOptimizerAdam &)=default
Copy constructor.
Class implementing common properties of an Adam weight optimizer model.
Definition weight_optimizer.h:374
double epsilon_
Small constant for numerical stability.
Definition weight_optimizer.h:408
double beta_1_
Exponential decay rate for first moment estimate.
Definition weight_optimizer.h:402
double beta_2_
Exponential decay rate for second moment estimate.
Definition weight_optimizer.h:405
std::string get_name() const override
Get optimizer name.
Definition weight_optimizer.h:395
void set_status(const Dictionary &d) override
Update parameters in parameter dictionary.
Definition weight_optimizer.cpp:218
WeightOptimizer * get_optimizer() const override
Get optimizer.
Definition weight_optimizer.cpp:202
void get_status(Dictionary &d) const override
Get parameter dictionary.
Definition weight_optimizer.cpp:208
WeightOptimizerCommonPropertiesAdam()
Default constructor.
Definition weight_optimizer.cpp:186
WeightOptimizerCommonPropertiesAdam(const WeightOptimizerCommonPropertiesAdam &)=default
Copy constructor.
WeightOptimizerCommonProperties * clone() const override
Clone constructor.
Definition weight_optimizer.cpp:196
WeightOptimizerCommonPropertiesAdam & operator=(const WeightOptimizerCommonPropertiesAdam &)=delete
Assignment operator.
Class implementing common properties of a gradient descent weight optimizer model.
Definition weight_optimizer.h:311
WeightOptimizerCommonProperties * clone() const override
Clone constructor.
Definition weight_optimizer.cpp:162
WeightOptimizer * get_optimizer() const override
Get optimizer.
Definition weight_optimizer.cpp:168
WeightOptimizerCommonPropertiesGradientDescent()
Default constructor.
Definition weight_optimizer.cpp:156
std::string get_name() const override
Get optimizer name.
Definition weight_optimizer.h:330
WeightOptimizerCommonPropertiesGradientDescent & operator=(const WeightOptimizerCommonPropertiesGradientDescent &)=delete
Assignment operator.
WeightOptimizerCommonPropertiesGradientDescent(const WeightOptimizerCommonPropertiesGradientDescent &)=default
Copy constructor.
Base class implementing common properties of a weight optimizer model.
Definition weight_optimizer.h:154
double eta_
Common learning rate for all synapses.
Definition weight_optimizer.h:204
double Wmin_
Minimal value for synaptic weight.
Definition weight_optimizer.h:220
WeightOptimizerCommonProperties()
Default constructor.
Definition weight_optimizer.cpp:34
virtual WeightOptimizer * get_optimizer() const =0
Get optimizer.
double Wmax_
Maximal value for synaptic weight.
Definition weight_optimizer.h:223
double get_Wmin() const
Get minimal value for synaptic weight.
Definition weight_optimizer.h:184
virtual ~WeightOptimizerCommonProperties()
Destructor.
Definition weight_optimizer.h:160
long eta_change_count_
Count of learning rate changes so far in the simulation to identify the first change.
Definition weight_optimizer.h:217
virtual std::string get_name() const =0
Get optimizer name.
size_t batch_size_
Size of an optimization batch.
Definition weight_optimizer.h:201
WeightOptimizer & operator=(const WeightOptimizer &)=delete
Assignment operator.
virtual WeightOptimizerCommonProperties * clone() const =0
Clone constructor.
virtual void set_status(const Dictionary &d)
Update parameters in parameter dictionary.
Definition weight_optimizer.cpp:68
double eta_first_change_
First non-default learning rate.
Definition weight_optimizer.h:214
double get_Wmax() const
Get maximal value for synaptic weight.
Definition weight_optimizer.h:191
virtual void get_status(Dictionary &d) const
Get parameter dictionary.
Definition weight_optimizer.cpp:57
bool optimize_each_step_
If true, optimize each step, else once per spike.
Definition weight_optimizer.h:226
Base class implementing a gradient descent weight optimizer model.
Definition weight_optimizer.h:292
WeightOptimizerGradientDescent(const WeightOptimizerGradientDescent &)=default
Copy constructor.
WeightOptimizerGradientDescent()
Default constructor.
Definition weight_optimizer.cpp:173
WeightOptimizerGradientDescent & operator=(const WeightOptimizerGradientDescent &)=delete
Assignment operator.
double optimize_(const WeightOptimizerCommonProperties &cp, double weight, size_t current_opt_step) override
Perform specific optimization.
Definition weight_optimizer.cpp:179
Base class implementing a weight optimizer model.
Definition weight_optimizer.h:238
virtual void set_status(const Dictionary &d)
Update values in parameter dictionary.
Definition weight_optimizer.cpp:123
double eta_current_
Synapse-specific learning rate when the history for its upcoming weight update was archived.
Definition weight_optimizer.h:282
double optimized_weight(const WeightOptimizerCommonProperties &cp, const size_t idx_current_update, const double gradient, double weight)
Return optimized weight based on current weight.
Definition weight_optimizer.cpp:128
WeightOptimizer(const WeightOptimizer &)=default
Copy constructor.
virtual void get_status(Dictionary &d) const
Get parameter dictionary.
Definition weight_optimizer.cpp:118
WeightOptimizer & operator=(const WeightOptimizer &)=delete
Assignment operator.
double cumulative_gradient_
Cumulative gradient over the current batch.
Definition weight_optimizer.h:271
virtual double optimize_(const WeightOptimizerCommonProperties &cp, double weight, size_t current_opt_step)=0
Perform specific optimization.
long n_optimize_
Number of optimizations.
Definition weight_optimizer.h:285
size_t optimization_step_
Current optimization step, whereby optimization happens every batch_size_ steps.
Definition weight_optimizer.h:274
WeightOptimizer()
Default constructor.
Definition weight_optimizer.cpp:109
virtual ~WeightOptimizer()
Destructor.
Definition weight_optimizer.h:244
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33