OpenNN
2.2
Open Neural Networks Library
|
#include <conjugate_gradient.h>
Classes | |
struct | ConjugateGradientResults |
Public Types | |
enum | TrainingDirectionMethod { PR, FR } |
Private Attributes | |
TrainingDirectionMethod | training_direction_method |
TrainingRateAlgorithm | training_rate_algorithm |
double | warning_parameters_norm |
double | warning_gradient_norm |
double | warning_training_rate |
double | error_parameters_norm |
double | error_gradient_norm |
double | error_training_rate |
double | minimum_parameters_increment_norm |
double | minimum_performance_increase |
double | performance_goal |
double | gradient_norm_goal |
size_t | maximum_generalization_performance_decreases |
size_t | maximum_iterations_number |
double | maximum_time |
bool | reserve_parameters_history |
bool | reserve_parameters_norm_history |
bool | reserve_performance_history |
bool | reserve_gradient_history |
bool | reserve_gradient_norm_history |
bool | reserve_training_direction_history |
bool | reserve_training_rate_history |
bool | reserve_elapsed_time_history |
bool | reserve_generalization_performance_history |
Additional Inherited Members | |
Protected Attributes inherited from OpenNN::TrainingAlgorithm | |
PerformanceFunctional * | performance_functional_pointer |
size_t | display_period |
size_t | save_period |
std::string | neural_network_file_name |
bool | display |
This concrete class represents a conjugate gradient training algorithm for a performance functional of a neural network.
Definition at line 47 of file conjugate_gradient.h.
|
explicit |
Default constructor. It creates a conjugate gradient training algorithm object not associated to any performance functional object. It also initializes the class members to their default values.
Definition at line 27 of file conjugate_gradient.cpp.
|
explicit |
General constructor. It creates a conjugate gradient training algorithm associated to a performance functional object. It also initializes the rest of class members to their default values.
new_performance_functional_pointer | Pointer to a performance functional object. |
Definition at line 40 of file conjugate_gradient.cpp.
|
explicit |
XML constructor. It creates a conjugate gradient training algorithm not associated to any performance functional object. It also loads the class members from a XML document.
conjugate_gradient_document | TinyXML document with the members of a conjugate gradient object. |
Definition at line 56 of file conjugate_gradient.cpp.
double OpenNN::ConjugateGradient::calculate_FR_parameter | ( | const Vector< double > & | old_gradient, |
const Vector< double > & | gradient | ||
) | const |
Returns the Fletcher-Reeves parameter used to calculate the training direction.
old_gradient | Previous objective function gradient. |
gradient | Current objective function gradient. |
Definition at line 1059 of file conjugate_gradient.cpp.
Vector< double > OpenNN::ConjugateGradient::calculate_FR_training_direction | ( | const Vector< double > & | old_gradient, |
const Vector< double > & | gradient, | ||
const Vector< double > & | old_training_direction | ||
) | const |
Returns the training direction using the Fletcher-Reeves update.
old_gradient | Previous objective function gradient. |
gradient | Current objective function gradient. |
old_training_direction | Previous training direction vector. |
Definition at line 1302 of file conjugate_gradient.cpp.
Vector< double > OpenNN::ConjugateGradient::calculate_gradient_descent_training_direction | ( | const Vector< double > & | gradient | ) | const |
Returns the gradient descent training direction, which is the negative of the normalized gradient.
gradient | Gradient vector. |
Definition at line 1476 of file conjugate_gradient.cpp.
double OpenNN::ConjugateGradient::calculate_PR_parameter | ( | const Vector< double > & | old_gradient, |
const Vector< double > & | gradient | ||
) | const |
Returns the Polak-Ribiere parameter used to calculate the training direction.
old_gradient | Previous objective function gradient. |
gradient | Current objective function gradient. |
Definition at line 1139 of file conjugate_gradient.cpp.
Vector< double > OpenNN::ConjugateGradient::calculate_PR_training_direction | ( | const Vector< double > & | old_gradient, |
const Vector< double > & | gradient, | ||
const Vector< double > & | old_training_direction | ||
) | const |
Returns the training direction using the Polak-Ribiere update.
old_gradient | Previous objective function gradient. |
gradient | Current objective function gradient. |
old_training_direction | Previous training direction vector. |
Definition at line 1225 of file conjugate_gradient.cpp.
Vector< double > OpenNN::ConjugateGradient::calculate_training_direction | ( | const Vector< double > & | old_gradient, |
const Vector< double > & | gradient, | ||
const Vector< double > & | old_training_direction | ||
) | const |
Returns the conjugate gradient training direction, which has been previously normalized.
old_gradient | Gradient vector in the previous iteration. |
gradient | Current gradient vector. |
old_training_direction | Training direction in the previous iteration. |
Definition at line 1379 of file conjugate_gradient.cpp.
|
virtual |
Deserializes the conjugate gradient object from a XML document of the TinyXML library.
document | TinyXML document containing the member data. |
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 2729 of file conjugate_gradient.cpp.
const double & OpenNN::ConjugateGradient::get_error_gradient_norm | ( | void | ) | const |
Returns the value for the norm of the gradient vector at wich an error message is written to the screen and the program exits.
Definition at line 186 of file conjugate_gradient.cpp.
const double & OpenNN::ConjugateGradient::get_error_training_rate | ( | void | ) | const |
Returns the training rate value at wich the line minimization algorithm is assumed to fail when bracketing a minimum.
Definition at line 197 of file conjugate_gradient.cpp.
const double & OpenNN::ConjugateGradient::get_gradient_norm_goal | ( | void | ) | const |
Returns the goal value for the norm of the objective function gradient. This is used as a stopping criterion when training a multilayer perceptron
Definition at line 239 of file conjugate_gradient.cpp.
const double & OpenNN::ConjugateGradient::get_performance_goal | ( | void | ) | const |
Returns the goal value for the performance. This is used as a stopping criterion when training a multilayer perceptron
Definition at line 228 of file conjugate_gradient.cpp.
|
virtual |
Trains a neural network with an associated performance functional according to the conjugate gradient algorithm. Training occurs according to the training operators, training parameters and stopping criteria.
Implements OpenNN::TrainingAlgorithm.
Definition at line 1770 of file conjugate_gradient.cpp.
|
virtual |
Sets the default values into a conjugate gradient object. Training operators:
Training parameters:
Stopping criteria:
User stuff:
Reserve:
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 504 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_display_period | ( | const size_t & | new_display_period | ) |
Sets a new number of iterations between the training showing progress.
new_display_period | Number of iterations between the training showing progress. |
Definition at line 1000 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_error_gradient_norm | ( | const double & | new_error_gradient_norm | ) |
Sets a new value for the gradient vector norm at which an error message is written to the screen and the program exits.
new_error_gradient_norm | Error norm of gradient vector value. |
Definition at line 679 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_error_parameters_norm | ( | const double & | new_error_parameters_norm | ) |
Sets a new value for the parameters vector norm at which an error message is written to the screen and the program exits.
new_error_parameters_norm | Error norm of parameters vector value. |
Definition at line 648 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_error_training_rate | ( | const double & | new_error_training_rate | ) |
Sets a new training rate value at wich a the line minimization algorithm is assumed to fail when bracketing a minimum.
new_error_training_rate | Error training rate value. |
Definition at line 710 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_gradient_norm_goal | ( | const double & | new_gradient_norm_goal | ) |
Sets a new the goal value for the norm of the objective function gradient. This is used as a stopping criterion when training a multilayer perceptron
new_gradient_norm_goal | Goal value for the norm of the objective function gradient. |
Definition at line 813 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_maximum_generalization_performance_decreases | ( | const size_t & | new_maximum_generalization_performance_decreases | ) |
Sets a new maximum number of generalization failures.
new_maximum_generalization_performance_decreases | Maximum number of iterations in which the generalization evalutation decreases. |
Definition at line 843 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_maximum_iterations_number | ( | const size_t & | new_maximum_iterations_number | ) |
Sets a maximum number of iterations for training.
new_maximum_iterations_number | Maximum number of iterations for training. |
Definition at line 854 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_maximum_time | ( | const double & | new_maximum_time | ) |
Sets a new maximum training time.
new_maximum_time | Maximum training time. |
Definition at line 865 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_minimum_parameters_increment_norm | ( | const double & | new_minimum_parameters_increment_norm | ) |
Sets a new value for the minimum parameters increment norm stopping criterion.
new_minimum_parameters_increment_norm | Value of norm of parameters increment norm used to stop training. |
Definition at line 740 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_minimum_performance_increase | ( | const double & | new_minimum_performance_increase | ) |
Sets a new minimum performance improvement during training.
new_minimum_performance_increase | Minimum improvement in the performance between two iterations. |
Definition at line 770 of file conjugate_gradient.cpp.
|
virtual |
Sets a pointer to a performance functional object to be associated to the conjugate gradient object. It also sets that performance functional to the training rate algorithm.
new_performance_functional_pointer | Pointer to a performance functional object. |
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 372 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_performance_goal | ( | const double & | new_performance_goal | ) |
Sets a new goal value for the performance. This is used as a stopping criterion when training a multilayer perceptron
new_performance_goal | Goal value for the performance. |
Definition at line 801 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_all_training_history | ( | const bool & | new_reserve_all_training_history | ) |
Makes the training history of all variables to reseved or not in memory when training.
new_reserve_all_training_history | True if all training history variables are to be reserved, false otherwise. |
Definition at line 443 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_elapsed_time_history | ( | const bool & | new_reserve_elapsed_time_history | ) |
Makes the elapsed time over the iterations to be reseved or not in memory. This is a vector.
new_reserve_elapsed_time_history | True if the elapsed time history vector is to be reserved, false otherwise. |
Definition at line 976 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_generalization_performance_history | ( | const bool & | new_reserve_generalization_performance_history | ) |
Makes the Generalization performance history to be reserved or not in memory. This is a vector.
new_reserve_generalization_performance_history | True if the Generalization performance history is to be reserved, false otherwise. |
Definition at line 988 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_gradient_history | ( | const bool & | new_reserve_gradient_history | ) |
Makes the gradient history vector of vectors to be reseved or not in memory.
new_reserve_gradient_history | True if the gradient history matrix is to be reserved, false otherwise. |
Definition at line 928 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_gradient_norm_history | ( | const bool & | new_reserve_gradient_norm_history | ) |
Makes the gradient norm history vector to be reseved or not in memory.
new_reserve_gradient_norm_history | True if the gradient norm history matrix is to be reserved, false otherwise. |
Definition at line 940 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_parameters_history | ( | const bool & | new_reserve_parameters_history | ) |
Makes the parameters history vector of vectors to be reseved or not in memory.
new_reserve_parameters_history | True if the parameters history vector of vectors is to be reserved, false otherwise. |
Definition at line 895 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_parameters_norm_history | ( | const bool & | new_reserve_parameters_norm_history | ) |
Makes the parameters norm history vector to be reseved or not in memory.
new_reserve_parameters_norm_history | True if the parameters norm history vector is to be reserved, false otherwise. |
Definition at line 906 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_performance_history | ( | const bool & | new_reserve_performance_history | ) |
Makes the performance history vector to be reseved or not in memory.
new_reserve_performance_history | True if the performance history vector is to be reserved, false otherwise. |
Definition at line 917 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_training_direction_history | ( | const bool & | new_reserve_training_direction_history | ) |
Makes the training direction history vector of vectors to be reseved or not in memory.
new_reserve_training_direction_history | True if the training direction history matrix is to be reserved, false otherwise. |
Definition at line 952 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_reserve_training_rate_history | ( | const bool & | new_reserve_training_rate_history | ) |
Makes the training rate history vector to be reseved or not in memory.
new_reserve_training_rate_history | True if the training rate history vector is to be reserved, false otherwise. |
Definition at line 964 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_save_period | ( | const size_t & | new_save_period | ) |
Sets a new number of iterations between the training saving progress.
new_save_period | Number of iterations between the training saving progress. |
Definition at line 1029 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_training_direction_method | ( | const TrainingDirectionMethod & | new_training_direction_method | ) |
Sets a new training direction method to be used for training.
new_training_direction_method | Conjugate gradient training direction method. |
Definition at line 386 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_training_direction_method | ( | const std::string & | new_training_direction_method_name | ) |
Sets a new conjugate gradient training direction from a string representation. Possible values are:
new_training_direction_method_name | String with the name of the training direction method. |
Definition at line 402 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_warning_gradient_norm | ( | const double & | new_warning_gradient_norm | ) |
Sets a new value for the gradient vector norm at which a warning message is written to the screen.
new_warning_gradient_norm | Warning norm of gradient vector value. |
Definition at line 588 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_warning_parameters_norm | ( | const double & | new_warning_parameters_norm | ) |
Sets a new value for the parameters vector norm at which a warning message is written to the screen.
new_warning_parameters_norm | Warning norm of parameters vector value. |
Definition at line 557 of file conjugate_gradient.cpp.
void OpenNN::ConjugateGradient::set_warning_training_rate | ( | const double & | new_warning_training_rate | ) |
Sets a new training rate value at wich a warning message is written to the screen during line minimization.
new_warning_training_rate | Warning training rate value. |
Definition at line 619 of file conjugate_gradient.cpp.
|
virtual |
Returns a default (empty) string matrix containing the members of the training algorithm object.
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 2187 of file conjugate_gradient.cpp.
|
virtual |
Serializes the conjugate gradient object into a XML document of the TinyXML library. See the OpenNN manual for more information about the format of this element.
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 2360 of file conjugate_gradient.cpp.
|
private |
Maximum number of iterations at which the generalization performance decreases. This is an early stopping method for improving generalization.
Definition at line 380 of file conjugate_gradient.h.