|
OpenNN
Open-source neural networks library
|
Abstract base class for training optimizers (Adam, SGD, Quasi-Newton, Levenberg-Marquardt). More...
#include <optimizer.h>
Classes | |
| struct | EpochStats |
| Aggregated per-epoch error and accuracy returned by training/evaluation passes. More... | |
Public Types | |
| enum class | StoppingCondition { None , MinimumLossDecrease , LossGoal , MaximumSelectionErrorIncreases , MaximumEpochsNumber , MaximumTime } |
| Reason that training was halted in the last call to train(). More... | |
Public Member Functions | |
| Optimizer (Loss *=nullptr) | |
| Constructs an optimizer optionally bound to a Loss instance. | |
| virtual | ~Optimizer ()=default |
| const Loss * | get_loss () const |
| bool | get_display () const |
| void | set (Loss *new_loss) |
| Binds the optimizer to a new Loss instance. | |
| virtual void | set_loss (Loss *new_loss) |
| Binds the optimizer to a new Loss instance (virtual hook for derived classes). | |
| virtual void | set_display (bool new_display) |
| Enables or disables console progress reporting during training. | |
| void | set_display_period (const Index new_display_period) |
| void | set_num_workers (int n) |
| int | get_num_workers () const |
| void | set_maximum_epochs (const Index new_maximum_epochs) |
| void | set_maximum_time (const float new_maximum_time) |
| void | set_loss_goal (const float new_loss_goal) |
| void | set_maximum_validation_failures (const Index new_maximum_validation_failures) |
| virtual TrainingResults | train ()=0 |
| Runs the training loop and returns the recorded results (must be implemented by subclasses). | |
| Index | get_maximum_batch_size () const |
| Largest batch size compatible with the dataset and configured memory budget. | |
| const string & | get_name () const |
| virtual void | print () const |
| Prints a human-readable description of the optimizer (no-op default). | |
| virtual void | from_JSON (const JsonDocument &) |
| Restores optimizer configuration from a JSON document. | |
| virtual void | to_JSON (JsonWriter &) const |
| Serializes the optimizer configuration to JSON. | |
| void | save (const filesystem::path &) const |
| Writes the current optimizer configuration to a JSON file at the given path. | |
| void | load (const filesystem::path &) |
| Loads the optimizer configuration from a JSON file at the given path. | |
Static Public Member Functions | |
| static float | get_elapsed_time (const time_t &beginning_time) |
| Returns seconds elapsed since the given start time. | |
Protected Member Functions | |
| void | set_names () |
| void | set_scaling () |
| void | set_unscaling () |
| bool | check_stopping_condition (TrainingResults &, Index epoch, float elapsed_time, float training_error, Index validation_failures) const |
| void | write_common_json (JsonWriter &) const |
| void | read_common_json (const Json *) |
| void | setup_device_training () |
| void | teardown_device_training () |
| void | prefetch_batch (Batch &batch, Index sample_count, int slot) |
| void | wait_prefetch (int slot) |
| void | record_batch_reuse (Batch &batch) |
| void | clear_batch_reuse_events () |
| void | sync_device () |
| bool | should_display (Index epoch) const |
| void | warn_dropped_samples (Index batch_size, Index samples_number, const char *context) const |
| EpochStats | train_epoch (bool tracks_accuracy, ForwardPropagation &forward_propagation, BackPropagation &back_propagation, ThreadSafeQueue< Batch * > &empty_queue, const vector< vector< Index > > &batches, const vector< Index > &input_feature_indices, const vector< Index > &decoder_feature_indices, const vector< Index > &target_feature_indices, const function< void(BackPropagation &)> &update, bool show_progress=true) |
| EpochStats | evaluate_epoch (bool tracks_accuracy, ForwardPropagation &forward_propagation, ThreadSafeQueue< Batch * > &empty_queue, const vector< vector< Index > > &batches, const vector< Index > &input_feature_indices, const vector< Index > &decoder_feature_indices, const vector< Index > &target_feature_indices) |
Static Protected Member Functions | |
| static void | clip_gradient_norm (Buffer &gradient, float max_norm) |
Protected Attributes | |
| Loss * | loss = nullptr |
| float | training_loss_goal = 0.0f |
| Index | maximum_validation_failures = numeric_limits<Index>::max() |
| Index | maximum_epochs = 10000 |
| float | maximum_time = 360000.0f |
| Index | display_period = 10 |
| bool | display = true |
| string | name |
| int | num_workers = 2 |
| cudaStream_t | memory_stream = nullptr |
| cudaEvent_t | batch_ready_event [2] = {nullptr, nullptr} |
| unordered_map< Batch *, cudaEvent_t > | batch_reuse_events |
| unordered_set< Batch * > | batch_reuse_recorded |
| Buffer | prefetch_fp32_staging {Device::CUDA} |
Abstract base class for training optimizers (Adam, SGD, Quasi-Newton, Levenberg-Marquardt).
|
strong |
Reason that training was halted in the last call to train().
| Enumerator | |
|---|---|
| None | |
| MinimumLossDecrease | |
| LossGoal | |
| MaximumSelectionErrorIncreases | |
| MaximumEpochsNumber | |
| MaximumTime | |
| opennn::Optimizer::Optimizer | ( | Loss * | = nullptr | ) |
Constructs an optimizer optionally bound to a Loss instance.
|
virtualdefault |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
virtual |
Restores optimizer configuration from a JSON document.
Reimplemented in opennn::AdaptiveMomentEstimation, opennn::LevenbergMarquardtAlgorithm, opennn::QuasiNewtonMethod, and opennn::StochasticGradientDescent.
|
inline |
|
static |
Returns seconds elapsed since the given start time.
|
inline |
| Index opennn::Optimizer::get_maximum_batch_size | ( | ) | const |
Largest batch size compatible with the dataset and configured memory budget.
|
inline |
|
inline |
| void opennn::Optimizer::load | ( | const filesystem::path & | ) |
Loads the optimizer configuration from a JSON file at the given path.
|
protected |
|
inlinevirtual |
Prints a human-readable description of the optimizer (no-op default).
|
protected |
|
protected |
| void opennn::Optimizer::save | ( | const filesystem::path & | ) | const |
Writes the current optimizer configuration to a JSON file at the given path.
|
inlinevirtual |
Enables or disables console progress reporting during training.
|
inline |
|
inlinevirtual |
Binds the optimizer to a new Loss instance (virtual hook for derived classes).
|
inline |
|
inline |
|
inline |
|
inline |
|
protected |
|
inline |
|
protected |
|
protected |
|
protected |
|
inlineprotected |
|
protected |
|
protected |
|
virtual |
Serializes the optimizer configuration to JSON.
Reimplemented in opennn::AdaptiveMomentEstimation, opennn::LevenbergMarquardtAlgorithm, opennn::QuasiNewtonMethod, and opennn::StochasticGradientDescent.
|
pure virtual |
Runs the training loop and returns the recorded results (must be implemented by subclasses).
Implemented in opennn::AdaptiveMomentEstimation, opennn::LevenbergMarquardtAlgorithm, opennn::QuasiNewtonMethod, and opennn::StochasticGradientDescent.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |