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
@@ -18,33 +18,33 @@
18
18
  namespace mlpack {
19
19
 
20
20
  template<
21
+ typename MatType,
21
22
  typename ForwardConvolutionRule,
22
23
  typename BackwardConvolutionRule,
23
- typename GradientConvolutionRule,
24
- typename MatType
24
+ typename GradientConvolutionRule
25
25
  >
26
- ConvolutionType<
26
+ Convolution<
27
+ MatType,
27
28
  ForwardConvolutionRule,
28
29
  BackwardConvolutionRule,
29
- GradientConvolutionRule,
30
- MatType
31
- >::ConvolutionType() : Layer<MatType>()
30
+ GradientConvolutionRule
31
+ >::Convolution() : Layer<MatType>()
32
32
  {
33
33
  // Nothing to do here.
34
34
  }
35
35
 
36
36
  template<
37
+ typename MatType,
37
38
  typename ForwardConvolutionRule,
38
39
  typename BackwardConvolutionRule,
39
- typename GradientConvolutionRule,
40
- typename MatType
40
+ typename GradientConvolutionRule
41
41
  >
42
- ConvolutionType<
42
+ Convolution<
43
+ MatType,
43
44
  ForwardConvolutionRule,
44
45
  BackwardConvolutionRule,
45
- GradientConvolutionRule,
46
- MatType
47
- >::ConvolutionType(
46
+ GradientConvolutionRule
47
+ >::Convolution(
48
48
  const size_t maps,
49
49
  const size_t kernelWidth,
50
50
  const size_t kernelHeight,
@@ -54,7 +54,7 @@ ConvolutionType<
54
54
  const size_t padH,
55
55
  const std::string& paddingType,
56
56
  const bool useBias) :
57
- ConvolutionType(
57
+ Convolution(
58
58
  maps,
59
59
  kernelWidth,
60
60
  kernelHeight,
@@ -69,17 +69,17 @@ ConvolutionType<
69
69
  }
70
70
 
71
71
  template<
72
+ typename MatType,
72
73
  typename ForwardConvolutionRule,
73
74
  typename BackwardConvolutionRule,
74
- typename GradientConvolutionRule,
75
- typename MatType
75
+ typename GradientConvolutionRule
76
76
  >
77
- ConvolutionType<
77
+ Convolution<
78
+ MatType,
78
79
  ForwardConvolutionRule,
79
80
  BackwardConvolutionRule,
80
- GradientConvolutionRule,
81
- MatType
82
- >::ConvolutionType(
81
+ GradientConvolutionRule
82
+ >::Convolution(
83
83
  const size_t maps,
84
84
  const size_t kernelWidth,
85
85
  const size_t kernelHeight,
@@ -106,17 +106,17 @@ ConvolutionType<
106
106
  }
107
107
 
108
108
  template<
109
+ typename MatType,
109
110
  typename ForwardConvolutionRule,
110
111
  typename BackwardConvolutionRule,
111
- typename GradientConvolutionRule,
112
- typename MatType
112
+ typename GradientConvolutionRule
113
113
  >
114
- ConvolutionType<
114
+ Convolution<
115
+ MatType,
115
116
  ForwardConvolutionRule,
116
117
  BackwardConvolutionRule,
117
- GradientConvolutionRule,
118
- MatType
119
- >::ConvolutionType(const ConvolutionType& other) :
118
+ GradientConvolutionRule
119
+ >::Convolution(const Convolution& other) :
120
120
  Layer<MatType>(other),
121
121
  maps(other.maps),
122
122
  kernelWidth(other.kernelWidth),
@@ -140,17 +140,17 @@ ConvolutionType<
140
140
  }
141
141
 
142
142
  template<
143
+ typename MatType,
143
144
  typename ForwardConvolutionRule,
144
145
  typename BackwardConvolutionRule,
145
- typename GradientConvolutionRule,
146
- typename MatType
146
+ typename GradientConvolutionRule
147
147
  >
148
- ConvolutionType<
148
+ Convolution<
149
+ MatType,
149
150
  ForwardConvolutionRule,
150
151
  BackwardConvolutionRule,
151
- GradientConvolutionRule,
152
- MatType
153
- >::ConvolutionType(ConvolutionType&& other) :
152
+ GradientConvolutionRule
153
+ >::Convolution(Convolution&& other) :
154
154
  Layer<MatType>(std::move(other)),
155
155
  maps(std::move(other.maps)),
156
156
  kernelWidth(std::move(other.kernelWidth)),
@@ -174,23 +174,23 @@ ConvolutionType<
174
174
  }
175
175
 
176
176
  template<
177
+ typename MatType,
177
178
  typename ForwardConvolutionRule,
178
179
  typename BackwardConvolutionRule,
179
- typename GradientConvolutionRule,
180
- typename MatType
180
+ typename GradientConvolutionRule
181
181
  >
182
- ConvolutionType<
182
+ Convolution<
183
+ MatType,
183
184
  ForwardConvolutionRule,
184
185
  BackwardConvolutionRule,
185
- GradientConvolutionRule,
186
- MatType
186
+ GradientConvolutionRule
187
187
  >&
188
- ConvolutionType<
188
+ Convolution<
189
+ MatType,
189
190
  ForwardConvolutionRule,
190
191
  BackwardConvolutionRule,
191
- GradientConvolutionRule,
192
- MatType
193
- >::operator=(const ConvolutionType& other)
192
+ GradientConvolutionRule
193
+ >::operator=(const Convolution& other)
194
194
  {
195
195
  if (&other != this)
196
196
  {
@@ -218,23 +218,23 @@ ConvolutionType<
218
218
  }
219
219
 
220
220
  template<
221
+ typename MatType,
221
222
  typename ForwardConvolutionRule,
222
223
  typename BackwardConvolutionRule,
223
- typename GradientConvolutionRule,
224
- typename MatType
224
+ typename GradientConvolutionRule
225
225
  >
226
- ConvolutionType<
226
+ Convolution<
227
+ MatType,
227
228
  ForwardConvolutionRule,
228
229
  BackwardConvolutionRule,
229
- GradientConvolutionRule,
230
- MatType
230
+ GradientConvolutionRule
231
231
  >&
232
- ConvolutionType<
232
+ Convolution<
233
+ MatType,
233
234
  ForwardConvolutionRule,
234
235
  BackwardConvolutionRule,
235
- GradientConvolutionRule,
236
- MatType
237
- >::operator=(ConvolutionType&& other)
236
+ GradientConvolutionRule
237
+ >::operator=(Convolution&& other)
238
238
  {
239
239
  if (&other != this)
240
240
  {
@@ -262,16 +262,16 @@ ConvolutionType<
262
262
  }
263
263
 
264
264
  template<
265
+ typename MatType,
265
266
  typename ForwardConvolutionRule,
266
267
  typename BackwardConvolutionRule,
267
- typename GradientConvolutionRule,
268
- typename MatType
268
+ typename GradientConvolutionRule
269
269
  >
270
- void ConvolutionType<
270
+ void Convolution<
271
+ MatType,
271
272
  ForwardConvolutionRule,
272
273
  BackwardConvolutionRule,
273
- GradientConvolutionRule,
274
- MatType
274
+ GradientConvolutionRule
275
275
  >::SetWeights(const MatType& weightsIn)
276
276
  {
277
277
  MakeAlias(weight, weightsIn, kernelWidth, kernelHeight, maps * inMaps);
@@ -287,16 +287,16 @@ void ConvolutionType<
287
287
  }
288
288
 
289
289
  template<
290
+ typename MatType,
290
291
  typename ForwardConvolutionRule,
291
292
  typename BackwardConvolutionRule,
292
- typename GradientConvolutionRule,
293
- typename MatType
293
+ typename GradientConvolutionRule
294
294
  >
295
- void ConvolutionType<
295
+ void Convolution<
296
+ MatType,
296
297
  ForwardConvolutionRule,
297
298
  BackwardConvolutionRule,
298
- GradientConvolutionRule,
299
- MatType
299
+ GradientConvolutionRule
300
300
  >::Forward(const MatType& input, MatType& output)
301
301
  {
302
302
  batchSize = input.n_cols;
@@ -313,61 +313,57 @@ void ConvolutionType<
313
313
  padding.Forward(input, inputPadded);
314
314
  }
315
315
 
316
- CubeType inputTemp;
317
- MakeAlias(inputTemp, (usingPadding ? inputPadded : input), paddedRows,
318
- paddedCols, inMaps * higherInDimensions * batchSize);
319
-
320
- MakeAlias(outputTemp, output, this->outputDimensions[0],
321
- this->outputDimensions[1], maps * higherInDimensions * batchSize);
322
- outputTemp.zeros();
316
+ output.zeros();
323
317
 
324
318
  // We "ignore" dimensions higher than the third---that means that we just pass
325
319
  // them through and treat them like different input points.
326
320
  //
327
321
  // If we eventually have a way to do convolutions for a single kernel
328
322
  // in-batch, then this strategy may not be the most efficient solution.
323
+ #pragma omp parallel for schedule(dynamic) private(outputTemp)
329
324
  for (size_t offset = 0; offset < (higherInDimensions * batchSize); ++offset)
330
325
  {
331
326
  const size_t fullInputOffset = offset * inMaps;
332
327
  const size_t fullOutputOffset = offset * maps;
333
-
334
- // Iterate over output maps.
335
- #pragma omp parallel for
336
- for (size_t outMap = 0; outMap < (size_t) maps; ++outMap)
328
+ CubeType inputTemp;
329
+
330
+ MakeAlias(inputTemp, (usingPadding ? inputPadded : input), paddedRows,
331
+ paddedCols, inMaps, fullInputOffset * paddedRows * paddedCols);
332
+
333
+ MakeAlias(outputTemp, output, this->outputDimensions[0],
334
+ this->outputDimensions[1], maps, fullOutputOffset *
335
+ this->outputDimensions[0] * this->outputDimensions[1]);
336
+
337
+ ForwardConvolutionRule::Convolution(
338
+ inputTemp,
339
+ weight,
340
+ outputTemp,
341
+ strideWidth,
342
+ strideHeight,
343
+ 1,
344
+ 1,
345
+ true);
346
+
347
+ // Make sure to add the bias.
348
+ if (useBias)
337
349
  {
338
- MatType& convOutput = outputTemp.slice(outMap + fullOutputOffset);
339
- // Iterate over input maps (we will apply the filter and sum).
340
- for (size_t inMap = 0; inMap < inMaps; ++inMap)
341
- {
342
- ForwardConvolutionRule::Convolution(
343
- inputTemp.slice(inMap + fullInputOffset),
344
- weight.slice((outMap * inMaps) + inMap),
345
- convOutput,
346
- strideWidth,
347
- strideHeight,
348
- 1,
349
- 1,
350
- true);
351
- }
352
-
353
- // Make sure to add the bias.
354
- if (useBias)
355
- convOutput += bias(outMap);
350
+ for (size_t outMap = 0; outMap < (size_t) maps; ++outMap)
351
+ outputTemp.slice(outMap) += bias(outMap);
356
352
  }
357
353
  }
358
354
  }
359
355
 
360
356
  template<
357
+ typename MatType,
361
358
  typename ForwardConvolutionRule,
362
359
  typename BackwardConvolutionRule,
363
- typename GradientConvolutionRule,
364
- typename MatType
360
+ typename GradientConvolutionRule
365
361
  >
366
- void ConvolutionType<
362
+ void Convolution<
363
+ MatType,
367
364
  ForwardConvolutionRule,
368
365
  BackwardConvolutionRule,
369
- GradientConvolutionRule,
370
- MatType
366
+ GradientConvolutionRule
371
367
  >::Backward(
372
368
  const MatType& /* input */,
373
369
  const MatType& /* output */,
@@ -423,34 +419,33 @@ void ConvolutionType<
423
419
 
424
420
  MatType output(apparentWidth * apparentHeight * inMaps * higherInDimensions,
425
421
  batchSize);
426
- CubeType outputCube;
427
- MakeAlias(outputCube, output, apparentWidth, apparentHeight,
428
- inMaps * higherInDimensions * batchSize);
429
422
 
430
423
  // See Forward() for the overall iteration strategy.
431
- #pragma omp parallel for schedule(dynamic)
424
+ #pragma omp parallel for schedule(dynamic) private(outputTemp)
432
425
  for (size_t offset = 0; offset < (higherInDimensions * batchSize); ++offset)
433
426
  {
434
427
  const size_t fullInputOffset = offset * inMaps;
435
428
  const size_t fullOutputOffset = offset * maps;
436
429
 
437
- // Iterate over input maps.
438
- for (size_t inMap = 0; inMap < (size_t) inMaps; ++inMap)
430
+ CubeType rotatedFiltersTemp;
431
+
432
+ MakeAlias(outputTemp, output, apparentWidth, apparentHeight, inMaps,
433
+ fullInputOffset * apparentWidth * apparentHeight);
434
+ // Iterate over output maps.
435
+ for (size_t outMap = 0; outMap < maps; ++outMap)
439
436
  {
440
- // Iterate over output maps.
441
- MatType& curG = outputCube.slice(inMap + fullInputOffset);
442
- for (size_t outMap = 0; outMap < maps; ++outMap)
443
- {
444
- BackwardConvolutionRule::Convolution(
445
- dilatedMappedError.slice(outMap + fullOutputOffset),
446
- rotatedFilters.slice((outMap * inMaps) + inMap),
447
- curG,
448
- 1,
449
- 1,
450
- 1,
451
- 1,
452
- true);
453
- }
437
+ MakeAlias(rotatedFiltersTemp, rotatedFilters, rotatedFilters.n_rows,
438
+ rotatedFilters.n_cols, inMaps,
439
+ outMap * inMaps * rotatedFilters.n_rows * rotatedFilters.n_cols);
440
+ BackwardConvolutionRule::Convolution(
441
+ dilatedMappedError.slice(outMap + fullOutputOffset),
442
+ rotatedFiltersTemp,
443
+ outputTemp,
444
+ 1,
445
+ 1,
446
+ 1,
447
+ 1,
448
+ true);
454
449
  }
455
450
  }
456
451
  MatType temp(padding.OutputDimensions()[0] * padding.OutputDimensions()[1] *
@@ -474,16 +469,16 @@ void ConvolutionType<
474
469
  }
475
470
 
476
471
  template<
472
+ typename MatType,
477
473
  typename ForwardConvolutionRule,
478
474
  typename BackwardConvolutionRule,
479
- typename GradientConvolutionRule,
480
- typename MatType
475
+ typename GradientConvolutionRule
481
476
  >
482
- void ConvolutionType<
477
+ void Convolution<
478
+ MatType,
483
479
  ForwardConvolutionRule,
484
480
  BackwardConvolutionRule,
485
- GradientConvolutionRule,
486
- MatType
481
+ GradientConvolutionRule
487
482
  >::Gradient(
488
483
  const MatType& input,
489
484
  const MatType& error,
@@ -497,18 +492,9 @@ void ConvolutionType<
497
492
  // Forward().
498
493
  const bool usingPadding =
499
494
  (padWLeft != 0 || padWRight != 0 || padHTop != 0 || padHBottom != 0);
500
- const size_t paddedRows = this->inputDimensions[0] + padWLeft + padWRight;
501
- const size_t paddedCols = this->inputDimensions[1] + padHTop + padHBottom;
502
-
503
- CubeType inputTemp;
504
- MakeAlias(inputTemp, (usingPadding ? inputPadded : input),
505
- paddedRows, paddedCols, inMaps * batchSize, 0, false);
506
495
 
507
496
  MatType temp(apparentWidth * apparentHeight * inMaps * higherInDimensions,
508
497
  batchSize);
509
- CubeType tempCube;
510
- MakeAlias(tempCube, temp, apparentWidth, apparentHeight,
511
- inMaps * higherInDimensions * batchSize);
512
498
  paddingBackward.Backward(input, {} /* unused */,
513
499
  usingPadding ? inputPadded : input, temp);
514
500
 
@@ -519,46 +505,71 @@ void ConvolutionType<
519
505
  MakeAlias(gradientTemp, gradient, weight.n_rows, weight.n_cols,
520
506
  weight.n_slices);
521
507
 
508
+ MatType tempSlice;
509
+
522
510
  // See Forward() for our iteration strategy.
511
+ #pragma omp parallel for schedule(dynamic) private(tempSlice)
523
512
  for (size_t offset = 0; offset < higherInDimensions * batchSize; ++offset)
524
513
  {
525
514
  const size_t fullInputOffset = offset * inMaps;
526
515
  const size_t fullOutputOffset = offset * maps;
527
516
 
528
- #pragma omp parallel for
529
- for (size_t outMap = 0; outMap < (size_t) maps; ++outMap)
517
+ CubeType mappedErrorTemp;
518
+ MakeAlias(mappedErrorTemp, error, this->outputDimensions[0],
519
+ this->outputDimensions[1], maps, fullOutputOffset *
520
+ this->outputDimensions[0] * this->outputDimensions[1]);
521
+
522
+ for (size_t inMap = 0; inMap < inMaps; ++inMap)
530
523
  {
531
- MatType& curError = mappedError.slice(outMap + fullOutputOffset);
532
- for (size_t inMap = 0; inMap < inMaps; ++inMap)
524
+ CubeType gradientTempTemp(gradientTemp.n_rows, gradientTemp.n_cols,
525
+ maps);
526
+ // Make an alias of the slice directly instead of using a cube to avoid
527
+ // the overhead of creating a cube every time this function is called
528
+ MakeAlias(tempSlice, temp, apparentWidth, apparentHeight,
529
+ (inMap + fullInputOffset) * (apparentWidth * apparentHeight));
530
+
531
+ GradientConvolutionRule::Convolution(
532
+ tempSlice,
533
+ mappedErrorTemp,
534
+ gradientTempTemp,
535
+ 1,
536
+ 1,
537
+ strideWidth,
538
+ strideHeight,
539
+ true);
540
+
541
+ // Reorder convolution output slices.
542
+ #pragma omp critical
543
+ for (size_t outMap = 0; outMap < (size_t) maps; ++outMap)
533
544
  {
534
- GradientConvolutionRule::Convolution(
535
- tempCube.slice(inMap + fullInputOffset),
536
- curError,
537
- gradientTemp.slice((outMap * inMaps) + inMap),
538
- 1,
539
- 1,
540
- strideWidth,
541
- strideHeight,
542
- true);
545
+ gradientTemp.slice((outMap * inMaps) + inMap) +=
546
+ gradientTempTemp.slice(outMap);
543
547
  }
548
+ }
544
549
 
545
- if (useBias)
546
- gradient[weight.n_elem + outMap] += accu(curError);
550
+ if (useBias)
551
+ {
552
+ for (size_t outMap = 0; outMap < (size_t) maps; ++outMap)
553
+ {
554
+ #pragma omp atomic update
555
+ gradient[weight.n_elem + outMap] += accu(mappedErrorTemp
556
+ .slice(outMap));
557
+ }
547
558
  }
548
559
  }
549
560
  }
550
561
 
551
562
  template<
563
+ typename MatType,
552
564
  typename ForwardConvolutionRule,
553
565
  typename BackwardConvolutionRule,
554
- typename GradientConvolutionRule,
555
- typename MatType
566
+ typename GradientConvolutionRule
556
567
  >
557
- void ConvolutionType<
568
+ void Convolution<
569
+ MatType,
558
570
  ForwardConvolutionRule,
559
571
  BackwardConvolutionRule,
560
- GradientConvolutionRule,
561
- MatType
572
+ GradientConvolutionRule
562
573
  >::ComputeOutputDimensions()
563
574
  {
564
575
  // First, we must make sure the padding sizes are up to date, which we can
@@ -575,7 +586,7 @@ void ConvolutionType<
575
586
  InitializeSamePadding();
576
587
  }
577
588
 
578
- padding = PaddingType<MatType>(padWLeft, padWRight, padHTop, padHBottom);
589
+ padding = Padding<MatType>(padWLeft, padWRight, padHTop, padHBottom);
579
590
  padding.InputDimensions() = this->inputDimensions;
580
591
  padding.ComputeOutputDimensions();
581
592
 
@@ -602,7 +613,7 @@ void ConvolutionType<
602
613
  apparentHeight = (this->outputDimensions[1] - 1) * strideHeight +
603
614
  kernelHeight;
604
615
 
605
- paddingBackward = PaddingType<MatType>(0, padding.OutputDimensions()[0] -
616
+ paddingBackward = Padding<MatType>(0, padding.OutputDimensions()[0] -
606
617
  apparentWidth, 0, padding.OutputDimensions()[1] - apparentHeight);
607
618
  paddingBackward.InputDimensions() = std::vector<size_t>({ apparentWidth,
608
619
  apparentHeight, inMaps * higherInDimensions });
@@ -612,17 +623,17 @@ void ConvolutionType<
612
623
  }
613
624
 
614
625
  template<
626
+ typename MatType,
615
627
  typename ForwardConvolutionRule,
616
628
  typename BackwardConvolutionRule,
617
- typename GradientConvolutionRule,
618
- typename MatType
629
+ typename GradientConvolutionRule
619
630
  >
620
631
  template<typename Archive>
621
- void ConvolutionType<
632
+ void Convolution<
633
+ MatType,
622
634
  ForwardConvolutionRule,
623
635
  BackwardConvolutionRule,
624
- GradientConvolutionRule,
625
- MatType
636
+ GradientConvolutionRule
626
637
  >::serialize(Archive& ar, const uint32_t /* version*/)
627
638
  {
628
639
  ar(cereal::base_class<Layer<MatType>>(this));
@@ -645,16 +656,16 @@ void ConvolutionType<
645
656
  }
646
657
 
647
658
  template<
659
+ typename MatType,
648
660
  typename ForwardConvolutionRule,
649
661
  typename BackwardConvolutionRule,
650
- typename GradientConvolutionRule,
651
- typename MatType
662
+ typename GradientConvolutionRule
652
663
  >
653
- void ConvolutionType<
664
+ void Convolution<
665
+ MatType,
654
666
  ForwardConvolutionRule,
655
667
  BackwardConvolutionRule,
656
- GradientConvolutionRule,
657
- MatType
668
+ GradientConvolutionRule
658
669
  >::InitializeSamePadding()
659
670
  {
660
671
  /**
@@ -46,11 +46,14 @@ namespace mlpack {
46
46
  * computation.
47
47
  */
48
48
  template<typename MatType = arma::mat>
49
- class DropConnectType : public Layer<MatType>
49
+ class DropConnect : public Layer<MatType>
50
50
  {
51
51
  public:
52
- //! Create the DropConnect object.
53
- DropConnectType();
52
+ // Convenience typedef to access the element type of the weights and data.
53
+ using ElemType = typename MatType::elem_type;
54
+
55
+ // Create the DropConnect object.
56
+ DropConnect();
54
57
 
55
58
  /**
56
59
  * Creates the DropConnect Layer as a Linear Object that takes the number of
@@ -59,23 +62,23 @@ class DropConnectType : public Layer<MatType>
59
62
  * @param outSize The number of output units.
60
63
  * @param ratio The probability of setting a value to zero.
61
64
  */
62
- DropConnectType(const size_t outSize,
65
+ DropConnect(const size_t outSize,
63
66
  const double ratio = 0.5);
64
67
 
65
- //! Clone the DropConnectType object. This handles polymorphism correctly.
66
- DropConnectType* Clone() const { return new DropConnectType(*this); }
68
+ //! Clone the DropConnect object. This handles polymorphism correctly.
69
+ DropConnect* Clone() const { return new DropConnect(*this); }
67
70
 
68
71
  // Virtual destructor.
69
- virtual ~DropConnectType();
72
+ virtual ~DropConnect();
70
73
 
71
- //! Copy the given DropConnectType (except for weights).
72
- DropConnectType(const DropConnectType& other);
73
- //! Take ownership of the given DropConnectType (except for weights).
74
- DropConnectType(DropConnectType&& other);
75
- //! Copy the given DropConnectType (except for weights).
76
- DropConnectType& operator=(const DropConnectType& other);
77
- //! Take ownership of the given DropConnectType (except for weights).
78
- DropConnectType& operator=(DropConnectType&& other);
74
+ //! Copy the given DropConnect (except for weights).
75
+ DropConnect(const DropConnect& other);
76
+ //! Take ownership of the given DropConnect (except for weights).
77
+ DropConnect(DropConnect&& other);
78
+ //! Copy the given DropConnect (except for weights).
79
+ DropConnect& operator=(const DropConnect& other);
80
+ //! Take ownership of the given DropConnect (except for weights).
81
+ DropConnect& operator=(DropConnect&& other);
79
82
 
80
83
  /**
81
84
  * Ordinary feed forward pass of the DropConnect layer.
@@ -149,11 +152,6 @@ class DropConnectType : public Layer<MatType>
149
152
  Layer<MatType>* baseLayer;
150
153
  }; // class DropConnect.
151
154
 
152
- // Convenience typedefs.
153
-
154
- // Standard DropConnect layer.
155
- using DropConnect = DropConnectType<arma::mat>;
156
-
157
155
  } // namespace mlpack
158
156
 
159
157
  // Include implementation.