6 #ifndef TURI_SGD_SGD_SOLVER_CLASS_H_ 7 #define TURI_SGD_SGD_SOLVER_CLASS_H_ 12 #include <toolkits/sgd/sgd_interface.hpp> 13 #include <core/logging/assertions.hpp> 14 #include <core/data/flexible_type/flexible_type.hpp> 15 #include <model_server/lib/variant.hpp> 16 #include <core/storage/sframe_interface/unity_sframe.hpp> 45 sgd_solver_base(
const std::shared_ptr<sgd_interface_base>& model_interface,
46 const v2::ml_data& _train_data,
47 const std::map<std::string, flexible_type>& _options);
65 const v2::ml_data& train_data;
74 std::map<std::string, variant_type> run();
88 std::map<std::string, variant_type> run_fixed_sgd_step_size(
double sgd_step_size);
100 const std::map<std::string, flexible_type>
options;
127 virtual std::pair<double, double> run_iteration(
130 const v2::ml_data& data,
131 double step_size) = 0;
144 virtual std::pair<double, double> calculate_objective(
165 double compute_initial_sgd_step_size();
171 std::pair<double, double> get_initial_objective_value(
const v2::ml_data& data)
const;
186 double calculate_iteration_sgd_step_size(
188 double initial_sgd_step_size,
double step_size_decrease_rate,
189 double l2_regularization);
206 bool sgd_test_model_convergence(
const std::vector<double>& sgd_path);
220 double sgd_adjust_step_size(
const std::vector<double>& sgd_path,
double sgd_step_size);
std::shared_ptr< sgd_interface_base > model_interface
virtual void setup(sgd_interface_base *iface)
const std::map< std::string, flexible_type > options