mlpack 4.6.2__cp313-cp313-win_amd64.whl → 4.7.0__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. mlpack/__init__.py +4 -4
  2. mlpack/adaboost_classify.cp313-win_amd64.pyd +0 -0
  3. mlpack/adaboost_probabilities.cp313-win_amd64.pyd +0 -0
  4. mlpack/adaboost_train.cp313-win_amd64.pyd +0 -0
  5. mlpack/approx_kfn.cp313-win_amd64.pyd +0 -0
  6. mlpack/arma_numpy.cp313-win_amd64.pyd +0 -0
  7. mlpack/bayesian_linear_regression.cp313-win_amd64.pyd +0 -0
  8. mlpack/cf.cp313-win_amd64.pyd +0 -0
  9. mlpack/dbscan.cp313-win_amd64.pyd +0 -0
  10. mlpack/decision_tree.cp313-win_amd64.pyd +0 -0
  11. mlpack/det.cp313-win_amd64.pyd +0 -0
  12. mlpack/emst.cp313-win_amd64.pyd +0 -0
  13. mlpack/fastmks.cp313-win_amd64.pyd +0 -0
  14. mlpack/gmm_generate.cp313-win_amd64.pyd +0 -0
  15. mlpack/gmm_probability.cp313-win_amd64.pyd +0 -0
  16. mlpack/gmm_train.cp313-win_amd64.pyd +0 -0
  17. mlpack/hmm_generate.cp313-win_amd64.pyd +0 -0
  18. mlpack/hmm_loglik.cp313-win_amd64.pyd +0 -0
  19. mlpack/hmm_train.cp313-win_amd64.pyd +0 -0
  20. mlpack/hmm_viterbi.cp313-win_amd64.pyd +0 -0
  21. mlpack/hoeffding_tree.cp313-win_amd64.pyd +0 -0
  22. mlpack/image_converter.cp313-win_amd64.pyd +0 -0
  23. mlpack/include/mlpack/base.hpp +1 -0
  24. mlpack/include/mlpack/core/arma_extend/find_nan.hpp +63 -0
  25. mlpack/include/mlpack/core/cereal/low_precision.hpp +48 -0
  26. mlpack/include/mlpack/core/cv/cv_base.hpp +11 -11
  27. mlpack/include/mlpack/core/cv/cv_base_impl.hpp +7 -7
  28. mlpack/include/mlpack/core/cv/k_fold_cv.hpp +4 -4
  29. mlpack/include/mlpack/core/cv/k_fold_cv_impl.hpp +4 -4
  30. mlpack/include/mlpack/core/cv/meta_info_extractor.hpp +10 -10
  31. mlpack/include/mlpack/core/cv/metrics/f1_impl.hpp +1 -1
  32. mlpack/include/mlpack/core/cv/metrics/facilities.hpp +2 -1
  33. mlpack/include/mlpack/core/cv/metrics/precision_impl.hpp +1 -1
  34. mlpack/include/mlpack/core/cv/metrics/r2_score_impl.hpp +1 -1
  35. mlpack/include/mlpack/core/cv/metrics/silhouette_score_impl.hpp +1 -1
  36. mlpack/include/mlpack/core/cv/simple_cv.hpp +4 -4
  37. mlpack/include/mlpack/core/cv/simple_cv_impl.hpp +2 -2
  38. mlpack/include/mlpack/core/data/binarize.hpp +0 -2
  39. mlpack/include/mlpack/core/data/check_categorical_param.hpp +0 -2
  40. mlpack/include/mlpack/core/data/combine_options.hpp +151 -0
  41. mlpack/include/mlpack/core/data/confusion_matrix.hpp +0 -2
  42. mlpack/include/mlpack/core/data/confusion_matrix_impl.hpp +0 -2
  43. mlpack/include/mlpack/core/data/data.hpp +6 -4
  44. mlpack/include/mlpack/core/data/data_options.hpp +341 -18
  45. mlpack/include/mlpack/core/data/dataset_mapper.hpp +3 -5
  46. mlpack/include/mlpack/core/data/dataset_mapper_impl.hpp +0 -2
  47. mlpack/include/mlpack/core/data/detect_file_type.hpp +34 -5
  48. mlpack/include/mlpack/core/data/detect_file_type_impl.hpp +185 -11
  49. mlpack/include/mlpack/core/data/extension.hpp +2 -4
  50. mlpack/include/mlpack/core/data/font8x8_basic.h +152 -0
  51. mlpack/include/mlpack/core/data/has_serialize.hpp +0 -2
  52. mlpack/include/mlpack/core/data/image_bounding_box.hpp +36 -0
  53. mlpack/include/mlpack/core/data/image_bounding_box_impl.hpp +155 -0
  54. mlpack/include/mlpack/core/data/image_layout.hpp +63 -0
  55. mlpack/include/mlpack/core/data/image_layout_impl.hpp +75 -0
  56. mlpack/include/mlpack/core/data/image_letterbox.hpp +116 -0
  57. mlpack/include/mlpack/core/data/image_options.hpp +257 -0
  58. mlpack/include/mlpack/core/data/image_resize_crop.hpp +113 -48
  59. mlpack/include/mlpack/core/data/imputation_methods/custom_imputation.hpp +16 -32
  60. mlpack/include/mlpack/core/data/imputation_methods/listwise_deletion.hpp +19 -29
  61. mlpack/include/mlpack/core/data/imputation_methods/mean_imputation.hpp +113 -44
  62. mlpack/include/mlpack/core/data/imputation_methods/median_imputation.hpp +44 -43
  63. mlpack/include/mlpack/core/data/imputer.hpp +41 -49
  64. mlpack/include/mlpack/core/data/is_naninf.hpp +0 -2
  65. mlpack/include/mlpack/core/data/load.hpp +49 -233
  66. mlpack/include/mlpack/core/data/load_arff.hpp +0 -2
  67. mlpack/include/mlpack/core/data/load_arff_impl.hpp +2 -4
  68. mlpack/include/mlpack/core/data/load_categorical.hpp +1 -4
  69. mlpack/include/mlpack/core/data/load_categorical_impl.hpp +10 -26
  70. mlpack/include/mlpack/core/data/load_dense.hpp +279 -0
  71. mlpack/include/mlpack/core/data/load_deprecated.hpp +466 -0
  72. mlpack/include/mlpack/core/data/load_image.hpp +71 -43
  73. mlpack/include/mlpack/core/data/load_impl.hpp +95 -274
  74. mlpack/include/mlpack/core/data/load_model.hpp +62 -0
  75. mlpack/include/mlpack/core/data/load_numeric.hpp +124 -87
  76. mlpack/include/mlpack/core/data/load_sparse.hpp +91 -0
  77. mlpack/include/mlpack/core/data/map_policies/datatype.hpp +0 -2
  78. mlpack/include/mlpack/core/data/map_policies/increment_policy.hpp +0 -2
  79. mlpack/include/mlpack/core/data/map_policies/map_policies.hpp +0 -1
  80. mlpack/include/mlpack/core/data/matrix_options.hpp +152 -20
  81. mlpack/include/mlpack/core/data/normalize_labels.hpp +0 -2
  82. mlpack/include/mlpack/core/data/normalize_labels_impl.hpp +0 -2
  83. mlpack/include/mlpack/core/data/one_hot_encoding.hpp +2 -4
  84. mlpack/include/mlpack/core/data/one_hot_encoding_impl.hpp +3 -5
  85. mlpack/include/mlpack/core/data/save.hpp +26 -120
  86. mlpack/include/mlpack/core/data/save_dense.hpp +42 -0
  87. mlpack/include/mlpack/core/data/save_deprecated.hpp +308 -0
  88. mlpack/include/mlpack/core/data/save_image.hpp +82 -42
  89. mlpack/include/mlpack/core/data/save_impl.hpp +60 -245
  90. mlpack/include/mlpack/core/data/save_matrix.hpp +45 -0
  91. mlpack/include/mlpack/core/data/save_model.hpp +61 -0
  92. mlpack/include/mlpack/core/data/save_numeric.hpp +60 -0
  93. mlpack/include/mlpack/core/data/save_sparse.hpp +44 -0
  94. mlpack/include/mlpack/core/data/scaler_methods/max_abs_scaler.hpp +0 -2
  95. mlpack/include/mlpack/core/data/scaler_methods/mean_normalization.hpp +2 -4
  96. mlpack/include/mlpack/core/data/scaler_methods/min_max_scaler.hpp +0 -2
  97. mlpack/include/mlpack/core/data/scaler_methods/pca_whitening.hpp +1 -3
  98. mlpack/include/mlpack/core/data/scaler_methods/standard_scaler.hpp +2 -4
  99. mlpack/include/mlpack/core/data/scaler_methods/zca_whitening.hpp +0 -2
  100. mlpack/include/mlpack/core/data/split_data.hpp +6 -8
  101. mlpack/include/mlpack/core/data/string_algorithms.hpp +0 -2
  102. mlpack/include/mlpack/core/data/string_encoding.hpp +0 -2
  103. mlpack/include/mlpack/core/data/string_encoding_dictionary.hpp +0 -2
  104. mlpack/include/mlpack/core/data/string_encoding_impl.hpp +0 -2
  105. mlpack/include/mlpack/core/data/string_encoding_policies/bag_of_words_encoding_policy.hpp +0 -2
  106. mlpack/include/mlpack/core/data/string_encoding_policies/dictionary_encoding_policy.hpp +0 -2
  107. mlpack/include/mlpack/core/data/string_encoding_policies/policy_traits.hpp +0 -2
  108. mlpack/include/mlpack/core/data/string_encoding_policies/tf_idf_encoding_policy.hpp +0 -2
  109. mlpack/include/mlpack/core/data/text_options.hpp +91 -53
  110. mlpack/include/mlpack/core/data/tokenizers/char_extract.hpp +0 -2
  111. mlpack/include/mlpack/core/data/tokenizers/split_by_any_of.hpp +0 -2
  112. mlpack/include/mlpack/core/distributions/gamma_distribution_impl.hpp +4 -4
  113. mlpack/include/mlpack/core/distributions/laplace_distribution.hpp +9 -9
  114. mlpack/include/mlpack/core/distributions/laplace_distribution_impl.hpp +7 -7
  115. mlpack/include/mlpack/core/hpt/cv_function.hpp +2 -2
  116. mlpack/include/mlpack/core/hpt/cv_function_impl.hpp +2 -2
  117. mlpack/include/mlpack/core/hpt/hpt.hpp +4 -4
  118. mlpack/include/mlpack/core/hpt/hpt_impl.hpp +9 -9
  119. mlpack/include/mlpack/core/math/make_alias.hpp +7 -5
  120. mlpack/include/mlpack/core/math/random.hpp +19 -5
  121. mlpack/include/mlpack/core/math/shuffle_data.hpp +79 -245
  122. mlpack/include/mlpack/core/metrics/non_maximal_suppression_impl.hpp +9 -10
  123. mlpack/include/mlpack/core/stb/bundled/stb_image_resize2.h +291 -239
  124. mlpack/include/mlpack/core/tree/binary_space_tree/rp_tree_mean_split_impl.hpp +7 -7
  125. mlpack/include/mlpack/core/tree/cellbound.hpp +2 -2
  126. mlpack/include/mlpack/core/tree/cosine_tree/cosine_tree_impl.hpp +10 -10
  127. mlpack/include/mlpack/core/tree/octree/octree.hpp +10 -0
  128. mlpack/include/mlpack/core/tree/octree/octree_impl.hpp +14 -4
  129. mlpack/include/mlpack/core/util/arma_traits.hpp +25 -38
  130. mlpack/include/mlpack/core/util/coot_traits.hpp +97 -0
  131. mlpack/include/mlpack/core/util/forward.hpp +0 -2
  132. mlpack/include/mlpack/core/util/param.hpp +4 -4
  133. mlpack/include/mlpack/core/util/params_impl.hpp +2 -2
  134. mlpack/include/mlpack/core/util/using.hpp +29 -2
  135. mlpack/include/mlpack/core/util/version.hpp +5 -3
  136. mlpack/include/mlpack/core/util/version_impl.hpp +3 -6
  137. mlpack/include/mlpack/methods/adaboost/adaboost_classify_main.cpp +1 -1
  138. mlpack/include/mlpack/methods/adaboost/adaboost_main.cpp +3 -3
  139. mlpack/include/mlpack/methods/adaboost/adaboost_train_main.cpp +2 -2
  140. mlpack/include/mlpack/methods/ann/activation_functions/activation_functions.hpp +1 -0
  141. mlpack/include/mlpack/methods/ann/activation_functions/bipolar_sigmoid_function.hpp +6 -4
  142. mlpack/include/mlpack/methods/ann/activation_functions/elish_function.hpp +17 -12
  143. mlpack/include/mlpack/methods/ann/activation_functions/elliot_function.hpp +9 -7
  144. mlpack/include/mlpack/methods/ann/activation_functions/gaussian_function.hpp +7 -6
  145. mlpack/include/mlpack/methods/ann/activation_functions/gelu_exact_function.hpp +73 -0
  146. mlpack/include/mlpack/methods/ann/activation_functions/gelu_function.hpp +27 -16
  147. mlpack/include/mlpack/methods/ann/activation_functions/hard_sigmoid_function.hpp +8 -6
  148. mlpack/include/mlpack/methods/ann/activation_functions/hard_swish_function.hpp +6 -4
  149. mlpack/include/mlpack/methods/ann/activation_functions/hyper_sinh_function.hpp +13 -8
  150. mlpack/include/mlpack/methods/ann/activation_functions/identity_function.hpp +6 -4
  151. mlpack/include/mlpack/methods/ann/activation_functions/inverse_quadratic_function.hpp +8 -6
  152. mlpack/include/mlpack/methods/ann/activation_functions/lisht_function.hpp +7 -5
  153. mlpack/include/mlpack/methods/ann/activation_functions/logistic_function.hpp +14 -12
  154. mlpack/include/mlpack/methods/ann/activation_functions/mish_function.hpp +7 -5
  155. mlpack/include/mlpack/methods/ann/activation_functions/multi_quadratic_function.hpp +6 -4
  156. mlpack/include/mlpack/methods/ann/activation_functions/poisson1_function.hpp +4 -2
  157. mlpack/include/mlpack/methods/ann/activation_functions/quadratic_function.hpp +6 -4
  158. mlpack/include/mlpack/methods/ann/activation_functions/rectifier_function.hpp +10 -10
  159. mlpack/include/mlpack/methods/ann/activation_functions/silu_function.hpp +10 -8
  160. mlpack/include/mlpack/methods/ann/activation_functions/softplus_function.hpp +12 -9
  161. mlpack/include/mlpack/methods/ann/activation_functions/softsign_function.hpp +15 -23
  162. mlpack/include/mlpack/methods/ann/activation_functions/spline_function.hpp +9 -7
  163. mlpack/include/mlpack/methods/ann/activation_functions/swish_function.hpp +11 -9
  164. mlpack/include/mlpack/methods/ann/activation_functions/tanh_exponential_function.hpp +9 -7
  165. mlpack/include/mlpack/methods/ann/activation_functions/tanh_function.hpp +10 -7
  166. mlpack/include/mlpack/methods/ann/ann.hpp +3 -0
  167. mlpack/include/mlpack/methods/ann/convolution_rules/base_convolution.hpp +197 -0
  168. mlpack/include/mlpack/methods/ann/convolution_rules/convolution_rules.hpp +1 -2
  169. mlpack/include/mlpack/methods/ann/convolution_rules/im2col_convolution.hpp +215 -0
  170. mlpack/include/mlpack/methods/ann/convolution_rules/naive_convolution.hpp +109 -154
  171. mlpack/include/mlpack/methods/ann/dag_network.hpp +728 -0
  172. mlpack/include/mlpack/methods/ann/dag_network_impl.hpp +1640 -0
  173. mlpack/include/mlpack/methods/ann/dists/bernoulli_distribution_impl.hpp +1 -1
  174. mlpack/include/mlpack/methods/ann/dists/normal_distribution_impl.hpp +7 -2
  175. mlpack/include/mlpack/methods/ann/ffn.hpp +39 -3
  176. mlpack/include/mlpack/methods/ann/ffn_impl.hpp +14 -32
  177. mlpack/include/mlpack/methods/ann/init_rules/const_init.hpp +4 -4
  178. mlpack/include/mlpack/methods/ann/init_rules/gaussian_init.hpp +6 -2
  179. mlpack/include/mlpack/methods/ann/init_rules/he_init.hpp +4 -2
  180. mlpack/include/mlpack/methods/ann/init_rules/kathirvalavakumar_subavathi_init.hpp +3 -3
  181. mlpack/include/mlpack/methods/ann/init_rules/lecun_normal_init.hpp +4 -2
  182. mlpack/include/mlpack/methods/ann/init_rules/nguyen_widrow_init.hpp +2 -2
  183. mlpack/include/mlpack/methods/ann/init_rules/oivs_init.hpp +2 -2
  184. mlpack/include/mlpack/methods/ann/init_rules/orthogonal_init.hpp +2 -2
  185. mlpack/include/mlpack/methods/ann/init_rules/random_init.hpp +8 -4
  186. mlpack/include/mlpack/methods/ann/layer/adaptive_max_pooling.hpp +21 -23
  187. mlpack/include/mlpack/methods/ann/layer/adaptive_max_pooling_impl.hpp +15 -15
  188. mlpack/include/mlpack/methods/ann/layer/adaptive_mean_pooling.hpp +21 -23
  189. mlpack/include/mlpack/methods/ann/layer/adaptive_mean_pooling_impl.hpp +16 -16
  190. mlpack/include/mlpack/methods/ann/layer/add.hpp +18 -18
  191. mlpack/include/mlpack/methods/ann/layer/add_impl.hpp +13 -13
  192. mlpack/include/mlpack/methods/ann/layer/add_merge.hpp +19 -18
  193. mlpack/include/mlpack/methods/ann/layer/add_merge_impl.hpp +13 -13
  194. mlpack/include/mlpack/methods/ann/layer/alpha_dropout.hpp +17 -16
  195. mlpack/include/mlpack/methods/ann/layer/alpha_dropout_impl.hpp +14 -13
  196. mlpack/include/mlpack/methods/ann/layer/base_layer.hpp +28 -51
  197. mlpack/include/mlpack/methods/ann/layer/batch_norm.hpp +16 -18
  198. mlpack/include/mlpack/methods/ann/layer/batch_norm_impl.hpp +55 -54
  199. mlpack/include/mlpack/methods/ann/layer/c_relu.hpp +18 -20
  200. mlpack/include/mlpack/methods/ann/layer/c_relu_impl.hpp +20 -25
  201. mlpack/include/mlpack/methods/ann/layer/celu.hpp +14 -19
  202. mlpack/include/mlpack/methods/ann/layer/celu_impl.hpp +25 -34
  203. mlpack/include/mlpack/methods/ann/layer/concat.hpp +18 -18
  204. mlpack/include/mlpack/methods/ann/layer/concat_impl.hpp +13 -13
  205. mlpack/include/mlpack/methods/ann/layer/concatenate.hpp +18 -18
  206. mlpack/include/mlpack/methods/ann/layer/concatenate_impl.hpp +14 -14
  207. mlpack/include/mlpack/methods/ann/layer/convolution.hpp +42 -47
  208. mlpack/include/mlpack/methods/ann/layer/convolution_impl.hpp +170 -159
  209. mlpack/include/mlpack/methods/ann/layer/dropconnect.hpp +18 -20
  210. mlpack/include/mlpack/methods/ann/layer/dropconnect_impl.hpp +20 -20
  211. mlpack/include/mlpack/methods/ann/layer/dropout.hpp +17 -19
  212. mlpack/include/mlpack/methods/ann/layer/dropout_impl.hpp +14 -21
  213. mlpack/include/mlpack/methods/ann/layer/elu.hpp +23 -25
  214. mlpack/include/mlpack/methods/ann/layer/elu_impl.hpp +20 -27
  215. mlpack/include/mlpack/methods/ann/layer/embedding.hpp +160 -0
  216. mlpack/include/mlpack/methods/ann/layer/embedding_impl.hpp +189 -0
  217. mlpack/include/mlpack/methods/ann/layer/flexible_relu.hpp +17 -19
  218. mlpack/include/mlpack/methods/ann/layer/flexible_relu_impl.hpp +20 -20
  219. mlpack/include/mlpack/methods/ann/layer/ftswish.hpp +17 -18
  220. mlpack/include/mlpack/methods/ann/layer/ftswish_impl.hpp +17 -35
  221. mlpack/include/mlpack/methods/ann/layer/grouped_convolution.hpp +27 -33
  222. mlpack/include/mlpack/methods/ann/layer/grouped_convolution_impl.hpp +170 -163
  223. mlpack/include/mlpack/methods/ann/layer/gru.hpp +195 -0
  224. mlpack/include/mlpack/methods/ann/layer/gru_impl.hpp +325 -0
  225. mlpack/include/mlpack/methods/ann/layer/hard_tanh.hpp +13 -15
  226. mlpack/include/mlpack/methods/ann/layer/hard_tanh_impl.hpp +12 -12
  227. mlpack/include/mlpack/methods/ann/layer/identity.hpp +19 -20
  228. mlpack/include/mlpack/methods/ann/layer/identity_impl.hpp +12 -12
  229. mlpack/include/mlpack/methods/ann/layer/layer.hpp +37 -33
  230. mlpack/include/mlpack/methods/ann/layer/layer_norm.hpp +11 -13
  231. mlpack/include/mlpack/methods/ann/layer/layer_norm_impl.hpp +16 -16
  232. mlpack/include/mlpack/methods/ann/layer/layer_types.hpp +4 -1
  233. mlpack/include/mlpack/methods/ann/layer/leaky_relu.hpp +20 -23
  234. mlpack/include/mlpack/methods/ann/layer/leaky_relu_impl.hpp +12 -13
  235. mlpack/include/mlpack/methods/ann/layer/linear.hpp +16 -18
  236. mlpack/include/mlpack/methods/ann/layer/linear3d.hpp +18 -18
  237. mlpack/include/mlpack/methods/ann/layer/linear3d_impl.hpp +18 -18
  238. mlpack/include/mlpack/methods/ann/layer/linear_impl.hpp +15 -15
  239. mlpack/include/mlpack/methods/ann/layer/linear_no_bias.hpp +15 -17
  240. mlpack/include/mlpack/methods/ann/layer/linear_no_bias_impl.hpp +20 -20
  241. mlpack/include/mlpack/methods/ann/layer/linear_recurrent.hpp +25 -14
  242. mlpack/include/mlpack/methods/ann/layer/linear_recurrent_impl.hpp +60 -31
  243. mlpack/include/mlpack/methods/ann/layer/log_softmax.hpp +17 -36
  244. mlpack/include/mlpack/methods/ann/layer/log_softmax_impl.hpp +58 -74
  245. mlpack/include/mlpack/methods/ann/layer/lstm.hpp +26 -29
  246. mlpack/include/mlpack/methods/ann/layer/lstm_impl.hpp +128 -124
  247. mlpack/include/mlpack/methods/ann/layer/max_pooling.hpp +19 -19
  248. mlpack/include/mlpack/methods/ann/layer/max_pooling_impl.hpp +14 -14
  249. mlpack/include/mlpack/methods/ann/layer/mean_pooling.hpp +24 -24
  250. mlpack/include/mlpack/methods/ann/layer/mean_pooling_impl.hpp +16 -16
  251. mlpack/include/mlpack/methods/ann/layer/multi_layer.hpp +36 -6
  252. mlpack/include/mlpack/methods/ann/layer/multi_layer_impl.hpp +6 -2
  253. mlpack/include/mlpack/methods/ann/layer/multihead_attention.hpp +26 -22
  254. mlpack/include/mlpack/methods/ann/layer/multihead_attention_impl.hpp +161 -64
  255. mlpack/include/mlpack/methods/ann/layer/nearest_interpolation.hpp +28 -25
  256. mlpack/include/mlpack/methods/ann/layer/nearest_interpolation_impl.hpp +36 -37
  257. mlpack/include/mlpack/methods/ann/layer/noisylinear.hpp +39 -42
  258. mlpack/include/mlpack/methods/ann/layer/noisylinear_impl.hpp +18 -18
  259. mlpack/include/mlpack/methods/ann/layer/padding.hpp +21 -17
  260. mlpack/include/mlpack/methods/ann/layer/padding_impl.hpp +33 -19
  261. mlpack/include/mlpack/methods/ann/layer/parametric_relu.hpp +26 -28
  262. mlpack/include/mlpack/methods/ann/layer/parametric_relu_impl.hpp +18 -18
  263. mlpack/include/mlpack/methods/ann/layer/radial_basis_function.hpp +41 -28
  264. mlpack/include/mlpack/methods/ann/layer/radial_basis_function_impl.hpp +42 -17
  265. mlpack/include/mlpack/methods/ann/layer/recurrent_layer.hpp +13 -0
  266. mlpack/include/mlpack/methods/ann/layer/relu6.hpp +19 -21
  267. mlpack/include/mlpack/methods/ann/layer/relu6_impl.hpp +14 -14
  268. mlpack/include/mlpack/methods/ann/layer/repeat.hpp +24 -25
  269. mlpack/include/mlpack/methods/ann/layer/repeat_impl.hpp +10 -10
  270. mlpack/include/mlpack/methods/ann/layer/serialization.hpp +64 -54
  271. mlpack/include/mlpack/methods/ann/layer/softmax.hpp +20 -20
  272. mlpack/include/mlpack/methods/ann/layer/softmax_impl.hpp +10 -10
  273. mlpack/include/mlpack/methods/ann/layer/softmin.hpp +20 -23
  274. mlpack/include/mlpack/methods/ann/layer/softmin_impl.hpp +10 -10
  275. mlpack/include/mlpack/methods/ann/layer/sum_reduce.hpp +103 -0
  276. mlpack/include/mlpack/methods/ann/layer/sum_reduce_impl.hpp +143 -0
  277. mlpack/include/mlpack/methods/ann/loss_functions/cosine_embedding_loss_impl.hpp +3 -3
  278. mlpack/include/mlpack/methods/ann/loss_functions/mean_bias_error_impl.hpp +1 -1
  279. mlpack/include/mlpack/methods/ann/loss_functions/multilabel_softmargin_loss_impl.hpp +1 -1
  280. mlpack/include/mlpack/methods/ann/loss_functions/negative_log_likelihood.hpp +2 -2
  281. mlpack/include/mlpack/methods/ann/loss_functions/negative_log_likelihood_impl.hpp +29 -15
  282. mlpack/include/mlpack/methods/ann/loss_functions/poisson_nll_loss_impl.hpp +1 -1
  283. mlpack/include/mlpack/methods/ann/models/models.hpp +17 -0
  284. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_layer.hpp +151 -0
  285. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_layer_impl.hpp +265 -0
  286. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_tiny.hpp +187 -0
  287. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_tiny_impl.hpp +206 -0
  288. mlpack/include/mlpack/methods/ann/regularizer/orthogonal_regularizer_impl.hpp +5 -3
  289. mlpack/include/mlpack/methods/ann/rnn.hpp +136 -42
  290. mlpack/include/mlpack/methods/ann/rnn_impl.hpp +230 -38
  291. mlpack/include/mlpack/methods/approx_kfn/drusilla_select_impl.hpp +1 -1
  292. mlpack/include/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_main.cpp +1 -1
  293. mlpack/include/mlpack/methods/bias_svd/bias_svd_function_impl.hpp +1 -1
  294. mlpack/include/mlpack/methods/cf/cf_model.hpp +1 -1
  295. mlpack/include/mlpack/methods/decision_tree/decision_tree.hpp +6 -6
  296. mlpack/include/mlpack/methods/decision_tree/decision_tree_impl.hpp +12 -12
  297. mlpack/include/mlpack/methods/decision_tree/decision_tree_main.cpp +0 -1
  298. mlpack/include/mlpack/methods/decision_tree/decision_tree_regressor.hpp +6 -6
  299. mlpack/include/mlpack/methods/decision_tree/decision_tree_regressor_impl.hpp +12 -12
  300. mlpack/include/mlpack/methods/det/det_main.cpp +1 -1
  301. mlpack/include/mlpack/methods/hmm/hmm_train_main.cpp +4 -4
  302. mlpack/include/mlpack/methods/hmm/hmm_util_impl.hpp +2 -2
  303. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree.hpp +6 -6
  304. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_impl.hpp +31 -31
  305. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_main.cpp +1 -2
  306. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_model.hpp +2 -2
  307. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_model_impl.hpp +1 -1
  308. mlpack/include/mlpack/methods/kde/kde_rules_impl.hpp +6 -6
  309. mlpack/include/mlpack/methods/lars/lars_impl.hpp +3 -3
  310. mlpack/include/mlpack/methods/linear_svm/linear_svm_function_impl.hpp +4 -4
  311. mlpack/include/mlpack/methods/linear_svm/linear_svm_main.cpp +3 -3
  312. mlpack/include/mlpack/methods/lmnn/lmnn_main.cpp +1 -1
  313. mlpack/include/mlpack/methods/lsh/lsh_main.cpp +1 -1
  314. mlpack/include/mlpack/methods/matrix_completion/matrix_completion_impl.hpp +1 -1
  315. mlpack/include/mlpack/methods/naive_bayes/naive_bayes_classifier_impl.hpp +1 -1
  316. mlpack/include/mlpack/methods/naive_bayes/nbc_main.cpp +3 -3
  317. mlpack/include/mlpack/methods/nca/nca_main.cpp +1 -1
  318. mlpack/include/mlpack/methods/neighbor_search/kfn_main.cpp +8 -8
  319. mlpack/include/mlpack/methods/neighbor_search/knn_main.cpp +8 -8
  320. mlpack/include/mlpack/methods/neighbor_search/neighbor_search.hpp +154 -34
  321. mlpack/include/mlpack/methods/neighbor_search/neighbor_search_impl.hpp +190 -51
  322. mlpack/include/mlpack/methods/neighbor_search/neighbor_search_stat.hpp +10 -0
  323. mlpack/include/mlpack/methods/neighbor_search/ns_model.hpp +15 -15
  324. mlpack/include/mlpack/methods/neighbor_search/ns_model_impl.hpp +55 -46
  325. mlpack/include/mlpack/methods/neighbor_search/typedef.hpp +42 -2
  326. mlpack/include/mlpack/methods/pca/pca_impl.hpp +2 -2
  327. mlpack/include/mlpack/methods/perceptron/perceptron.hpp +2 -2
  328. mlpack/include/mlpack/methods/perceptron/perceptron_impl.hpp +1 -1
  329. mlpack/include/mlpack/methods/perceptron/perceptron_main.cpp +2 -2
  330. mlpack/include/mlpack/methods/preprocess/image_converter_main.cpp +2 -3
  331. mlpack/include/mlpack/methods/preprocess/preprocess_binarize_main.cpp +2 -2
  332. mlpack/include/mlpack/methods/preprocess/preprocess_describe_main.cpp +0 -1
  333. mlpack/include/mlpack/methods/preprocess/preprocess_imputer_main.cpp +50 -129
  334. mlpack/include/mlpack/methods/preprocess/preprocess_one_hot_encoding_main.cpp +6 -6
  335. mlpack/include/mlpack/methods/preprocess/preprocess_scale_main.cpp +2 -3
  336. mlpack/include/mlpack/methods/preprocess/preprocess_split_main.cpp +3 -4
  337. mlpack/include/mlpack/methods/preprocess/scaling_model.hpp +6 -8
  338. mlpack/include/mlpack/methods/preprocess/scaling_model_impl.hpp +18 -20
  339. mlpack/include/mlpack/methods/random_forest/random_forest.hpp +5 -5
  340. mlpack/include/mlpack/methods/random_forest/random_forest_impl.hpp +9 -9
  341. mlpack/include/mlpack/methods/range_search/range_search_main.cpp +1 -1
  342. mlpack/include/mlpack/methods/rann/krann_main.cpp +1 -1
  343. mlpack/include/mlpack/methods/regularized_svd/regularized_svd_function_impl.hpp +1 -1
  344. mlpack/include/mlpack/methods/reinforcement_learning/async_learning_impl.hpp +8 -8
  345. mlpack/include/mlpack/methods/reinforcement_learning/ddpg_impl.hpp +16 -16
  346. mlpack/include/mlpack/methods/reinforcement_learning/environment/acrobot.hpp +4 -4
  347. mlpack/include/mlpack/methods/reinforcement_learning/environment/cart_pole.hpp +3 -3
  348. mlpack/include/mlpack/methods/reinforcement_learning/environment/cont_double_pole_cart.hpp +6 -5
  349. mlpack/include/mlpack/methods/reinforcement_learning/environment/pendulum.hpp +6 -5
  350. mlpack/include/mlpack/methods/reinforcement_learning/policy/aggregated_policy.hpp +2 -2
  351. mlpack/include/mlpack/methods/reinforcement_learning/q_learning_impl.hpp +10 -10
  352. mlpack/include/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp +21 -17
  353. mlpack/include/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp +69 -77
  354. mlpack/include/mlpack/methods/reinforcement_learning/q_networks/simple_dqn.hpp +9 -9
  355. mlpack/include/mlpack/methods/reinforcement_learning/sac_impl.hpp +14 -14
  356. mlpack/include/mlpack/methods/reinforcement_learning/td3_impl.hpp +14 -14
  357. mlpack/include/mlpack/methods/softmax_regression/softmax_regression_function_impl.hpp +1 -1
  358. mlpack/include/mlpack/methods/svdplusplus/svdplusplus_function_impl.hpp +1 -1
  359. mlpack/include/mlpack/namespace_compat.hpp +1 -0
  360. mlpack/include/mlpack/prereqs.hpp +1 -0
  361. mlpack/kde.cp313-win_amd64.pyd +0 -0
  362. mlpack/kernel_pca.cp313-win_amd64.pyd +0 -0
  363. mlpack/kfn.cp313-win_amd64.pyd +0 -0
  364. mlpack/kmeans.cp313-win_amd64.pyd +0 -0
  365. mlpack/knn.cp313-win_amd64.pyd +0 -0
  366. mlpack/krann.cp313-win_amd64.pyd +0 -0
  367. mlpack/lars.cp313-win_amd64.pyd +0 -0
  368. mlpack/linear_regression_predict.cp313-win_amd64.pyd +0 -0
  369. mlpack/linear_regression_train.cp313-win_amd64.pyd +0 -0
  370. mlpack/linear_svm.cp313-win_amd64.pyd +0 -0
  371. mlpack/lmnn.cp313-win_amd64.pyd +0 -0
  372. mlpack/local_coordinate_coding.cp313-win_amd64.pyd +0 -0
  373. mlpack/logistic_regression.cp313-win_amd64.pyd +0 -0
  374. mlpack/lsh.cp313-win_amd64.pyd +0 -0
  375. mlpack/mean_shift.cp313-win_amd64.pyd +0 -0
  376. mlpack/nbc.cp313-win_amd64.pyd +0 -0
  377. mlpack/nca.cp313-win_amd64.pyd +0 -0
  378. mlpack/nmf.cp313-win_amd64.pyd +0 -0
  379. mlpack/pca.cp313-win_amd64.pyd +0 -0
  380. mlpack/perceptron.cp313-win_amd64.pyd +0 -0
  381. mlpack/preprocess_binarize.cp313-win_amd64.pyd +0 -0
  382. mlpack/preprocess_describe.cp313-win_amd64.pyd +0 -0
  383. mlpack/preprocess_one_hot_encoding.cp313-win_amd64.pyd +0 -0
  384. mlpack/preprocess_scale.cp313-win_amd64.pyd +0 -0
  385. mlpack/preprocess_split.cp313-win_amd64.pyd +0 -0
  386. mlpack/radical.cp313-win_amd64.pyd +0 -0
  387. mlpack/random_forest.cp313-win_amd64.pyd +0 -0
  388. mlpack/softmax_regression.cp313-win_amd64.pyd +0 -0
  389. mlpack/sparse_coding.cp313-win_amd64.pyd +0 -0
  390. mlpack-4.7.0.dist-info/DELVEWHEEL +2 -0
  391. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/METADATA +2 -2
  392. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/RECORD +396 -377
  393. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/WHEEL +1 -1
  394. mlpack/include/mlpack/core/data/format.hpp +0 -31
  395. mlpack/include/mlpack/core/data/image_info.hpp +0 -102
  396. mlpack/include/mlpack/core/data/image_info_impl.hpp +0 -84
  397. mlpack/include/mlpack/core/data/load_image_impl.hpp +0 -171
  398. mlpack/include/mlpack/core/data/load_model_impl.hpp +0 -115
  399. mlpack/include/mlpack/core/data/load_vec_impl.hpp +0 -154
  400. mlpack/include/mlpack/core/data/map_policies/missing_policy.hpp +0 -148
  401. mlpack/include/mlpack/core/data/save_image_impl.hpp +0 -170
  402. mlpack/include/mlpack/core/data/types.hpp +0 -61
  403. mlpack/include/mlpack/core/data/types_impl.hpp +0 -83
  404. mlpack/include/mlpack/core/data/utilities.hpp +0 -158
  405. mlpack/include/mlpack/core/util/gitversion.hpp +0 -1
  406. mlpack/include/mlpack/methods/ann/convolution_rules/fft_convolution.hpp +0 -213
  407. mlpack/include/mlpack/methods/ann/convolution_rules/svd_convolution.hpp +0 -201
  408. mlpack/include/mlpack/methods/ann/layer/not_adapted/gru.hpp +0 -226
  409. mlpack/include/mlpack/methods/ann/layer/not_adapted/gru_impl.hpp +0 -367
  410. mlpack/include/mlpack/methods/ann/layer/not_adapted/lookup.hpp +0 -139
  411. mlpack/include/mlpack/methods/ann/layer/not_adapted/lookup_impl.hpp +0 -98
  412. mlpack-4.6.2.dist-info/DELVEWHEEL +0 -2
  413. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/top_level.txt +0 -0
  414. /mlpack.libs/{libopenblas-9e6d070f769e6580e8c55c0cf83b80a5.dll → libopenblas-c7f521b507686ddc25bee7538a80c374.dll} +0 -0
  415. /mlpack.libs/{msvcp140-50208655e42969b9a5ab8a4e0186bbb9.dll → msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll} +0 -0
@@ -16,10 +16,9 @@
16
16
  #include <mlpack/prereqs.hpp>
17
17
  #include <mlpack/core/stb/stb.hpp>
18
18
 
19
- #include "image_info.hpp"
19
+ #include "image_options.hpp"
20
20
 
21
21
  namespace mlpack {
22
- namespace data {
23
22
 
24
23
  /**
25
24
  * Image resize/crop interfaces.
@@ -42,8 +41,9 @@ namespace data {
42
41
  * @param newHeight The new requested height for the resized image.
43
42
  */
44
43
  template<typename eT>
45
- inline void ResizeImages(arma::Mat<eT>& images, data::ImageInfo& info,
46
- const size_t newWidth, const size_t newHeight)
44
+ void ResizeImages(arma::Mat<eT>& images, ImageOptions& opts,
45
+ const size_t newWidth, const size_t newHeight,
46
+ const typename std::enable_if_t<std::is_floating_point<eT>::value>* = 0)
47
47
  {
48
48
  // First check if we are resizing one image or a group of images, the check
49
49
  // is going to be different depending on the dimension.
@@ -52,7 +52,7 @@ inline void ResizeImages(arma::Mat<eT>& images, data::ImageInfo& info,
52
52
  // assume that all images have identical dimension and need to be resized.
53
53
  if (images.n_cols == 1)
54
54
  {
55
- if (images.n_elem != (info.Width() * info.Height() * info.Channels()))
55
+ if (images.n_elem != (opts.Width() * opts.Height() * opts.Channels()))
56
56
  {
57
57
  Log::Fatal << "ResizeImages(): dimensions mismatch: the number of pixels "
58
58
  << "is not equal to the dimension provided by the given ImageInfo."
@@ -61,7 +61,7 @@ inline void ResizeImages(arma::Mat<eT>& images, data::ImageInfo& info,
61
61
  }
62
62
  else
63
63
  {
64
- if (images.n_rows != (info.Width() * info.Height() * info.Channels()))
64
+ if (images.n_rows != (opts.Width() * opts.Height() * opts.Channels()))
65
65
  {
66
66
  Log::Fatal << "ResizeImages(): dimension mismatch: in the case of "
67
67
  << "several images, please check that all the images have the same "
@@ -71,61 +71,127 @@ inline void ResizeImages(arma::Mat<eT>& images, data::ImageInfo& info,
71
71
  }
72
72
 
73
73
  stbir_pixel_layout channels;
74
- if (info.Channels() == 1)
74
+ if (opts.Channels() == 1)
75
75
  {
76
76
  channels = STBIR_1CHANNEL;
77
77
  }
78
- else if (info.Channels() == 3)
78
+ else if (opts.Channels() == 3)
79
79
  {
80
80
  channels = STBIR_RGB;
81
81
  }
82
+ else
83
+ {
84
+ Log::Fatal << "ResizeImages(): number of channels should be either 1 or 3,"
85
+ << " not " << opts.Channels() << "." << std::endl;
86
+ }
82
87
 
83
- // This is required since STB only accept unsigned chars.
84
- // set the new matrix size for copy
85
- size_t newDimension = newWidth * newHeight * info.Channels();
88
+ size_t newDimension = newWidth * newHeight * opts.Channels();
89
+ arma::Mat<float> originalImagesFloat;
86
90
  arma::Mat<float> resizedFloatImages;
87
- arma::Mat<unsigned char> resizedImages;
88
91
 
89
- // This is not optimal, but I do not want to allocate memory for nothing.
90
- if (std::is_same<eT, float>::value)
91
- resizedFloatImages.set_size(newDimension, images.n_cols);
92
+ // We need to covert to a float if we are resizing a double.
93
+ if constexpr (std::is_same_v<eT, float>)
94
+ {
95
+ MakeAlias(originalImagesFloat, images, images.n_rows, images.n_cols);
96
+ }
92
97
  else
93
- resizedImages.set_size(newDimension, images.n_cols);
98
+ {
99
+ originalImagesFloat =
100
+ arma::conv_to<arma::Mat<float>>::from(std::move(images));
101
+ }
102
+
103
+ // recover the original min/max values for clamping.
104
+ float minOriginal = images.min();
105
+ float maxOriginal = images.max();
94
106
 
107
+ resizedFloatImages.set_size(newDimension, images.n_cols);
95
108
  for (size_t i = 0; i < images.n_cols; ++i)
96
109
  {
97
- if constexpr (std::is_same<eT, unsigned char>::value)
110
+ stbir_resize_float_linear(originalImagesFloat.colptr(i), opts.Width(),
111
+ opts.Height(), 0, resizedFloatImages.colptr(i), newWidth, newHeight,
112
+ 0, channels);
113
+ }
114
+
115
+ images = arma::conv_to<arma::Mat<eT>>::from(std::move(resizedFloatImages));
116
+
117
+ images.clamp(minOriginal, maxOriginal);
118
+
119
+ opts.Width() = newWidth;
120
+ opts.Height() = newHeight;
121
+ }
122
+
123
+ template<typename eT>
124
+ void ResizeImages(arma::Mat<eT>& images, ImageOptions& opts,
125
+ const size_t newWidth, const size_t newHeight,
126
+ const typename std::enable_if_t<std::is_integral_v<eT>>* = 0)
127
+ {
128
+ // First check if we are resizing one image or a group of images, the check
129
+ // is going to be different depending on the dimension.
130
+ // If the user would like to resize a set of images of different dimensions,
131
+ // then they need to consider passing them image by image. Otherwise, as
132
+ // assume that all images have identical dimension and need to be resized.
133
+ if (images.n_cols == 1)
134
+ {
135
+ if (images.n_elem != (opts.Width() * opts.Height() * opts.Channels()))
98
136
  {
99
- stbir_resize_uint8_linear(images.colptr(i), info.Width(), info.Height(),
100
- 0, resizedImages.colptr(i), newWidth, newHeight, 0, channels);
137
+ Log::Fatal << "ResizeImages(): dimensions mismatch: the number of pixels "
138
+ << "is not equal to the dimension provided by the given ImageInfo."
139
+ << std::endl;
101
140
  }
102
- else if constexpr (std::is_same<eT, float>::value)
141
+ }
142
+ else
143
+ {
144
+ if (images.n_rows != (opts.Width() * opts.Height() * opts.Channels()))
103
145
  {
104
- stbir_resize_float_linear(images.colptr(i), info.Width(), info.Height(),
105
- 0, resizedFloatImages.colptr(i), newWidth, newHeight, 0, channels);
146
+ Log::Fatal << "ResizeImages(): dimension mismatch: in the case of "
147
+ << "several images, please check that all the images have the same "
148
+ << "dimensions; if not, load each image in one column and call this "
149
+ << "function iteratively." << std::endl;
106
150
  }
107
- else
108
- {
109
- arma::Mat<unsigned char> tempSrc =
110
- arma::conv_to<arma::Mat<unsigned char>>::from(images);
151
+ }
111
152
 
112
- stbir_resize_uint8_linear(tempSrc.colptr(i), info.Width(), info.Height(),
113
- 0, resizedImages.colptr(i), newWidth, newHeight, 0, channels);
114
- }
153
+ stbir_pixel_layout channels;
154
+ if (opts.Channels() == 1)
155
+ {
156
+ channels = STBIR_1CHANNEL;
157
+ }
158
+ else if (opts.Channels() == 3)
159
+ {
160
+ channels = STBIR_RGB;
161
+ }
162
+ else
163
+ {
164
+ Log::Fatal << "ResizeImages(): number of channels should be either 1 or 3,"
165
+ << " not " << opts.Channels() << "." << std::endl;
115
166
  }
116
167
 
117
- if (std::is_same<eT, float>::value)
168
+ // This is required since STB only accept unsigned chars.
169
+ // set the new matrix size for copy
170
+ size_t newDimension = newWidth * newHeight * opts.Channels();
171
+ arma::Mat<unsigned char> resizedImages;
172
+ arma::Mat<unsigned char> originalImages;
173
+ if constexpr (std::is_same_v<eT, unsigned char>)
118
174
  {
119
- // The conv_to is needed here so that this code compiles even when this
120
- // branch isn't taken.
121
- images = arma::conv_to<arma::Mat<eT>>::from(std::move(resizedFloatImages));
175
+ MakeAlias(originalImages, images, images.n_rows, images.n_cols);
122
176
  }
123
177
  else
124
178
  {
125
- images = arma::conv_to<arma::Mat<eT>>::from(std::move(resizedImages));
179
+ originalImages =
180
+ arma::conv_to<arma::Mat<unsigned char>>::from(std::move(images));
126
181
  }
127
- info.Width() = newWidth;
128
- info.Height() = newHeight;
182
+
183
+ resizedImages.set_size(newDimension, images.n_cols);
184
+
185
+ for (size_t i = 0; i < images.n_cols; ++i)
186
+ {
187
+ stbir_resize_uint8_linear(originalImages.colptr(i), opts.Width(),
188
+ opts.Height(), 0, resizedImages.colptr(i), newWidth, newHeight, 0,
189
+ channels);
190
+ }
191
+
192
+ images = arma::conv_to<arma::Mat<eT>>::from(std::move(resizedImages));
193
+ opts.Width() = newWidth;
194
+ opts.Height() = newHeight;
129
195
  }
130
196
 
131
197
  /**
@@ -145,17 +211,17 @@ inline void ResizeImages(arma::Mat<eT>& images, data::ImageInfo& info,
145
211
  * @param newHeight The new requested height for the resized image.
146
212
  */
147
213
  template<typename eT>
148
- inline void ResizeCropImages(arma::Mat<eT>& images, data::ImageInfo& info,
214
+ void ResizeCropImages(arma::Mat<eT>& images, ImageOptions& opts,
149
215
  const size_t newWidth, const size_t newHeight)
150
216
  {
151
217
  float ratioW = static_cast<float>(newWidth) /
152
- static_cast<float>(info.Width());
218
+ static_cast<float>(opts.Width());
153
219
  float ratioH = static_cast<float>(newHeight) /
154
- static_cast<float>(info.Height());
220
+ static_cast<float>(opts.Height());
155
221
 
156
222
  float largestRatio = ratioW > ratioH ? ratioW : ratioH;
157
- int midWidth = static_cast<int>(largestRatio * info.Width());
158
- int midHeight = static_cast<int>(largestRatio * info.Height());
223
+ int midWidth = static_cast<int>(largestRatio * opts.Width());
224
+ int midHeight = static_cast<int>(largestRatio * opts.Height());
159
225
 
160
226
  // Edge cases, what if the width / height value is odd ? then increase the
161
227
  // resize value to the closest pair number.
@@ -169,16 +235,16 @@ inline void ResizeCropImages(arma::Mat<eT>& images, data::ImageInfo& info,
169
235
  if (midWidth % 2 != 0)
170
236
  midWidth = midWidth + 1;
171
237
 
172
- ResizeImages(images, info, midWidth, midHeight);
238
+ ResizeImages(images, opts, midWidth, midHeight);
173
239
  int nColsCrop = midWidth > midHeight ? (midWidth - midHeight) : 0;
174
240
  int nRowsCrop = midHeight > midWidth ? (midHeight - midWidth) : 0;
175
241
 
176
242
  //temporary matrix to hold the images while being resized.
177
- arma::Mat<eT> tmpImages(newHeight * newWidth * info.Channels(),
243
+ arma::Mat<eT> tmpImages(newHeight * newWidth * opts.Channels(),
178
244
  images.n_cols);
179
245
  if (nRowsCrop != 0)
180
246
  {
181
- int cropUpDownEqually = (nRowsCrop / 2) * info.Channels() * midWidth;
247
+ int cropUpDownEqually = (nRowsCrop / 2) * opts.Channels() * midWidth;
182
248
  tmpImages = images.rows(cropUpDownEqually,
183
249
  images.n_rows - cropUpDownEqually - 1);
184
250
  }
@@ -194,7 +260,7 @@ inline void ResizeCropImages(arma::Mat<eT>& images, data::ImageInfo& info,
194
260
  // B into Row 3.
195
261
  // Cols are the Width, no change
196
262
  // Slices are the Height of the image instead of rows.
197
- arma::Cube<eT> cube(images.colptr(u), info.Channels(), midWidth,
263
+ arma::Cube<eT> cube(images.colptr(u), opts.Channels(), midWidth,
198
264
  midHeight, false, false);
199
265
  tmpImages.col(u) = vectorise(cube.cols((nColsCrop / 2),
200
266
  (cube.n_cols - (nColsCrop / 2) - 1)));
@@ -205,11 +271,10 @@ inline void ResizeCropImages(arma::Mat<eT>& images, data::ImageInfo& info,
205
271
  images = std::move(tmpImages);
206
272
  }
207
273
  }
208
- info.Width() = newWidth;
209
- info.Height() = newHeight;
274
+ opts.Width() = newWidth;
275
+ opts.Height() = newHeight;
210
276
  }
211
277
 
212
- } // namespace data
213
278
  } // namespace mlpack
214
279
 
215
280
  #endif
@@ -15,17 +15,17 @@
15
15
  #include <mlpack/prereqs.hpp>
16
16
 
17
17
  namespace mlpack {
18
- namespace data {
18
+
19
19
  /**
20
- * A simple custom imputation class
21
- * @tparam T Type of armadillo matrix
20
+ * A simple custom imputation class, which replaces missing values with a
21
+ * predefined value.
22
22
  */
23
- template <typename T>
23
+ template<typename ElemType = double>
24
24
  class CustomImputation
25
25
  {
26
26
  public:
27
- CustomImputation(T customValue):
28
- customValue(std::move(customValue))
27
+ CustomImputation(const ElemType customValue):
28
+ customValue(customValue)
29
29
  {
30
30
  // nothing to initialize here
31
31
  }
@@ -41,42 +41,26 @@ class CustomImputation
41
41
  * @param dimension Index of the dimension of the mappedValue.
42
42
  * @param columnMajor State of whether the input matrix is columnMajor or not.
43
43
  */
44
- void Impute(arma::Mat<T>& input,
45
- const T& mappedValue,
44
+ template<typename MatType>
45
+ void Impute(MatType& input,
46
+ const typename MatType::elem_type& missingValue,
46
47
  const size_t dimension,
47
48
  const bool columnMajor = true)
48
49
  {
49
- // replace the target value to custom value
50
+ typedef typename MatType::elem_type T;
51
+
52
+ // Here we can use .replace() directly.
50
53
  if (columnMajor)
51
- {
52
- for (size_t i = 0; i < input.n_cols; ++i)
53
- {
54
- if (input(dimension, i) == mappedValue ||
55
- std::isnan(input(dimension, i)))
56
- {
57
- input(dimension, i) = customValue;
58
- }
59
- }
60
- }
54
+ input.row(dimension).replace(missingValue, (T) customValue);
61
55
  else
62
- {
63
- for (size_t i = 0; i < input.n_rows; ++i)
64
- {
65
- if (input(i, dimension) == mappedValue ||
66
- std::isnan(input(i, dimension)))
67
- {
68
- input(i, dimension) = customValue;
69
- }
70
- }
71
- }
56
+ input.col(dimension).replace(missingValue, (T) customValue);
72
57
  }
73
58
 
74
59
  private:
75
- //! A user-defined value that the user wants to replace missing values with.
76
- T customValue;
60
+ // A user-defined value that the user wants to replace missing values with.
61
+ ElemType customValue;
77
62
  }; // class CustomImputation
78
63
 
79
- } // namespace data
80
64
  } // namespace mlpack
81
65
 
82
66
  #endif
@@ -15,13 +15,11 @@
15
15
  #include <mlpack/prereqs.hpp>
16
16
 
17
17
  namespace mlpack {
18
- namespace data {
18
+
19
19
  /**
20
- * A complete-case analysis to remove the values containing mappedValue.
20
+ * A complete-case analysis to remove the columns containing missingValue.
21
21
  * Removes all data for a case that has one or more missing values.
22
- * @tparam T Type of armadillo matrix
23
22
  */
24
- template <typename T>
25
23
  class ListwiseDeletion
26
24
  {
27
25
  public:
@@ -30,45 +28,37 @@ class ListwiseDeletion
30
28
  * remove the whole row or column. The result is overwritten to the input.
31
29
  *
32
30
  * @param input Matrix that contains mappedValue.
33
- * @param mappedValue Value that the user wants to get rid of.
34
- * @param dimension Index of the dimension of the mappedValue.
31
+ * @param missingValue Value that the user wants to get rid of.
32
+ * @param dimension Index of the dimension to search for missingValue.
35
33
  * @param columnMajor State of whether the input matrix is columnMajor or not.
36
34
  */
37
- void Impute(arma::Mat<T>& input,
38
- const T& mappedValue,
35
+ template<typename MatType>
36
+ void Impute(MatType& input,
37
+ const typename MatType::elem_type& missingValue,
39
38
  const size_t dimension,
40
39
  const bool columnMajor = true)
41
40
  {
42
- std::vector<arma::uword> colsToKeep;
41
+ static_assert(!IsSparse<MatType>::value, "ListwiseDeletion::Impute(): "
42
+ "sparse matrix imputation is not supported; use a dense matrix "
43
+ "instead!");
43
44
 
44
- if (columnMajor)
45
+ if (std::isnan(missingValue))
45
46
  {
46
- for (size_t i = 0; i < input.n_cols; ++i)
47
- {
48
- if (!(input(dimension, i) == mappedValue ||
49
- std::isnan(input(dimension, i))))
50
- {
51
- colsToKeep.push_back(i);
52
- }
53
- }
54
- input = input.cols(arma::uvec(colsToKeep));
47
+ if (columnMajor)
48
+ input.shed_cols(find_nan(input.row(dimension)));
49
+ else
50
+ input.shed_rows(find_nan(input.col(dimension)));
55
51
  }
56
52
  else
57
53
  {
58
- for (size_t i = 0; i < input.n_rows; ++i)
59
- {
60
- if (!(input(i, dimension) == mappedValue ||
61
- std::isnan(input(i, dimension))))
62
- {
63
- colsToKeep.push_back(i);
64
- }
65
- }
66
- input = input.rows(arma::uvec(colsToKeep));
54
+ if (columnMajor)
55
+ input.shed_cols(find(input.row(dimension) == missingValue));
56
+ else
57
+ input.shed_rows(find(input.col(dimension) == missingValue));
67
58
  }
68
59
  }
69
60
  }; // class ListwiseDeletion
70
61
 
71
- } // namespace data
72
62
  } // namespace mlpack
73
63
 
74
64
  #endif
@@ -15,12 +15,10 @@
15
15
  #include <mlpack/prereqs.hpp>
16
16
 
17
17
  namespace mlpack {
18
- namespace data {
18
+
19
19
  /**
20
- * A simple mean imputation class
21
- * @tparam T Type of armadillo matrix
20
+ * A simple mean imputation class.
22
21
  */
23
- template <typename T>
24
22
  class MeanImputation
25
23
  {
26
24
  public:
@@ -29,76 +27,147 @@ class MeanImputation
29
27
  * replaces it with the mean of the given dimension. The result is overwritten
30
28
  * to the input matrix.
31
29
  *
32
- * @param input Matrix that contains mappedValue.
33
- * @param mappedValue Value that the user wants to get rid of.
34
- * @param dimension Index of the dimension of the mappedValue.
35
- * @param columnMajor State of whether the input matrix is columnMajor or not.
30
+ * @param input Matrix that contains missingValue.
31
+ * @param missingValue Value to replace with the mean.
32
+ * @param dimension Index of the dimension to impute.
33
+ * @param columnMajor If true, `input` is column major.
36
34
  */
37
- void Impute(arma::Mat<T>& input,
38
- const T& mappedValue,
39
- const size_t dimension,
40
- const bool columnMajor = true)
35
+ template<typename T>
36
+ static void Impute(arma::Mat<T>& input,
37
+ const T& missingValue,
38
+ const size_t dimension,
39
+ const bool columnMajor = true)
41
40
  {
42
- double sum = 0;
43
- size_t elems = 0; // excluding nan or missing target
44
-
45
- using PairType = std::pair<size_t, size_t>;
46
- // dimensions and indexes are saved as pairs inside this vector.
47
- std::vector<PairType> targets;
41
+ T sum = 0;
42
+ size_t elems = 0; // Excluding missingValue.
48
43
 
49
-
50
- // calculate number of elements and sum of them excluding mapped value or
51
- // nan. while doing that, remember where mappedValue or NaN exists.
52
- if (columnMajor)
44
+ // Different implementations if we are searching for NaN.
45
+ if (std::isnan(missingValue))
53
46
  {
54
- for (size_t i = 0; i < input.n_cols; ++i)
47
+ if (columnMajor)
55
48
  {
56
- if (input(dimension, i) == mappedValue ||
57
- std::isnan(input(dimension, i)))
49
+ #pragma omp parallel for schedule(static)
50
+ for (size_t i = 0; i < input.n_cols; ++i)
58
51
  {
59
- targets.emplace_back(dimension, i);
52
+ if (!std::isnan(input(dimension, i)))
53
+ {
54
+ ++elems;
55
+ sum += input(dimension, i);
56
+ }
60
57
  }
61
- else
58
+ }
59
+ else
60
+ {
61
+ #pragma omp parallel for schedule(static)
62
+ for (size_t i = 0; i < input.n_rows; ++i)
62
63
  {
63
- elems++;
64
- sum += input(dimension, i);
64
+ if (!std::isnan(input(i, dimension)))
65
+ {
66
+ ++elems;
67
+ sum += input(i, dimension);
68
+ }
65
69
  }
66
70
  }
67
71
  }
68
72
  else
69
73
  {
70
- for (size_t i = 0; i < input.n_rows; ++i)
74
+ if (columnMajor)
71
75
  {
72
- if (input(i, dimension) == mappedValue ||
73
- std::isnan(input(i, dimension)))
76
+ #pragma omp parallel for schedule(static)
77
+ for (size_t i = 0; i < input.n_cols; ++i)
74
78
  {
75
- targets.emplace_back(i, dimension);
79
+ if (input(dimension, i) != missingValue)
80
+ {
81
+ ++elems;
82
+ sum += input(dimension, i);
83
+ }
76
84
  }
77
- else
85
+ }
86
+ else
87
+ {
88
+ #pragma omp parallel for schedule(static)
89
+ for (size_t i = 0; i < input.n_rows; ++i)
78
90
  {
79
- elems++;
80
- sum += input(i, dimension);
91
+ if (input(i, dimension) != missingValue)
92
+ {
93
+ ++elems;
94
+ sum += input(i, dimension);
95
+ }
81
96
  }
82
97
  }
83
98
  }
84
99
 
85
100
  if (elems == 0)
86
- Log::Fatal << "it is impossible to calculate mean; no valid elements in "
87
- << "the dimension" << std::endl;
101
+ {
102
+ throw std::invalid_argument("MeanImputation::Impute(): no non-missing "
103
+ "elements; cannot compute mean!");
104
+ }
88
105
 
89
- // calculate mean;
106
+ // Now compute the mean.
90
107
  const double mean = sum / elems;
91
108
 
92
- // Now replace the calculated mean to the missing variables
93
- // It only needs to loop through targets vector, not the whole matrix.
94
- for (const PairType& target : targets)
109
+ // Replace all values with the computed mean.
110
+ if (columnMajor)
111
+ input.row(dimension).replace(missingValue, mean);
112
+ else
113
+ input.col(dimension).replace(missingValue, mean);
114
+ }
115
+
116
+ template<typename MatType>
117
+ static void Impute(MatType& input,
118
+ const typename MatType::elem_type& missingValue,
119
+ const size_t dimension,
120
+ const bool columnMajor = true)
121
+ {
122
+ static_assert(!IsSparse<MatType>::value, "MeanImputation::Impute(): sparse "
123
+ "matrix imputation is not supported; use a dense matrix instead!");
124
+
125
+ typedef typename MatType::elem_type ElemType;
126
+
127
+ // This less efficient implementation uses Armadillo (or Bandicoot)
128
+ // directly, but at the cost of more memory.
129
+ ElemType meanValue;
130
+ MatType tmp;
131
+ if (std::isnan(missingValue))
95
132
  {
96
- input(target.first, target.second) = mean;
133
+ if (columnMajor)
134
+ tmp = input.row(dimension);
135
+ else
136
+ tmp = input.col(dimension).t(); // make sure it is a row vector
137
+
138
+ tmp.shed_cols(find_nan(tmp));
97
139
  }
140
+ else
141
+ {
142
+ typedef typename GetUColType<MatType>::type UCol;
143
+ if (columnMajor)
144
+ {
145
+ tmp = input.submat(UCol({ dimension }),
146
+ find(input.row(dimension) != missingValue));
147
+ }
148
+ else
149
+ {
150
+ tmp = input.submat(
151
+ find(input.col(dimension) != missingValue), UCol({ dimension }));
152
+ }
153
+ }
154
+
155
+ // Compute the mean on the subset of valid elements.
156
+ if (tmp.is_empty())
157
+ {
158
+ throw std::invalid_argument("MeanImputation::Impute(): no non-missing "
159
+ "elements; cannot compute mean!");
160
+ }
161
+ meanValue = mean(vectorise(tmp));
162
+
163
+ // Now impute the computed mean value.
164
+ if (columnMajor)
165
+ input.row(dimension).replace(missingValue, meanValue);
166
+ else
167
+ input.col(dimension).replace(missingValue, meanValue);
98
168
  }
99
169
  }; // class MeanImputation
100
170
 
101
- } // namespace data
102
171
  } // namespace mlpack
103
172
 
104
173
  #endif