15 #ifndef MLPACK_CORE_UTIL_PARAM_HPP 16 #define MLPACK_CORE_UTIL_PARAM_HPP 22 class IncrementPolicy;
24 template<
typename PolicyType>
49 #define PROGRAM_INFO(NAME, DESC) static mlpack::util::ProgramDoc \ 50 cli_programdoc_dummy_object = mlpack::util::ProgramDoc(NAME, DESC); 69 #define PARAM_FLAG(ID, DESC, ALIAS) \ 70 PARAM_IN(bool, ID, DESC, ALIAS, false, false); 93 #define PARAM_INT_IN(ID, DESC, ALIAS, DEF) \ 94 PARAM_IN(int, ID, DESC, ALIAS, DEF, false) 121 #define PARAM_INT_OUT(ID, DESC) \ 122 PARAM_IN(int, ID, DESC, "", 0, false) 145 #define PARAM_DOUBLE_IN(ID, DESC, ALIAS, DEF) \ 146 PARAM_IN(double, ID, DESC, ALIAS, DEF, false) 173 #define PARAM_DOUBLE_OUT(ID, DESC) \ 174 PARAM_OUT(double, ID, DESC, "", 0.0, false) 198 #define PARAM_STRING_IN(ID, DESC, ALIAS, DEF) \ 199 PARAM_IN(std::string, ID, DESC, ALIAS, DEF, false) 227 #define PARAM_STRING_OUT(ID, DESC, ALIAS) \ 228 PARAM_OUT(std::string, ID, DESC, ALIAS, "", false) 253 #define PARAM_MATRIX_IN(ID, DESC, ALIAS) \ 254 PARAM_MATRIX(ID, DESC, ALIAS, false, true, true) 279 #define PARAM_MATRIX_IN_REQ(ID, DESC, ALIAS) \ 280 PARAM_MATRIX(ID, DESC, ALIAS, true, true, true) 310 #define PARAM_MATRIX_OUT(ID, DESC, ALIAS) \ 311 PARAM_MATRIX(ID, DESC, ALIAS, false, true, false) 337 #define PARAM_TMATRIX_IN(ID, DESC, ALIAS) \ 338 PARAM_MATRIX(ID, DESC, ALIAS, false, false, true) 365 #define PARAM_TMATRIX_IN_REQ(ID, DESC, ALIAS) \ 366 PARAM_MATRIX(ID, DESC, ALIAS, true, false, true) 398 #define PARAM_TMATRIX_OUT(ID, DESC, ALIAS) \ 399 PARAM_MATRIX(ID, DESC, ALIAS, false, false, false) 424 #define PARAM_UMATRIX_IN(ID, DESC, ALIAS) \ 425 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, true) 451 #define PARAM_UMATRIX_IN_REQ(ID, DESC, ALIAS) \ 452 PARAM_UMATRIX(ID, DESC, ALIAS, true, true, true) 483 #define PARAM_UMATRIX_OUT(ID, DESC, ALIAS) \ 484 PARAM_UMATRIX(ID, DESC, ALIAS, false, true, false) 510 #define PARAM_COL_IN(ID, DESC, ALIAS) \ 511 PARAM_COL(ID, DESC, ALIAS, false, true, true) 536 #define PARAM_ROW_IN(ID, DESC, ALIAS) \ 537 PARAM_ROW(ID, DESC, ALIAS, false, true, true) 562 #define PARAM_UCOL_IN(ID, DESC, ALIAS) \ 563 PARAM_UCOL(ID, DESC, ALIAS, false, true, true) 589 #define PARAM_UROW_IN(ID, DESC, ALIAS) \ 590 PARAM_UROW(ID, DESC, ALIAS, false, true, true) 620 #define PARAM_COL_OUT(ID, DESC, ALIAS) \ 621 PARAM_COL(ID, DESC, ALIAS, false, true, false) 651 #define PARAM_ROW_OUT(ID, DESC, ALIAS) \ 652 PARAM_ROW(ID, DESC, ALIAS, false, true, false) 682 #define PARAM_UCOL_OUT(ID, DESC, ALIAS) \ 683 PARAM_UCOL(ID, DESC, ALIAS, false, true, false) 713 #define PARAM_UROW_OUT(ID, DESC, ALIAS) \ 714 PARAM_UROW(ID, DESC, ALIAS, false, true, false) 737 #define PARAM_VECTOR_IN(T, ID, DESC, ALIAS) \ 738 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), false) 766 #define PARAM_VECTOR_OUT(T, ID) \ 767 PARAM_OUT(std::vector<T>, ID, DESC, "", std::vector<T>(), false) 803 #define TUPLE_TYPE std::tuple<mlpack::data::DatasetInfo, arma::mat> 804 #define PARAM_MATRIX_AND_INFO_IN(ID, DESC, ALIAS) \ 805 PARAM_IN(TUPLE_TYPE, ID, DESC, ALIAS, TUPLE_TYPE(), false) 836 #define PARAM_MODEL_IN(TYPE, ID, DESC, ALIAS) \ 837 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, true) 868 #define PARAM_MODEL_IN_REQ(TYPE, ID, DESC, ALIAS) \ 869 PARAM_MODEL(TYPE, ID, DESC, ALIAS, true, true) 891 #define PARAM_MODEL_OUT(TYPE, ID, DESC, ALIAS) \ 892 PARAM_MODEL(TYPE, ID, DESC, ALIAS, false, false) 913 #define PARAM_INT_IN_REQ(ID, DESC, ALIAS) \ 914 PARAM_IN(int, ID, DESC, ALIAS, 0, true) 935 #define PARAM_DOUBLE_IN_REQ(ID, DESC, ALIAS) \ 936 PARAM_IN(double, ID, DESC, ALIAS, 0.0d, true) 957 #define PARAM_STRING_IN_REQ(ID, DESC, ALIAS) \ 958 PARAM_IN(std::string, ID, DESC, ALIAS, "", true) 980 #define PARAM_VECTOR_IN_REQ(T, ID, DESC, ALIAS) \ 981 PARAM_IN(std::vector<T>, ID, DESC, ALIAS, std::vector<T>(), true); 990 #define JOIN(x, y) JOIN_AGAIN(x, y) 991 #define JOIN_AGAIN(x, y) x ## y 1009 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1010 static mlpack::util::Option<T> \ 1011 JOIN(cli_option_dummy_object_in_, __COUNTER__) \ 1012 (DEF, ID, DESC, ALIAS, REQ, true, false); 1014 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1015 static mlpack::util::Option<T> \ 1016 JOIN(cli_option_dummy_object_out_, __COUNTER__) \ 1017 (DEF, ID, DESC, ALIAS, REQ, false, false); 1019 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1020 static mlpack::util::Option<arma::mat> \ 1021 JOIN(cli_option_dummy_matrix_, __COUNTER__) \ 1022 (arma::mat(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1024 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1025 static mlpack::util::Option<arma::Mat<size_t>> \ 1026 JOIN(cli_option_dummy_umatrix_, __COUNTER__) \ 1027 (arma::Mat<size_t>(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1029 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1030 static mlpack::util::Option<arma::vec> \ 1031 JOIN(cli_option_dummy_col_, __COUNTER__) \ 1032 (arma::vec(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1034 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1035 static mlpack::util::Option<arma::Col<size_t>> \ 1036 JOIN(cli_option_dummy_ucol_, __COUNTER__) \ 1037 (arma::Col<size_t>(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1039 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1040 static mlpack::util::Option<arma::rowvec> \ 1041 JOIN(cli_option_dummy_row_, __COUNTER__) \ 1042 (arma::rowvec(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1044 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1045 static mlpack::util::Option<arma::Row<size_t>> \ 1046 JOIN(cli_option_dummy_urow_, __COUNTER__) \ 1047 (arma::Row<size_t>(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1052 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1053 static mlpack::util::Option<TYPE> \ 1054 JOIN(cli_option_dummy_model_, __COUNTER__) \ 1055 (TYPE(), ID, DESC, ALIAS, REQ, IN); 1061 #define PARAM_IN(T, ID, DESC, ALIAS, DEF, REQ) \ 1062 static mlpack::util::Option<T> \ 1063 JOIN(JOIN(cli_option_dummy_object_in_, __LINE__), opt) \ 1064 (DEF, ID, DESC, ALIAS, REQ, true, false); 1066 #define PARAM_OUT(T, ID, DESC, ALIAS, DEF, REQ) \ 1067 static mlpack::util::Option<T> \ 1068 JOIN(JOIN(cli_option_dummy_object_out_, __LINE__), opt) \ 1069 (DEF, ID, DESC, ALIAS, REQ, false, false); 1071 #define PARAM_MATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1072 static mlpack::util::Option<arma::mat> \ 1073 JOIN(JOIN(cli_option_dummy_object_matrix_, __LINE__), opt) \ 1074 (arma::mat(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1076 #define PARAM_UMATRIX(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1077 static mlpack::util::Option<arma::Mat<size_t>> \ 1078 JOIN(JOIN(cli_option_dummy_object_umatrix_, __LINE__), opt) \ 1079 (arma::Mat<size_t>(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1081 #define PARAM_COL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1082 static mlpack::util::Option<arma::vec> \ 1083 JOIN(cli_option_dummy_object_col_, __LINE__) \ 1084 (arma::vec(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1086 #define PARAM_UCOL(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1087 static mlpack::util::Option<arma::Col<size_t>> \ 1088 JOIN(cli_option_dummy_object_ucol_, __LINE__) \ 1089 (arma::Col<size_t>(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1091 #define PARAM_ROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1092 static mlpack::util::Option<arma::rowvec> \ 1093 JOIN(cli_option_dummy_object_row_, __LINE__) \ 1094 (arma::rowvec(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1096 #define PARAM_UROW(ID, DESC, ALIAS, REQ, TRANS, IN) \ 1097 static mlpack::util::Option<arma::Row<size_t>> \ 1098 JOIN(cli_option_dummy_object_urow_, __LINE__) \ 1099 (arma::Row<size_t>(), ID, DESC, ALIAS, REQ, IN, !TRANS); 1101 #define PARAM_MODEL(TYPE, ID, DESC, ALIAS, REQ, IN) \ 1102 static mlpack::util::Option<TYPE> \ 1103 JOIN(JOIN(cli_option_dummy_object_model_, __LINE__), opt) \ 1104 (TYPE(), ID, DESC, ALIAS, REQ, IN); Linear algebra utility functions, generally performed on matrices or vectors.
DatasetMapper< data::IncrementPolicy > DatasetInfo