The conjugate directions are built using a sequential procedure, given by the formula:
where
is the new search direction, which is conjugate to the old
,
and
are the new and the previous computed gradients with respect to the function's parameters. The
is a coefficient which can be computed in different ways. There are three forms:
After choosing the direction, the algorithm seeks the minimum along this line. This is performed, in practice, using a line-search procedure. You can install any of the available line-search procedures for the training algoritm. Please refer to (gnn_line_search) for further details.
Defines | |
| #define | GNN_CONJUGATE_GRADIENT_TOL 0.0001 |
| Default precision for line search procedures. | |
| #define | GNN_CONJUGATE_GRADIENT_STEP 0.1 |
| Default bracketing step taken by the line search procedures. | |
| #define | GNN_CONJUGATE_GRADIENT_RESTART 100 |
| Default restart. | |
| #define | GNN_CONJUGATE_GRADIENT_ALPHA gnn_line_search_brent |
| Default line search procedure. | |
| #define | GNN_CONJUGATE_GRADIENT_BETA gnn_conjugate_gradient_polak_ribiere |
Default
. | |
Typedefs | |
| typedef double(* | gnn_conjugate_gradient_beta )(gnn_trainer *trainer) |
Type for
evaluation procedures. | |
| typedef _gnn_conjugate_gradient | gnn_conjugate_gradient |
| Conjugate gradients trainer structure. | |
Functions | |
| int | gnn_conjugate_gradient_reset (gnn_trainer *trainer) |
| The trainer's "reset" implementation. | |
| void | gnn_conjugate_gradient_destroy (gnn_trainer *trainer) |
| The trainers "destroy" implementation. | |
| gnn_trainer * | gnn_conjugate_gradient_new (gnn_node *node, gnn_criterion *crit, gnn_dataset *data) |
| Creates a new conjugate gradient descent trainer. | |
| double | gnn_conjugate_gradient_polak_ribiere (gnn_trainer *trainer) |
The Polak-Ribière form for the
coefficient. | |
| double | gnn_conjugate_gradient_hestenes_stiefel (gnn_trainer *trainer) |
The Hestenes-Stiefel form for the
coefficient. | |
| double | gnn_conjugate_gradient_fletcher_reeves (gnn_trainer *trainer) |
The Fletcher-Reeves form for the
coefficient. | |
| int | gnn_conjugate_gradient_set_tol (gnn_trainer *trainer, double tol) |
| Sets the precision tolerance for the line search procedure. | |
| double | gnn_conjugate_gradient_get_tol (gnn_trainer *trainer) |
| Gets the tolerance for the line search procedure. | |
| int | gnn_conjugate_gradient_set_step (gnn_trainer *trainer, double step) |
| Sets the initial step for the interval bracketing procedure. | |
| double | gnn_conjugate_gradient_get_step (gnn_trainer *trainer) |
| Gets the initial step for the interval bracketing procedure. | |
| int | gnn_conjugate_gradient_set_restart (gnn_trainer *trainer, size_t restart) |
| Sets the number of iterations before restarting. | |
| size_t | gnn_conjugate_gradient_get_restart (gnn_trainer *trainer) |
| Gets the number of iterations before reinitializing the direction. | |
| int | gnn_conjugate_gradient_set_line_search (gnn_trainer *trainer, gnn_line_search_type lsearch) |
| Sets the line search procedure. | |
| gnn_line_search_type | gnn_conjugate_gradient_get_alpha (gnn_trainer *trainer) |
| Gets the installed line search procedure. | |
| int | gnn_conjugate_gradient_set_beta (gnn_trainer *trainer, gnn_conjugate_gradient_beta beta) |
Sets the form of the
coefficient. | |
| gnn_conjugate_gradient_beta | gnn_conjugate_gradient_get_beta (gnn_trainer *trainer) |
Gets the
evaluation function. | |
|
|
This is the default line search procedure used by the conjugate gradients algorithm. Definition at line 77 of file gnn_conjugate_gradient.h. |
|
|
This defines the default method used for the Definition at line 86 of file gnn_conjugate_gradient.h. |
|
|
This constant defines the default number of iterations that the conjugate gradients algorithm takes before restarting the algorithm. Definition at line 68 of file gnn_conjugate_gradient.h. |
|
|
This constant defines the initial step taken by the bracketing algorithm to search the minimum along the line. Definition at line 59 of file gnn_conjugate_gradient.h. |
|
|
This constant defines the tolerance for the line search procedure used by the conjugate gradients algorithm. Definition at line 50 of file gnn_conjugate_gradient.h. |
|
|
This type extends the basic gnn_trainer : Trainers for Models. structure for the conjugate gradients trainer. Definition at line 104 of file gnn_conjugate_gradient.h. |
|
|
This type defines the form of the procedures for computing the Definition at line 95 of file gnn_conjugate_gradient.h. |
|
|
Definition at line 209 of file gnn_conjugate_gradient.c. |
|
|
This function returns the Fletcher-Reeves form of the
where
Definition at line 404 of file gnn_conjugate_gradient.c. |
|
|
Definition at line 613 of file gnn_conjugate_gradient.c. |
|
|
This function returns a pointer to the installed
Definition at line 671 of file gnn_conjugate_gradient.c. |
|
|
This function returns the number of iterations executed by the conjugate gradients trainer before reinitializing the search direction.
Definition at line 556 of file gnn_conjugate_gradient.c. |
|
|
Definition at line 505 of file gnn_conjugate_gradient.c. |
|
|
Definition at line 457 of file gnn_conjugate_gradient.c. |
|
|
This function returns the Hestenes-Stiefel form of the
where
Definition at line 368 of file gnn_conjugate_gradient.c. |
|
||||||||||||||||
|
This function creates a new conjugate gradients trainer (gnn_conjugate_gradient : Conjugate Gradient Descent Algorithm.).
Definition at line 251 of file gnn_conjugate_gradient.c. |
|
|
This function returns the Polak-Ribière form of the
where
Definition at line 333 of file gnn_conjugate_gradient.c. |
|
|
Definition at line 103 of file gnn_conjugate_gradient.c. |
|
||||||||||||
|
This function sets a new form for evaluating the
gnn_trainer *trainer; trainer = gnn_conjugate_gradient_new (node, crit, data); // use the Fletcher-Reeves form gnn_conjugate_gradient_set_beta (trainer, gnn_conjugate_gradient_fletcher_reeves);
Definition at line 645 of file gnn_conjugate_gradient.c. |
|
||||||||||||
|
This function sets a new line search procedure used by the conjugate gradients trainer.
gnn_trainer *trainer; trainer = gnn_conjugate_gradient_new (node, crit, data); // use the Golden-Section line search gnn_conjugate_gradient_set_line_search (trainer, gnn_line_search_golden); Please refer to (Line Search Procedures for Nodes.) for the available line search procedures.
Definition at line 590 of file gnn_conjugate_gradient.c. |
|
||||||||||||
|
Definition at line 525 of file gnn_conjugate_gradient.c. |
|
||||||||||||
|
Definition at line 477 of file gnn_conjugate_gradient.c. |
|
||||||||||||
|
Definition at line 429 of file gnn_conjugate_gradient.c. |
1.2.18