update on docs
This commit is contained in:
parent
86e539756b
commit
ddec148579
@ -25,34 +25,25 @@
|
||||
*/
|
||||
enum sgd_return_e
|
||||
{
|
||||
SGD_SUCCESS = 0,
|
||||
SGD_CONVERGENCE = 1,
|
||||
SGD_STOP, //2
|
||||
SGD_UNKNOWN_ERROR = -1024,
|
||||
// The variable size is negative
|
||||
SGD_INVILAD_VARIABLE_SIZE, //-1023
|
||||
// The maximal iteration times is negative.
|
||||
SGD_INVILAD_MAX_ITERATIONS, //-1022
|
||||
// The epsilon is negative.
|
||||
SGD_INVILAD_EPSILON, //-1021
|
||||
// Iteration reached max limit
|
||||
SGD_REACHED_MAX_ITERATIONS,
|
||||
// Invalid value for mu
|
||||
SGD_INVALID_MU,
|
||||
// Invalid value for alpha
|
||||
SGD_INVALID_ALPHA,
|
||||
// Invalid value for beta
|
||||
SGD_INVALID_BETA,
|
||||
// Invalid value for sigma
|
||||
SGD_INVALID_SIGMA,
|
||||
// Nan value
|
||||
SGD_NAN_VALUE,
|
||||
SGD_SUCCESS = 0, ///< The optimization terminated successfully.
|
||||
SGD_CONVERGENCE = 1, ///< The optimization reached convergence.
|
||||
SGD_STOP, ///< The process stopped by the monitoring function.
|
||||
SGD_UNKNOWN_ERROR = -1024, ///< Unknown error.
|
||||
SGD_INVALID_VARIABLE_SIZE, ///< The variable size is negative
|
||||
SGD_INVALID_MAX_ITERATIONS, ///< The maximal iteration times is negative.
|
||||
SGD_INVALID_EPSILON, ///< The epsilon is negative.
|
||||
SGD_REACHED_MAX_ITERATIONS, ///< Iteration reached max limit.
|
||||
SGD_INVALID_MU, ///< Invalid value for mu.
|
||||
SGD_INVALID_ALPHA, ///< Invalid value for alpha.
|
||||
SGD_INVALID_BETA, ///< Invalid value for beta.
|
||||
SGD_INVALID_SIGMA, ///< Invalid value for sigma.
|
||||
SGD_NAN_VALUE, ///< Nan value.
|
||||
};
|
||||
|
||||
/**
|
||||
* Default parameter for the SGD methods.
|
||||
*/
|
||||
static const sgd_para defparam = {100, 1e-6, 0.01, 0.001, 0.9, 0.999, 1e-8};
|
||||
static const sgd_para defparam = {300, 1e-6, 0.01, 0.001, 0.9, 0.999, 1e-8};
|
||||
|
||||
sgd_float *sgd_malloc(const int n_size)
|
||||
{
|
||||
@ -85,13 +76,13 @@ const char* sgd_error_str(int er_index)
|
||||
return "The iteration stopped by the progress evaluation function.";
|
||||
case SGD_UNKNOWN_ERROR:
|
||||
return "Unknown error.";
|
||||
case SGD_INVILAD_VARIABLE_SIZE:
|
||||
case SGD_INVALID_VARIABLE_SIZE:
|
||||
return "Invalid array size.";
|
||||
case SGD_INVILAD_MAX_ITERATIONS:
|
||||
case SGD_INVALID_MAX_ITERATIONS:
|
||||
return "Invalid maximal iteration times.";
|
||||
case SGD_REACHED_MAX_ITERATIONS:
|
||||
return "The maximal iteration is reached.";
|
||||
case SGD_INVILAD_EPSILON:
|
||||
case SGD_INVALID_EPSILON:
|
||||
return "Invalid value for epsilon.";
|
||||
case SGD_INVALID_BETA:
|
||||
return "Invalid value for beta.";
|
||||
@ -190,9 +181,9 @@ int momentum(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVALID_EPSILON;
|
||||
if (para.mu < 0 || para.mu >= 1.0) return SGD_INVALID_MU;
|
||||
|
||||
sgd_float *mk = sgd_malloc(n_size);
|
||||
@ -238,9 +229,9 @@ int nag(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_float
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVALID_EPSILON;
|
||||
if (para.mu < 0 || para.mu >= 1.0) return SGD_INVALID_MU;
|
||||
|
||||
sgd_float *mk = sgd_malloc(n_size);
|
||||
@ -293,9 +284,9 @@ int adagrad(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_f
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0.0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0.0) return SGD_INVALID_EPSILON;
|
||||
if (para.sigma < 0.0) return SGD_INVALID_SIGMA;
|
||||
|
||||
sgd_float *mk = sgd_malloc(n_size);
|
||||
@ -341,9 +332,9 @@ int rmsprop(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_f
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0.0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0.0) return SGD_INVALID_EPSILON;
|
||||
if (para.sigma < 0.0) return SGD_INVALID_SIGMA;
|
||||
|
||||
sgd_float *vk = sgd_malloc(n_size);
|
||||
@ -389,9 +380,9 @@ int adam(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_floa
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVALID_EPSILON;
|
||||
if (para.alpha < 0) return SGD_INVALID_ALPHA;
|
||||
if (para.beta_1 < 0.0 || para.beta_1 >= 1.0) return SGD_INVALID_BETA;
|
||||
if (para.beta_2 < 0.0 || para.beta_2 >= 1.0) return SGD_INVALID_BETA;
|
||||
@ -451,9 +442,9 @@ int nadam(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_flo
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVALID_EPSILON;
|
||||
if (para.alpha < 0) return SGD_INVALID_ALPHA;
|
||||
if (para.beta_1 < 0.0 || para.beta_1 >= 1.0) return SGD_INVALID_BETA;
|
||||
if (para.beta_2 < 0.0 || para.beta_2 >= 1.0) return SGD_INVALID_BETA;
|
||||
@ -523,9 +514,9 @@ int adamax(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd_fl
|
||||
if (param == nullptr) para.alpha = 0.002;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVALID_EPSILON;
|
||||
if (para.alpha < 0) return SGD_INVALID_ALPHA;
|
||||
if (para.beta_1 < 0.0 || para.beta_1 >= 1.0) return SGD_INVALID_BETA;
|
||||
if (para.beta_2 < 0.0 || para.beta_2 >= 1.0) return SGD_INVALID_BETA;
|
||||
@ -581,9 +572,9 @@ int adabelief(sgd_evaulate_ptr Evafp, sgd_progress_ptr Profp, sgd_float *fx, sgd
|
||||
sgd_para para = (param != nullptr) ? (*param) : defparam;
|
||||
|
||||
//check parameters
|
||||
if (n_size <= 0) return SGD_INVILAD_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVILAD_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVILAD_EPSILON;
|
||||
if (n_size <= 0) return SGD_INVALID_VARIABLE_SIZE;
|
||||
if (para.iteration <= 0) return SGD_INVALID_MAX_ITERATIONS;
|
||||
if (para.epsilon < 0) return SGD_INVALID_EPSILON;
|
||||
if (para.alpha < 0) return SGD_INVALID_ALPHA;
|
||||
if (para.beta_1 < 0.0 || para.beta_1 >= 1.0) return SGD_INVALID_BETA;
|
||||
if (para.beta_2 < 0.0 || para.beta_2 >= 1.0) return SGD_INVALID_BETA;
|
||||
|
@ -86,12 +86,12 @@ typedef enum
|
||||
} sgd_solver_enum;
|
||||
|
||||
/**
|
||||
* @brief Parameters of the Adam method.
|
||||
* @brief Parameters of the SGD methods.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/**
|
||||
* Iteration times for the entire observation set. The default is 100.
|
||||
* Iteration times for the entire observation set. The default is 300.
|
||||
*/
|
||||
int iteration;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user