Skylark (Sketching Library)
0.1
|
00001 #ifndef SKYLARK_ACCELERATED_LINEARL2_REGRESSION_SOLVER_HPP 00002 #define SKYLARK_ACCELERATED_LINEARL2_REGRESSION_SOLVER_HPP 00003 00004 #include "accelerated_regression_solver.hpp" 00005 00006 namespace skylark { 00007 namespace algorithms { 00008 00009 //****** Tags for how to build the preconditioner (QR or SVD) 00010 struct precond_alg_tag { }; 00011 00012 struct qr_precond_tag : precond_alg_tag { }; 00013 00014 struct svd_precond_tag : precond_alg_tag { }; 00015 00016 //****** Tags for algorithm for fast linear L2 regresssion. 00017 struct linearl2_reg_fast_alg_tag { }; 00018 00019 // Simplified Blendenpik just does a single sketch and uses the 00020 // sketched matrix as a preconditioner. 00021 template<template <typename, typename> class TransformType, 00022 typename PrecondTag = qr_precond_tag> 00023 struct simplified_blendenpik_tag : public linearl2_reg_fast_alg_tag { }; 00024 00025 // The algorithm described in the Blendenpik paper 00026 template<typename PrecondTag = qr_precond_tag> 00027 struct blendenpik_tag : public linearl2_reg_fast_alg_tag { }; 00028 00029 // The algorithm described in the LSRN paper 00030 template<typename PrecondTag = svd_precond_tag> 00031 struct lsrn_tag : public linearl2_reg_fast_alg_tag { }; 00032 00033 } } 00034 00035 #if SKYLARK_HAVE_ELEMENTAL 00036 #include "accelerated_linearl2_regression_solver_Elemental.hpp" 00037 #endif 00038 00039 #endif // SKYLARK_ACCELERATED_LINEARL2_REGRESSION_SOLVER_HPP