| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef VL_SVM_H |
| | #define VL_SVM_H |
| |
|
| | #include "generic.h" |
| | #include "svmdataset.h" |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | #ifndef __DOXYGEN__ |
| | struct VlSvm_ ; |
| | typedef struct VlSvm_ VlSvm ; |
| | #else |
| | typedef OPAQUE VlSvm ; |
| | #endif |
| |
|
| | |
| | typedef enum |
| | { |
| | VlSvmSolverNone = 0, |
| | VlSvmSolverSgd = 1, |
| | VlSvmSolverSdca |
| | } VlSvmSolverType ; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | typedef enum |
| | { |
| | VlSvmLossHinge = 0, |
| | VlSvmLossHinge2 = 1, |
| | VlSvmLossL1, |
| | VlSvmLossL2, |
| | VlSvmLossLogistic |
| | } VlSvmLossType ; |
| |
|
| | |
| | typedef enum |
| | { |
| | VlSvmStatusTraining = 1, |
| | VlSvmStatusConverged, |
| | VlSvmStatusMaxNumIterationsReached |
| | } VlSvmSolverStatus ; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | typedef struct VlSvmStatistics_ { |
| | VlSvmSolverStatus status ; |
| | vl_size iteration ; |
| | vl_size epoch ; |
| | double objective ; |
| | double regularizer ; |
| | double loss ; |
| | double dualObjective ; |
| | double dualLoss ; |
| | double dualityGap ; |
| | double scoresVariation ; |
| | double elapsedTime ; |
| | } VlSvmStatistics ; |
| |
|
| | |
| | |
| | VL_EXPORT VlSvm * vl_svm_new (VlSvmSolverType type, |
| | double const * data, |
| | vl_size dimension, |
| | vl_size numData, |
| | double const * labels, |
| | double lambda) ; |
| |
|
| | VL_EXPORT VlSvm * vl_svm_new_with_dataset (VlSvmSolverType type, |
| | VlSvmDataset * dataset, |
| | double const * labels, |
| | double lambda) ; |
| |
|
| | VL_EXPORT VlSvm * vl_svm_new_with_abstract_data (VlSvmSolverType type, |
| | void * data, |
| | vl_size dimension, |
| | vl_size numData, |
| | double const * labels, |
| | double lambda) ; |
| |
|
| | VL_EXPORT void vl_svm_delete (VlSvm * self) ; |
| | |
| |
|
| | |
| | |
| | VL_EXPORT VlSvmStatistics const * vl_svm_get_statistics (VlSvm const *self) ; |
| | VL_EXPORT double const * vl_svm_get_model (VlSvm const *self) ; |
| | VL_EXPORT double vl_svm_get_bias (VlSvm const *self) ; |
| | VL_EXPORT vl_size vl_svm_get_dimension (VlSvm *self) ; |
| | VL_EXPORT vl_size vl_svm_get_num_data (VlSvm *self) ; |
| | VL_EXPORT double vl_svm_get_epsilon (VlSvm const *self) ; |
| | VL_EXPORT double vl_svm_get_bias_learning_rate (VlSvm const *self) ; |
| | VL_EXPORT vl_size vl_svm_get_max_num_iterations (VlSvm const *self) ; |
| | VL_EXPORT vl_size vl_svm_get_diagnostic_frequency (VlSvm const *self) ; |
| | VL_EXPORT VlSvmSolverType vl_svm_get_solver (VlSvm const *self) ; |
| | VL_EXPORT double vl_svm_get_bias_multiplier (VlSvm const *self) ; |
| | VL_EXPORT double vl_svm_get_lambda (VlSvm const *self) ; |
| | VL_EXPORT vl_size vl_svm_get_iteration_number (VlSvm const *self) ; |
| | VL_EXPORT double const * vl_svm_get_scores (VlSvm const *self) ; |
| | VL_EXPORT double const * vl_svm_get_weights (VlSvm const *self) ; |
| | |
| |
|
| | |
| | |
| | VL_EXPORT void vl_svm_set_epsilon (VlSvm *self, double epsilon) ; |
| | VL_EXPORT void vl_svm_set_bias_learning_rate (VlSvm *self, double rate) ; |
| | VL_EXPORT void vl_svm_set_max_num_iterations (VlSvm *self, vl_size maxNumIterations) ; |
| | VL_EXPORT void vl_svm_set_diagnostic_frequency (VlSvm *self, vl_size f) ; |
| | VL_EXPORT void vl_svm_set_bias_multiplier (VlSvm *self, double b) ; |
| | VL_EXPORT void vl_svm_set_model (VlSvm *self, double const *model) ; |
| | VL_EXPORT void vl_svm_set_bias (VlSvm *self, double b) ; |
| | VL_EXPORT void vl_svm_set_iteration_number (VlSvm *self, vl_uindex n) ; |
| | VL_EXPORT void vl_svm_set_weights (VlSvm *self, double const *weights) ; |
| |
|
| | VL_EXPORT void vl_svm_set_diagnostic_function (VlSvm *self, VlSvmDiagnosticFunction f, void *data) ; |
| | VL_EXPORT void vl_svm_set_loss_function (VlSvm *self, VlSvmLossFunction f) ; |
| | VL_EXPORT void vl_svm_set_loss_derivative_function (VlSvm *self, VlSvmLossFunction f) ; |
| | VL_EXPORT void vl_svm_set_conjugate_loss_function (VlSvm *self, VlSvmLossFunction f) ; |
| | VL_EXPORT void vl_svm_set_dca_update_function (VlSvm *self, VlSvmDcaUpdateFunction f) ; |
| | VL_EXPORT void vl_svm_set_data_functions (VlSvm *self, VlSvmInnerProductFunction inner, VlSvmAccumulateFunction acc) ; |
| | VL_EXPORT void vl_svm_set_loss (VlSvm *self, VlSvmLossType loss) ; |
| | |
| |
|
| | |
| | |
| | VL_EXPORT void vl_svm_train (VlSvm * self) ; |
| | |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | VL_EXPORT double vl_svm_hinge_loss (double label, double inner) ; |
| | VL_EXPORT double vl_svm_hinge_loss_derivative (double label, double inner) ; |
| | VL_EXPORT double vl_svm_hinge_conjugate_loss (double label, double u) ; |
| | VL_EXPORT double vl_svm_hinge_dca_update (double alpha, double inner, double norm2, double label) ; |
| |
|
| | |
| | VL_EXPORT double vl_svm_hinge2_loss (double label, double inner) ; |
| | VL_EXPORT double vl_svm_hinge2_loss_derivative (double label, double inner) ; |
| | VL_EXPORT double vl_svm_hinge2_conjugate_loss (double label, double u) ; |
| | VL_EXPORT double vl_svm_hinge2_dca_update (double alpha, double inner, double norm2, double label) ; |
| |
|
| | |
| | VL_EXPORT double vl_svm_l1_loss (double label, double inner) ; |
| | VL_EXPORT double vl_svm_l1_loss_derivative (double label, double inner) ; |
| | VL_EXPORT double vl_svm_l1_conjugate_loss (double label, double u) ; |
| | VL_EXPORT double vl_svm_l1_dca_update (double alpha, double inner, double norm2, double label) ; |
| |
|
| | |
| | VL_EXPORT double vl_svm_l2_loss (double label, double inner) ; |
| | VL_EXPORT double vl_svm_l2_loss_derivative (double label, double inner) ; |
| | VL_EXPORT double vl_svm_l2_conjugate_loss (double label, double u) ; |
| | VL_EXPORT double vl_svm_l2_dca_update (double alpha, double inner, double norm2, double label) ; |
| |
|
| | |
| | VL_EXPORT double vl_svm_logistic_loss (double label, double inner) ; |
| | VL_EXPORT double vl_svm_logistic_loss_derivative (double label, double inner) ; |
| | VL_EXPORT double vl_svm_logistic_conjugate_loss (double label, double u) ; |
| | VL_EXPORT double vl_svm_logistic_dca_update (double alpha, double inner, double norm2, double label) ; |
| | |
| |
|
| | |
| | #endif |
| |
|