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>;
49 #define PROGRAM_INFO(NAME, DESC) static mlpack::util::ProgramDoc \ 50 cli_programdoc_dummy_object = mlpack::util::ProgramDoc(NAME, \ 51 []() { return DESC; }) 70 #define PARAM_FLAG(ID, DESC, ALIAS) \ 71 PARAM_IN(bool, ID, DESC, ALIAS, false, false); 95 #define PARAM_INT_IN(ID, DESC, ALIAS, DEF) \ 96 PARAM_IN(int, ID, DESC, ALIAS, DEF, false) 123 #define PARAM_INT_OUT(ID, DESC) \ 124 PARAM_OUT(int, ID, DESC, "", 0, false) 147 #define PARAM_DOUBLE_IN(ID, DESC, ALIAS, DEF) \ 148 PARAM_IN(double, ID, DESC, ALIAS, DEF, false) 175 #define PARAM_DOUBLE_OUT(ID, DESC) \ 176 PARAM_OUT(double, ID, DESC, "", 0.0, false) 200 #define PARAM_STRING_IN(ID, DESC, ALIAS, DEF) \ 201 PARAM_IN(std::string, ID, DESC, ALIAS, DEF, false) 229 #define PARAM_STRING_OUT(ID, DESC, ALIAS) \ 230 PARAM_OUT(std::string, ID, DESC, ALIAS, "", false) 255 #define PARAM_MATRIX_IN(ID, DESC, ALIAS) \ 256 PARAM_MATRIX(ID, DESC, ALIAS, false, true, true) 281 #define PARAM_MATRIX_IN_REQ(ID, DESC, ALIAS) \ 282 PARAM_MATRIX(ID, DESC, ALIAS, true, true, true) 312 #define PARAM_MATRIX_OUT(ID, DESC, ALIAS) \ 313 PARAM_MATRIX(ID, DESC, ALIAS, false, true, false) 339 #define PARAM_TMATRIX_IN(ID, DESC, ALIAS) \ 340 PARAM_MATRIX(ID, DESC, ALIAS, false, false, true) 367 #define PARAM_TMATRIX_IN_REQ(ID, DESC, ALIAS) \ 368 PARAM_MATRIX(ID, DESC, ALIAS, true, false, true) 400 #define PARAM_TMATRIX_OUT(ID, DESC, ALIAS) \ 401 PARAM_MATRIX(ID, DESC, ALIAS, false, false, false) 426 #define PARAM_UMATRIX_IN(ID, DESC, ALIAS) \ 427 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, true) 453 #define PARAM_UMATRIX_IN_REQ(ID, DESC, ALIAS) \ 454 PARAM_UMATRIX(ID, DESC, ALIAS, true, true, true) 485 #define PARAM_UMATRIX_OUT(ID, DESC, ALIAS) \ 486 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, false) 512 #define PARAM_COL_IN(ID, DESC, ALIAS) \ 513 PARAM_COL(ID, DESC, ALIAS, false, true, true) 538 #define PARAM_ROW_IN(ID, DESC, ALIAS) \ 539 PARAM_ROW(ID, DESC, ALIAS, false, true, true) 564 #define PARAM_UCOL_IN(ID, DESC, ALIAS) \ 565 PARAM_UCOL(ID, DESC, ALIAS, false, true, true) 591 #define PARAM_UROW_IN(ID, DESC, ALIAS) \ 592 PARAM_UROW(ID, DESC, ALIAS, false, true, true) 622 #define PARAM_COL_OUT(ID, DESC, ALIAS) \ 623 PARAM_COL(ID, DESC, ALIAS, false, true, false) 653 #define PARAM_ROW_OUT(ID, DESC, ALIAS) \ 654 PARAM_ROW(ID, DESC, ALIAS, false, true, false) 684 #define PARAM_UCOL_OUT(ID, DESC, ALIAS) \ 685 PARAM_UCOL(ID, DESC, ALIAS, false, true, false) 715 #define PARAM_UROW_OUT(ID, DESC, ALIAS) \ 716 PARAM_UROW(ID, DESC, ALIAS, false, true, false) 739 #define PARAM_VECTOR_IN(T, ID, DESC, ALIAS) \ 740 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 768 #define PARAM_VECTOR_OUT(T, ID, DESC, ALIAS) \ 769 PARAM_OUT(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 805 #define TUPLE_TYPE std::tuple<mlpack::data::DatasetInfo, arma::mat> 806 #define PARAM_MATRIX_AND_INFO_IN(ID, DESC, ALIAS) \ 807 PARAM_IN(TUPLE_TYPE, ID, DESC, ALIAS, TUPLE_TYPE(), false) 838 #define PARAM_MODEL_IN(TYPE, ID, DESC, ALIAS) \ 839 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, true) 870 #define PARAM_MODEL_IN_REQ(TYPE, ID, DESC, ALIAS) \ 871 PARAM_MODEL(TYPE, ID, DESC, ALIAS, true, true) 893 #define PARAM_MODEL_OUT(TYPE, ID, DESC, ALIAS) \ 894 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, false) 915 #define PARAM_INT_IN_REQ(ID, DESC, ALIAS) \ 916 PARAM_IN(int, ID, DESC, ALIAS, 0, true) 937 #define PARAM_DOUBLE_IN_REQ(ID, DESC, ALIAS) \ 938 PARAM_IN(double, ID, DESC, ALIAS, 0.0, true) 959 #define PARAM_STRING_IN_REQ(ID, DESC, ALIAS) \ 960 PARAM_IN(std::string, ID, DESC, ALIAS, "", true) 982 #define PARAM_VECTOR_IN_REQ(T, ID, DESC, ALIAS) \ 983 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), true); 992 #define JOIN(x, y) JOIN_AGAIN(x, y) 993 #define JOIN_AGAIN(x, y) x ## y 1012 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1013 static mlpack::util::Option<T> \ 1014 JOIN(cli_option_dummy_object_in_, __COUNTER__) \ 1015 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1017 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1018 static mlpack::util::Option<T> \ 1019 JOIN(cli_option_dummy_object_out_, __COUNTER__) \ 1020 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1022 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1023 static mlpack::util::Option<arma::mat> \ 1024 JOIN(cli_option_dummy_matrix_, __COUNTER__) \ 1025 (arma::mat(), ID, DESC, ALIAS, "arma::mat", \ 1026 REQ, IN, !TRANS, testName); 1028 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1029 static mlpack::util::Option<arma::Mat<size_t>> \ 1030 JOIN(cli_option_dummy_umatrix_, __COUNTER__) \ 1031 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", \ 1032 REQ, IN, !TRANS, testName); 1034 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1035 static mlpack::util::Option<arma::vec> \ 1036 JOIN(cli_option_dummy_col_, __COUNTER__) \ 1037 (arma::vec(), ID, DESC, ALIAS, "arma::vec", \ 1038 REQ, IN, !TRANS, testName); 1040 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1041 static mlpack::util::Option<arma::Col<size_t>> \ 1042 JOIN(cli_option_dummy_ucol_, __COUNTER__) \ 1043 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", \ 1044 REQ, IN, !TRANS, testName); 1046 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1047 static mlpack::util::Option<arma::rowvec> \ 1048 JOIN(cli_option_dummy_row_, __COUNTER__) \ 1049 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", \ 1050 REQ, IN, !TRANS, testName); 1052 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1053 static mlpack::util::Option<arma::Row<size_t>> \ 1054 JOIN(cli_option_dummy_urow_, __COUNTER__) \ 1055 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", \ 1056 REQ, IN, !TRANS, testName); 1060 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1061 static mlpack::util::Option<TYPE*> \ 1062 JOIN(cli_option_dummy_model_, __COUNTER__) \ 1063 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, testName); 1069 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1070 static mlpack::util::Option<T> \ 1071 JOIN(JOIN(cli_option_dummy_object_in_, __LINE__), opt) \ 1072 (DEF, ID, DESC, ALIAS, #T, REQ, true, false, testName); 1074 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1075 static mlpack::util::Option<T> \ 1076 JOIN(JOIN(cli_option_dummy_object_out_, __LINE__), opt) \ 1077 (DEF, ID, DESC, ALIAS, #T, REQ, false, false, testName); 1079 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1080 static mlpack::util::Option<arma::mat> \ 1081 JOIN(JOIN(cli_option_dummy_object_matrix_, __LINE__), opt) \ 1082 (arma::mat(), ID, DESC, ALIAS, "arma::mat", REQ, IN, !TRANS, \ 1085 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1086 static mlpack::util::Option<arma::Mat<size_t>> \ 1087 JOIN(JOIN(cli_option_dummy_object_umatrix_, __LINE__), opt) \ 1088 (arma::Mat<size_t>(), ID, DESC, ALIAS, "arma::Mat<size_t>", REQ, IN, \ 1091 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1092 static mlpack::util::Option<arma::vec> \ 1093 JOIN(cli_option_dummy_object_col_, __LINE__) \ 1094 (arma::vec(), ID, DESC, ALIAS, "arma::vec", REQ, IN, !TRANS, \ 1097 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1098 static mlpack::util::Option<arma::Col<size_t>> \ 1099 JOIN(cli_option_dummy_object_ucol_, __LINE__) \ 1100 (arma::Col<size_t>(), ID, DESC, ALIAS, "arma::Col<size_t>", REQ, IN, \ 1103 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1104 static mlpack::util::Option<arma::rowvec> \ 1105 JOIN(cli_option_dummy_object_row_, __LINE__) \ 1106 (arma::rowvec(), ID, DESC, ALIAS, "arma::rowvec", REQ, IN, !TRANS, \ 1109 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1110 static mlpack::util::Option<arma::Row<size_t>> \ 1111 JOIN(cli_option_dummy_object_urow_, __LINE__) \ 1112 (arma::Row<size_t>(), ID, DESC, ALIAS, "arma::Row<size_t>", REQ, IN, \ 1115 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1116 static mlpack::util::Option<TYPE*> \ 1117 JOIN(JOIN(cli_option_dummy_object_model_, __LINE__), opt) \ 1118 (nullptr, ID, DESC, ALIAS, #TYPE, REQ, IN, false, \
DatasetMapper< data::IncrementPolicy > DatasetInfo