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__ } ) 95 #define PARAM_FLAG(ID, DESC, ALIAS) \ 96 PARAM_IN(bool, ID, DESC, ALIAS, false, false); 122 #define PARAM_INT_IN(ID, DESC, ALIAS, DEF) \ 123 PARAM_IN(int, ID, DESC, ALIAS, DEF, false) 152 #define PARAM_INT_OUT(ID, DESC) \ 153 PARAM_OUT(int, ID, DESC, "", 0, false) 178 #define PARAM_DOUBLE_IN(ID, DESC, ALIAS, DEF) \ 179 PARAM_IN(double, ID, DESC, ALIAS, DEF, false) 208 #define PARAM_DOUBLE_OUT(ID, DESC) \ 209 PARAM_OUT(double, ID, DESC, "", 0.0, false) 235 #define PARAM_STRING_IN(ID, DESC, ALIAS, DEF) \ 236 PARAM_IN(std::string, ID, DESC, ALIAS, DEF, false) 266 #define PARAM_STRING_OUT(ID, DESC, ALIAS) \ 267 PARAM_OUT(std::string, ID, DESC, ALIAS, "", false) 294 #define PARAM_MATRIX_IN(ID, DESC, ALIAS) \ 295 PARAM_MATRIX(ID, DESC, ALIAS, false, true, true) 322 #define PARAM_MATRIX_IN_REQ(ID, DESC, ALIAS) \ 323 PARAM_MATRIX(ID, DESC, ALIAS, true, true, true) 355 #define PARAM_MATRIX_OUT(ID, DESC, ALIAS) \ 356 PARAM_MATRIX(ID, DESC, ALIAS, false, true, false) 384 #define PARAM_TMATRIX_IN(ID, DESC, ALIAS) \ 385 PARAM_MATRIX(ID, DESC, ALIAS, false, false, true) 414 #define PARAM_TMATRIX_IN_REQ(ID, DESC, ALIAS) \ 415 PARAM_MATRIX(ID, DESC, ALIAS, true, false, true) 449 #define PARAM_TMATRIX_OUT(ID, DESC, ALIAS) \ 450 PARAM_MATRIX(ID, DESC, ALIAS, false, false, false) 477 #define PARAM_UMATRIX_IN(ID, DESC, ALIAS) \ 478 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, true) 506 #define PARAM_UMATRIX_IN_REQ(ID, DESC, ALIAS) \ 507 PARAM_UMATRIX(ID, DESC, ALIAS, true, true, true) 540 #define PARAM_UMATRIX_OUT(ID, DESC, ALIAS) \ 541 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, false) 569 #define PARAM_COL_IN(ID, DESC, ALIAS) \ 570 PARAM_COL(ID, DESC, ALIAS, false, true, true) 597 #define PARAM_COL_IN_REQ(ID, DESC, ALIAS) \ 598 PARAM_COL(ID, DESC, ALIAS, true, true, true) 625 #define PARAM_ROW_IN(ID, DESC, ALIAS) \ 626 PARAM_ROW(ID, DESC, ALIAS, false, true, true) 653 #define PARAM_UCOL_IN(ID, DESC, ALIAS) \ 654 PARAM_UCOL(ID, DESC, ALIAS, false, true, true) 682 #define PARAM_UROW_IN(ID, DESC, ALIAS) \ 683 PARAM_UROW(ID, DESC, ALIAS, false, true, true) 715 #define PARAM_COL_OUT(ID, DESC, ALIAS) \ 716 PARAM_COL(ID, DESC, ALIAS, false, true, false) 748 #define PARAM_ROW_OUT(ID, DESC, ALIAS) \ 749 PARAM_ROW(ID, DESC, ALIAS, false, true, false) 781 #define PARAM_UCOL_OUT(ID, DESC, ALIAS) \ 782 PARAM_UCOL(ID, DESC, ALIAS, false, true, false) 814 #define PARAM_UROW_OUT(ID, DESC, ALIAS) \ 815 PARAM_UROW(ID, DESC, ALIAS, false, true, false) 840 #define PARAM_VECTOR_IN(T, ID, DESC, ALIAS) \ 841 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 871 #define PARAM_VECTOR_OUT(T, ID, DESC, ALIAS) \ 872 PARAM_OUT(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 910 #define TUPLE_TYPE std::tuple<mlpack::data::DatasetInfo, arma::mat> 911 #define PARAM_MATRIX_AND_INFO_IN(ID, DESC, ALIAS) \ 912 PARAM_IN(TUPLE_TYPE, ID, DESC, ALIAS, TUPLE_TYPE(), false) 945 #define PARAM_MODEL_IN(TYPE, ID, DESC, ALIAS) \ 946 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, true) 979 #define PARAM_MODEL_IN_REQ(TYPE, ID, DESC, ALIAS) \ 980 PARAM_MODEL(TYPE, ID, DESC, ALIAS, true, true) 1004 #define PARAM_MODEL_OUT(TYPE, ID, DESC, ALIAS) \ 1005 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, false) 1028 #define PARAM_INT_IN_REQ(ID, DESC, ALIAS) \ 1029 PARAM_IN(int, ID, DESC, ALIAS, 0, true) 1052 #define PARAM_DOUBLE_IN_REQ(ID, DESC, ALIAS) \ 1053 PARAM_IN(double, ID, DESC, ALIAS, 0.0, true) 1076 #define PARAM_STRING_IN_REQ(ID, DESC, ALIAS) \ 1077 PARAM_IN(std::string, ID, DESC, ALIAS, "", true) 1101 #define PARAM_VECTOR_IN_REQ(T, ID, DESC, ALIAS) \ 1102 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), true); 1111 #define JOIN(x, y) JOIN_AGAIN(x, y) 1112 #define JOIN_AGAIN(x, y) x ## y 1133 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1134 static mlpack::util::Option<T> \ 1135 JOIN(cli_option_dummy_object_in_, __COUNTER__) \ 1136 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1138 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1139 static mlpack::util::Option<T> \ 1140 JOIN(cli_option_dummy_object_out_, __COUNTER__) \ 1141 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1143 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1144 static mlpack::util::Option<arma::mat> \ 1145 JOIN(cli_option_dummy_matrix_, __COUNTER__) \ 1146 (arma::mat(), ID, DESC, ALIAS, "arma::mat", \ 1147 REQ, IN, !TRANS, testName); 1149 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1150 static mlpack::util::Option<arma::Mat<size_t>> \ 1151 JOIN(cli_option_dummy_umatrix_, __COUNTER__) \ 1152 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", \ 1153 REQ, IN, !TRANS, testName); 1155 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1156 static mlpack::util::Option<arma::vec> \ 1157 JOIN(cli_option_dummy_col_, __COUNTER__) \ 1158 (arma::vec(), ID, DESC, ALIAS, "arma::vec", \ 1159 REQ, IN, !TRANS, testName); 1161 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1162 static mlpack::util::Option<arma::Col<size_t>> \ 1163 JOIN(cli_option_dummy_ucol_, __COUNTER__) \ 1164 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", \ 1165 REQ, IN, !TRANS, testName); 1167 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1168 static mlpack::util::Option<arma::rowvec> \ 1169 JOIN(cli_option_dummy_row_, __COUNTER__) \ 1170 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", \ 1171 REQ, IN, !TRANS, testName); 1173 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1174 static mlpack::util::Option<arma::Row<size_t>> \ 1175 JOIN(cli_option_dummy_urow_, __COUNTER__) \ 1176 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", \ 1177 REQ, IN, !TRANS, testName); 1181 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1182 static mlpack::util::Option<TYPE*> \ 1183 JOIN(cli_option_dummy_model_, __COUNTER__) \ 1184 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, testName); 1190 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1191 static mlpack::util::Option<T> \ 1192 JOIN(JOIN(cli_option_dummy_object_in_, __LINE__), opt) \ 1193 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1195 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1196 static mlpack::util::Option<T> \ 1197 JOIN(JOIN(cli_option_dummy_object_out_, __LINE__), opt) \ 1198 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1200 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1201 static mlpack::util::Option<arma::mat> \ 1202 JOIN(JOIN(cli_option_dummy_object_matrix_, __LINE__), opt) \ 1203 (arma::mat(), ID, DESC, ALIAS, "arma::mat", REQ, IN, !TRANS, \ 1206 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1207 static mlpack::util::Option<arma::Mat<size_t>> \ 1208 JOIN(JOIN(cli_option_dummy_object_umatrix_, __LINE__), opt) \ 1209 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", REQ, IN, \ 1212 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1213 static mlpack::util::Option<arma::vec> \ 1214 JOIN(cli_option_dummy_object_col_, __LINE__) \ 1215 (arma::vec(), ID, DESC, ALIAS, "arma::vec", REQ, IN, !TRANS, \ 1218 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1219 static mlpack::util::Option<arma::Col<size_t>> \ 1220 JOIN(cli_option_dummy_object_ucol_, __LINE__) \ 1221 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", REQ, IN, \ 1224 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1225 static mlpack::util::Option<arma::rowvec> \ 1226 JOIN(cli_option_dummy_object_row_, __LINE__) \ 1227 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", REQ, IN, !TRANS, \ 1230 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1231 static mlpack::util::Option<arma::Row<size_t>> \ 1232 JOIN(cli_option_dummy_object_urow_, __LINE__) \ 1233 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", REQ, IN, \ 1236 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1237 static mlpack::util::Option<TYPE*> \ 1238 JOIN(JOIN(cli_option_dummy_object_model_, __LINE__), opt) \ 1239 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, \
DatasetMapper< data::IncrementPolicy > DatasetInfo