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_COL_IN_REQ(ID, DESC, ALIAS) \ 562 PARAM_COL(ID, DESC, ALIAS, true, true, true) 587 #define PARAM_ROW_IN(ID, DESC, ALIAS) \ 588 PARAM_ROW(ID, DESC, ALIAS, false, true, true) 613 #define PARAM_UCOL_IN(ID, DESC, ALIAS) \ 614 PARAM_UCOL(ID, DESC, ALIAS, false, true, true) 640 #define PARAM_UROW_IN(ID, DESC, ALIAS) \ 641 PARAM_UROW(ID, DESC, ALIAS, false, true, true) 671 #define PARAM_COL_OUT(ID, DESC, ALIAS) \ 672 PARAM_COL(ID, DESC, ALIAS, false, true, false) 702 #define PARAM_ROW_OUT(ID, DESC, ALIAS) \ 703 PARAM_ROW(ID, DESC, ALIAS, false, true, false) 733 #define PARAM_UCOL_OUT(ID, DESC, ALIAS) \ 734 PARAM_UCOL(ID, DESC, ALIAS, false, true, false) 764 #define PARAM_UROW_OUT(ID, DESC, ALIAS) \ 765 PARAM_UROW(ID, DESC, ALIAS, false, true, false) 788 #define PARAM_VECTOR_IN(T, ID, DESC, ALIAS) \ 789 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 817 #define PARAM_VECTOR_OUT(T, ID, DESC, ALIAS) \ 818 PARAM_OUT(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 854 #define TUPLE_TYPE std::tuple<mlpack::data::DatasetInfo, arma::mat> 855 #define PARAM_MATRIX_AND_INFO_IN(ID, DESC, ALIAS) \ 856 PARAM_IN(TUPLE_TYPE, ID, DESC, ALIAS, TUPLE_TYPE(), false) 887 #define PARAM_MODEL_IN(TYPE, ID, DESC, ALIAS) \ 888 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, true) 919 #define PARAM_MODEL_IN_REQ(TYPE, ID, DESC, ALIAS) \ 920 PARAM_MODEL(TYPE, ID, DESC, ALIAS, true, true) 942 #define PARAM_MODEL_OUT(TYPE, ID, DESC, ALIAS) \ 943 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, false) 964 #define PARAM_INT_IN_REQ(ID, DESC, ALIAS) \ 965 PARAM_IN(int, ID, DESC, ALIAS, 0, true) 986 #define PARAM_DOUBLE_IN_REQ(ID, DESC, ALIAS) \ 987 PARAM_IN(double, ID, DESC, ALIAS, 0.0, true) 1008 #define PARAM_STRING_IN_REQ(ID, DESC, ALIAS) \ 1009 PARAM_IN(std::string, ID, DESC, ALIAS, "", true) 1031 #define PARAM_VECTOR_IN_REQ(T, ID, DESC, ALIAS) \ 1032 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), true); 1041 #define JOIN(x, y) JOIN_AGAIN(x, y) 1042 #define JOIN_AGAIN(x, y) x ## y 1061 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1062 static mlpack::util::Option<T> \ 1063 JOIN(cli_option_dummy_object_in_, __COUNTER__) \ 1064 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1066 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1067 static mlpack::util::Option<T> \ 1068 JOIN(cli_option_dummy_object_out_, __COUNTER__) \ 1069 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1071 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1072 static mlpack::util::Option<arma::mat> \ 1073 JOIN(cli_option_dummy_matrix_, __COUNTER__) \ 1074 (arma::mat(), ID, DESC, ALIAS, "arma::mat", \ 1075 REQ, IN, !TRANS, testName); 1077 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1078 static mlpack::util::Option<arma::Mat<size_t>> \ 1079 JOIN(cli_option_dummy_umatrix_, __COUNTER__) \ 1080 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", \ 1081 REQ, IN, !TRANS, testName); 1083 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1084 static mlpack::util::Option<arma::vec> \ 1085 JOIN(cli_option_dummy_col_, __COUNTER__) \ 1086 (arma::vec(), ID, DESC, ALIAS, "arma::vec", \ 1087 REQ, IN, !TRANS, testName); 1089 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1090 static mlpack::util::Option<arma::Col<size_t>> \ 1091 JOIN(cli_option_dummy_ucol_, __COUNTER__) \ 1092 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", \ 1093 REQ, IN, !TRANS, testName); 1095 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1096 static mlpack::util::Option<arma::rowvec> \ 1097 JOIN(cli_option_dummy_row_, __COUNTER__) \ 1098 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", \ 1099 REQ, IN, !TRANS, testName); 1101 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1102 static mlpack::util::Option<arma::Row<size_t>> \ 1103 JOIN(cli_option_dummy_urow_, __COUNTER__) \ 1104 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", \ 1105 REQ, IN, !TRANS, testName); 1109 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1110 static mlpack::util::Option<TYPE*> \ 1111 JOIN(cli_option_dummy_model_, __COUNTER__) \ 1112 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, testName); 1118 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1119 static mlpack::util::Option<T> \ 1120 JOIN(JOIN(cli_option_dummy_object_in_, __LINE__), opt) \ 1121 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1123 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1124 static mlpack::util::Option<T> \ 1125 JOIN(JOIN(cli_option_dummy_object_out_, __LINE__), opt) \ 1126 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1128 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1129 static mlpack::util::Option<arma::mat> \ 1130 JOIN(JOIN(cli_option_dummy_object_matrix_, __LINE__), opt) \ 1131 (arma::mat(), ID, DESC, ALIAS, "arma::mat", REQ, IN, !TRANS, \ 1134 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1135 static mlpack::util::Option<arma::Mat<size_t>> \ 1136 JOIN(JOIN(cli_option_dummy_object_umatrix_, __LINE__), opt) \ 1137 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", REQ, IN, \ 1140 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1141 static mlpack::util::Option<arma::vec> \ 1142 JOIN(cli_option_dummy_object_col_, __LINE__) \ 1143 (arma::vec(), ID, DESC, ALIAS, "arma::vec", REQ, IN, !TRANS, \ 1146 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1147 static mlpack::util::Option<arma::Col<size_t>> \ 1148 JOIN(cli_option_dummy_object_ucol_, __LINE__) \ 1149 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", REQ, IN, \ 1152 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1153 static mlpack::util::Option<arma::rowvec> \ 1154 JOIN(cli_option_dummy_object_row_, __LINE__) \ 1155 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", REQ, IN, !TRANS, \ 1158 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1159 static mlpack::util::Option<arma::Row<size_t>> \ 1160 JOIN(cli_option_dummy_object_urow_, __LINE__) \ 1161 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", REQ, IN, \ 1164 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1165 static mlpack::util::Option<TYPE*> \ 1166 JOIN(JOIN(cli_option_dummy_object_model_, __LINE__), opt) \ 1167 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, \
DatasetMapper< data::IncrementPolicy > DatasetInfo