15 #ifndef MLPACK_CORE_UTIL_PARAM_HPP 16 #define MLPACK_CORE_UTIL_PARAM_HPP 22 class IncrementPolicy;
24 template<
typename PolicyType,
typename InputType>
27 using DatasetInfo = DatasetMapper<IncrementPolicy, std::string>;
45 #define SEE_ALSO(DESCRIPTION, LINK) {DESCRIPTION, LINK} 71 #define PROGRAM_INFO(NAME, SHORT_DESC, DESC, ...) \ 72 static mlpack::util::ProgramDoc \ 73 cli_programdoc_dummy_object = mlpack::util::ProgramDoc(NAME, SHORT_DESC, \ 74 []() { return DESC; }, { __VA_ARGS__ } ) 93 #define PARAM_FLAG(ID, DESC, ALIAS) \ 94 PARAM_IN(bool, ID, DESC, ALIAS, false, false); 118 #define PARAM_INT_IN(ID, DESC, ALIAS, DEF) \ 119 PARAM_IN(int, ID, DESC, ALIAS, DEF, false) 146 #define PARAM_INT_OUT(ID, DESC) \ 147 PARAM_OUT(int, ID, DESC, "", 0, false) 170 #define PARAM_DOUBLE_IN(ID, DESC, ALIAS, DEF) \ 171 PARAM_IN(double, ID, DESC, ALIAS, DEF, false) 198 #define PARAM_DOUBLE_OUT(ID, DESC) \ 199 PARAM_OUT(double, ID, DESC, "", 0.0, false) 223 #define PARAM_STRING_IN(ID, DESC, ALIAS, DEF) \ 224 PARAM_IN(std::string, ID, DESC, ALIAS, DEF, false) 252 #define PARAM_STRING_OUT(ID, DESC, ALIAS) \ 253 PARAM_OUT(std::string, ID, DESC, ALIAS, "", false) 278 #define PARAM_MATRIX_IN(ID, DESC, ALIAS) \ 279 PARAM_MATRIX(ID, DESC, ALIAS, false, true, true) 304 #define PARAM_MATRIX_IN_REQ(ID, DESC, ALIAS) \ 305 PARAM_MATRIX(ID, DESC, ALIAS, true, true, true) 335 #define PARAM_MATRIX_OUT(ID, DESC, ALIAS) \ 336 PARAM_MATRIX(ID, DESC, ALIAS, false, true, false) 362 #define PARAM_TMATRIX_IN(ID, DESC, ALIAS) \ 363 PARAM_MATRIX(ID, DESC, ALIAS, false, false, true) 390 #define PARAM_TMATRIX_IN_REQ(ID, DESC, ALIAS) \ 391 PARAM_MATRIX(ID, DESC, ALIAS, true, false, true) 423 #define PARAM_TMATRIX_OUT(ID, DESC, ALIAS) \ 424 PARAM_MATRIX(ID, DESC, ALIAS, false, false, false) 449 #define PARAM_UMATRIX_IN(ID, DESC, ALIAS) \ 450 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, true) 476 #define PARAM_UMATRIX_IN_REQ(ID, DESC, ALIAS) \ 477 PARAM_UMATRIX(ID, DESC, ALIAS, true, true, true) 508 #define PARAM_UMATRIX_OUT(ID, DESC, ALIAS) \ 509 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, false) 535 #define PARAM_COL_IN(ID, DESC, ALIAS) \ 536 PARAM_COL(ID, DESC, ALIAS, false, true, true) 561 #define PARAM_ROW_IN(ID, DESC, ALIAS) \ 562 PARAM_ROW(ID, DESC, ALIAS, false, true, true) 587 #define PARAM_UCOL_IN(ID, DESC, ALIAS) \ 588 PARAM_UCOL(ID, DESC, ALIAS, false, true, true) 614 #define PARAM_UROW_IN(ID, DESC, ALIAS) \ 615 PARAM_UROW(ID, DESC, ALIAS, false, true, true) 645 #define PARAM_COL_OUT(ID, DESC, ALIAS) \ 646 PARAM_COL(ID, DESC, ALIAS, false, true, false) 676 #define PARAM_ROW_OUT(ID, DESC, ALIAS) \ 677 PARAM_ROW(ID, DESC, ALIAS, false, true, false) 707 #define PARAM_UCOL_OUT(ID, DESC, ALIAS) \ 708 PARAM_UCOL(ID, DESC, ALIAS, false, true, false) 738 #define PARAM_UROW_OUT(ID, DESC, ALIAS) \ 739 PARAM_UROW(ID, DESC, ALIAS, false, true, false) 762 #define PARAM_VECTOR_IN(T, ID, DESC, ALIAS) \ 763 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 791 #define PARAM_VECTOR_OUT(T, ID, DESC, ALIAS) \ 792 PARAM_OUT(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 828 #define TUPLE_TYPE std::tuple<mlpack::data::DatasetInfo, arma::mat> 829 #define PARAM_MATRIX_AND_INFO_IN(ID, DESC, ALIAS) \ 830 PARAM_IN(TUPLE_TYPE, ID, DESC, ALIAS, TUPLE_TYPE(), false) 861 #define PARAM_MODEL_IN(TYPE, ID, DESC, ALIAS) \ 862 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, true) 893 #define PARAM_MODEL_IN_REQ(TYPE, ID, DESC, ALIAS) \ 894 PARAM_MODEL(TYPE, ID, DESC, ALIAS, true, true) 916 #define PARAM_MODEL_OUT(TYPE, ID, DESC, ALIAS) \ 917 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, false) 938 #define PARAM_INT_IN_REQ(ID, DESC, ALIAS) \ 939 PARAM_IN(int, ID, DESC, ALIAS, 0, true) 960 #define PARAM_DOUBLE_IN_REQ(ID, DESC, ALIAS) \ 961 PARAM_IN(double, ID, DESC, ALIAS, 0.0, true) 982 #define PARAM_STRING_IN_REQ(ID, DESC, ALIAS) \ 983 PARAM_IN(std::string, ID, DESC, ALIAS, "", true) 1005 #define PARAM_VECTOR_IN_REQ(T, ID, DESC, ALIAS) \ 1006 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), true); 1015 #define JOIN(x, y) JOIN_AGAIN(x, y) 1016 #define JOIN_AGAIN(x, y) x ## y 1035 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1036 static mlpack::util::Option<T> \ 1037 JOIN(cli_option_dummy_object_in_, __COUNTER__) \ 1038 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1040 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1041 static mlpack::util::Option<T> \ 1042 JOIN(cli_option_dummy_object_out_, __COUNTER__) \ 1043 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1045 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1046 static mlpack::util::Option<arma::mat> \ 1047 JOIN(cli_option_dummy_matrix_, __COUNTER__) \ 1048 (arma::mat(), ID, DESC, ALIAS, "arma::mat", \ 1049 REQ, IN, !TRANS, testName); 1051 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1052 static mlpack::util::Option<arma::Mat<size_t>> \ 1053 JOIN(cli_option_dummy_umatrix_, __COUNTER__) \ 1054 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", \ 1055 REQ, IN, !TRANS, testName); 1057 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1058 static mlpack::util::Option<arma::vec> \ 1059 JOIN(cli_option_dummy_col_, __COUNTER__) \ 1060 (arma::vec(), ID, DESC, ALIAS, "arma::vec", \ 1061 REQ, IN, !TRANS, testName); 1063 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1064 static mlpack::util::Option<arma::Col<size_t>> \ 1065 JOIN(cli_option_dummy_ucol_, __COUNTER__) \ 1066 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", \ 1067 REQ, IN, !TRANS, testName); 1069 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1070 static mlpack::util::Option<arma::rowvec> \ 1071 JOIN(cli_option_dummy_row_, __COUNTER__) \ 1072 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", \ 1073 REQ, IN, !TRANS, testName); 1075 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1076 static mlpack::util::Option<arma::Row<size_t>> \ 1077 JOIN(cli_option_dummy_urow_, __COUNTER__) \ 1078 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", \ 1079 REQ, IN, !TRANS, testName); 1083 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1084 static mlpack::util::Option<TYPE*> \ 1085 JOIN(cli_option_dummy_model_, __COUNTER__) \ 1086 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, testName); 1092 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1093 static mlpack::util::Option<T> \ 1094 JOIN(JOIN(cli_option_dummy_object_in_, __LINE__), opt) \ 1095 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1097 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1098 static mlpack::util::Option<T> \ 1099 JOIN(JOIN(cli_option_dummy_object_out_, __LINE__), opt) \ 1100 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1102 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1103 static mlpack::util::Option<arma::mat> \ 1104 JOIN(JOIN(cli_option_dummy_object_matrix_, __LINE__), opt) \ 1105 (arma::mat(), ID, DESC, ALIAS, "arma::mat", REQ, IN, !TRANS, \ 1108 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1109 static mlpack::util::Option<arma::Mat<size_t>> \ 1110 JOIN(JOIN(cli_option_dummy_object_umatrix_, __LINE__), opt) \ 1111 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", REQ, IN, \ 1114 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1115 static mlpack::util::Option<arma::vec> \ 1116 JOIN(cli_option_dummy_object_col_, __LINE__) \ 1117 (arma::vec(), ID, DESC, ALIAS, "arma::vec", REQ, IN, !TRANS, \ 1120 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1121 static mlpack::util::Option<arma::Col<size_t>> \ 1122 JOIN(cli_option_dummy_object_ucol_, __LINE__) \ 1123 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", REQ, IN, \ 1126 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1127 static mlpack::util::Option<arma::rowvec> \ 1128 JOIN(cli_option_dummy_object_row_, __LINE__) \ 1129 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", REQ, IN, !TRANS, \ 1132 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1133 static mlpack::util::Option<arma::Row<size_t>> \ 1134 JOIN(cli_option_dummy_object_urow_, __LINE__) \ 1135 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", REQ, IN, \ 1138 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1139 static mlpack::util::Option<TYPE*> \ 1140 JOIN(JOIN(cli_option_dummy_object_model_, __LINE__), opt) \ 1141 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, \
DatasetMapper< data::IncrementPolicy > DatasetInfo