mlpack 4.6.2__cp38-cp38-win_amd64.whl → 4.7.0__cp38-cp38-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 (414) hide show
  1. mlpack/__init__.py +3 -3
  2. mlpack/adaboost_classify.cp38-win_amd64.pyd +0 -0
  3. mlpack/adaboost_probabilities.cp38-win_amd64.pyd +0 -0
  4. mlpack/adaboost_train.cp38-win_amd64.pyd +0 -0
  5. mlpack/approx_kfn.cp38-win_amd64.pyd +0 -0
  6. mlpack/arma_numpy.cp38-win_amd64.pyd +0 -0
  7. mlpack/bayesian_linear_regression.cp38-win_amd64.pyd +0 -0
  8. mlpack/cf.cp38-win_amd64.pyd +0 -0
  9. mlpack/dbscan.cp38-win_amd64.pyd +0 -0
  10. mlpack/decision_tree.cp38-win_amd64.pyd +0 -0
  11. mlpack/det.cp38-win_amd64.pyd +0 -0
  12. mlpack/emst.cp38-win_amd64.pyd +0 -0
  13. mlpack/fastmks.cp38-win_amd64.pyd +0 -0
  14. mlpack/gmm_generate.cp38-win_amd64.pyd +0 -0
  15. mlpack/gmm_probability.cp38-win_amd64.pyd +0 -0
  16. mlpack/gmm_train.cp38-win_amd64.pyd +0 -0
  17. mlpack/hmm_generate.cp38-win_amd64.pyd +0 -0
  18. mlpack/hmm_loglik.cp38-win_amd64.pyd +0 -0
  19. mlpack/hmm_train.cp38-win_amd64.pyd +0 -0
  20. mlpack/hmm_viterbi.cp38-win_amd64.pyd +0 -0
  21. mlpack/hoeffding_tree.cp38-win_amd64.pyd +0 -0
  22. mlpack/image_converter.cp38-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.cp38-win_amd64.pyd +0 -0
  362. mlpack/kernel_pca.cp38-win_amd64.pyd +0 -0
  363. mlpack/kfn.cp38-win_amd64.pyd +0 -0
  364. mlpack/kmeans.cp38-win_amd64.pyd +0 -0
  365. mlpack/knn.cp38-win_amd64.pyd +0 -0
  366. mlpack/krann.cp38-win_amd64.pyd +0 -0
  367. mlpack/lars.cp38-win_amd64.pyd +0 -0
  368. mlpack/linear_regression_predict.cp38-win_amd64.pyd +0 -0
  369. mlpack/linear_regression_train.cp38-win_amd64.pyd +0 -0
  370. mlpack/linear_svm.cp38-win_amd64.pyd +0 -0
  371. mlpack/lmnn.cp38-win_amd64.pyd +0 -0
  372. mlpack/local_coordinate_coding.cp38-win_amd64.pyd +0 -0
  373. mlpack/logistic_regression.cp38-win_amd64.pyd +0 -0
  374. mlpack/lsh.cp38-win_amd64.pyd +0 -0
  375. mlpack/mean_shift.cp38-win_amd64.pyd +0 -0
  376. mlpack/nbc.cp38-win_amd64.pyd +0 -0
  377. mlpack/nca.cp38-win_amd64.pyd +0 -0
  378. mlpack/nmf.cp38-win_amd64.pyd +0 -0
  379. mlpack/pca.cp38-win_amd64.pyd +0 -0
  380. mlpack/perceptron.cp38-win_amd64.pyd +0 -0
  381. mlpack/preprocess_binarize.cp38-win_amd64.pyd +0 -0
  382. mlpack/preprocess_describe.cp38-win_amd64.pyd +0 -0
  383. mlpack/preprocess_one_hot_encoding.cp38-win_amd64.pyd +0 -0
  384. mlpack/preprocess_scale.cp38-win_amd64.pyd +0 -0
  385. mlpack/preprocess_split.cp38-win_amd64.pyd +0 -0
  386. mlpack/radical.cp38-win_amd64.pyd +0 -0
  387. mlpack/random_forest.cp38-win_amd64.pyd +0 -0
  388. mlpack/softmax_regression.cp38-win_amd64.pyd +0 -0
  389. mlpack/sparse_coding.cp38-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 +5 -5
  392. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/RECORD +395 -376
  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/{.load-order-mlpack-4.6.2 → .load-order-mlpack-4.7.0} +0 -0
@@ -19,33 +19,33 @@
19
19
  namespace mlpack {
20
20
 
21
21
  template<
22
+ typename MatType,
22
23
  typename ForwardConvolutionRule,
23
24
  typename BackwardConvolutionRule,
24
- typename GradientConvolutionRule,
25
- typename MatType
25
+ typename GradientConvolutionRule
26
26
  >
27
- GroupedConvolutionType<
27
+ GroupedConvolution<
28
+ MatType,
28
29
  ForwardConvolutionRule,
29
30
  BackwardConvolutionRule,
30
- GradientConvolutionRule,
31
- MatType
32
- >::GroupedConvolutionType() : Layer<MatType>()
31
+ GradientConvolutionRule
32
+ >::GroupedConvolution() : Layer<MatType>()
33
33
  {
34
34
  // Nothing to do here.
35
35
  }
36
36
 
37
37
  template<
38
+ typename MatType,
38
39
  typename ForwardConvolutionRule,
39
40
  typename BackwardConvolutionRule,
40
- typename GradientConvolutionRule,
41
- typename MatType
41
+ typename GradientConvolutionRule
42
42
  >
43
- GroupedConvolutionType<
43
+ GroupedConvolution<
44
+ MatType,
44
45
  ForwardConvolutionRule,
45
46
  BackwardConvolutionRule,
46
- GradientConvolutionRule,
47
- MatType
48
- >::GroupedConvolutionType(
47
+ GradientConvolutionRule
48
+ >::GroupedConvolution(
49
49
  const size_t maps,
50
50
  const size_t kernelWidth,
51
51
  const size_t kernelHeight,
@@ -56,7 +56,7 @@ GroupedConvolutionType<
56
56
  const size_t padH,
57
57
  const std::string& paddingType,
58
58
  const bool useBias) :
59
- GroupedConvolutionType(
59
+ GroupedConvolution(
60
60
  maps,
61
61
  kernelWidth,
62
62
  kernelHeight,
@@ -72,17 +72,17 @@ GroupedConvolutionType<
72
72
  }
73
73
 
74
74
  template<
75
+ typename MatType,
75
76
  typename ForwardConvolutionRule,
76
77
  typename BackwardConvolutionRule,
77
- typename GradientConvolutionRule,
78
- typename MatType
78
+ typename GradientConvolutionRule
79
79
  >
80
- GroupedConvolutionType<
80
+ GroupedConvolution<
81
+ MatType,
81
82
  ForwardConvolutionRule,
82
83
  BackwardConvolutionRule,
83
- GradientConvolutionRule,
84
- MatType
85
- >::GroupedConvolutionType(
84
+ GradientConvolutionRule
85
+ >::GroupedConvolution(
86
86
  const size_t maps,
87
87
  const size_t kernelWidth,
88
88
  const size_t kernelHeight,
@@ -111,17 +111,17 @@ GroupedConvolutionType<
111
111
  }
112
112
 
113
113
  template<
114
+ typename MatType,
114
115
  typename ForwardConvolutionRule,
115
116
  typename BackwardConvolutionRule,
116
- typename GradientConvolutionRule,
117
- typename MatType
117
+ typename GradientConvolutionRule
118
118
  >
119
- GroupedConvolutionType<
119
+ GroupedConvolution<
120
+ MatType,
120
121
  ForwardConvolutionRule,
121
122
  BackwardConvolutionRule,
122
- GradientConvolutionRule,
123
- MatType
124
- >::GroupedConvolutionType(const GroupedConvolutionType& other) :
123
+ GradientConvolutionRule
124
+ >::GroupedConvolution(const GroupedConvolution& other) :
125
125
  Layer<MatType>(other),
126
126
  maps(other.maps),
127
127
  kernelWidth(other.kernelWidth),
@@ -146,17 +146,17 @@ GroupedConvolutionType<
146
146
  }
147
147
 
148
148
  template<
149
+ typename MatType,
149
150
  typename ForwardConvolutionRule,
150
151
  typename BackwardConvolutionRule,
151
- typename GradientConvolutionRule,
152
- typename MatType
152
+ typename GradientConvolutionRule
153
153
  >
154
- GroupedConvolutionType<
154
+ GroupedConvolution<
155
+ MatType,
155
156
  ForwardConvolutionRule,
156
157
  BackwardConvolutionRule,
157
- GradientConvolutionRule,
158
- MatType
159
- >::GroupedConvolutionType(GroupedConvolutionType&& other) :
158
+ GradientConvolutionRule
159
+ >::GroupedConvolution(GroupedConvolution&& other) :
160
160
  Layer<MatType>(std::move(other)),
161
161
  maps(std::move(other.maps)),
162
162
  kernelWidth(std::move(other.kernelWidth)),
@@ -181,23 +181,23 @@ GroupedConvolutionType<
181
181
  }
182
182
 
183
183
  template<
184
+ typename MatType,
184
185
  typename ForwardConvolutionRule,
185
186
  typename BackwardConvolutionRule,
186
- typename GradientConvolutionRule,
187
- typename MatType
187
+ typename GradientConvolutionRule
188
188
  >
189
- GroupedConvolutionType<
189
+ GroupedConvolution<
190
+ MatType,
190
191
  ForwardConvolutionRule,
191
192
  BackwardConvolutionRule,
192
- GradientConvolutionRule,
193
- MatType
193
+ GradientConvolutionRule
194
194
  >&
195
- GroupedConvolutionType<
195
+ GroupedConvolution<
196
+ MatType,
196
197
  ForwardConvolutionRule,
197
198
  BackwardConvolutionRule,
198
- GradientConvolutionRule,
199
- MatType
200
- >::operator=(const GroupedConvolutionType& other)
199
+ GradientConvolutionRule
200
+ >::operator=(const GroupedConvolution& other)
201
201
  {
202
202
  if (&other != this)
203
203
  {
@@ -226,23 +226,23 @@ GroupedConvolutionType<
226
226
  }
227
227
 
228
228
  template<
229
+ typename MatType,
229
230
  typename ForwardConvolutionRule,
230
231
  typename BackwardConvolutionRule,
231
- typename GradientConvolutionRule,
232
- typename MatType
232
+ typename GradientConvolutionRule
233
233
  >
234
- GroupedConvolutionType<
234
+ GroupedConvolution<
235
+ MatType,
235
236
  ForwardConvolutionRule,
236
237
  BackwardConvolutionRule,
237
- GradientConvolutionRule,
238
- MatType
238
+ GradientConvolutionRule
239
239
  >&
240
- GroupedConvolutionType<
240
+ GroupedConvolution<
241
+ MatType,
241
242
  ForwardConvolutionRule,
242
243
  BackwardConvolutionRule,
243
- GradientConvolutionRule,
244
- MatType
245
- >::operator=(GroupedConvolutionType&& other)
244
+ GradientConvolutionRule
245
+ >::operator=(GroupedConvolution&& other)
246
246
  {
247
247
  if (&other != this)
248
248
  {
@@ -271,16 +271,16 @@ GroupedConvolutionType<
271
271
  }
272
272
 
273
273
  template<
274
+ typename MatType,
274
275
  typename ForwardConvolutionRule,
275
276
  typename BackwardConvolutionRule,
276
- typename GradientConvolutionRule,
277
- typename MatType
277
+ typename GradientConvolutionRule
278
278
  >
279
- void GroupedConvolutionType<
279
+ void GroupedConvolution<
280
+ MatType,
280
281
  ForwardConvolutionRule,
281
282
  BackwardConvolutionRule,
282
- GradientConvolutionRule,
283
- MatType
283
+ GradientConvolutionRule
284
284
  >::SetWeights(const MatType& weightsIn)
285
285
  {
286
286
  MakeAlias(weight, weightsIn, kernelWidth, kernelHeight,
@@ -297,16 +297,16 @@ void GroupedConvolutionType<
297
297
  }
298
298
 
299
299
  template<
300
+ typename MatType,
300
301
  typename ForwardConvolutionRule,
301
302
  typename BackwardConvolutionRule,
302
- typename GradientConvolutionRule,
303
- typename MatType
303
+ typename GradientConvolutionRule
304
304
  >
305
- void GroupedConvolutionType<
305
+ void GroupedConvolution<
306
+ MatType,
306
307
  ForwardConvolutionRule,
307
308
  BackwardConvolutionRule,
308
- GradientConvolutionRule,
309
- MatType
309
+ GradientConvolutionRule
310
310
  >::Forward(const MatType& input, MatType& output)
311
311
  {
312
312
  batchSize = input.n_cols;
@@ -323,10 +323,6 @@ void GroupedConvolutionType<
323
323
  padding.Forward(input, inputPadded);
324
324
  }
325
325
 
326
- CubeType inputTemp;
327
- MakeAlias(inputTemp, (usingPadding ? inputPadded : input),
328
- paddedRows, paddedCols, inMaps * higherInDimensions * batchSize);
329
-
330
326
  MakeAlias(outputTemp, output, this->outputDimensions[0],
331
327
  this->outputDimensions[1], maps * higherInDimensions * batchSize);
332
328
  outputTemp.zeros();
@@ -339,53 +335,60 @@ void GroupedConvolutionType<
339
335
  //
340
336
  // If we eventually have a way to do convolutions for a single kernel
341
337
  // in-batch, then this strategy may not be the most efficient solution.
338
+ #pragma omp parallel for schedule(dynamic)
342
339
  for (size_t offset = 0; offset < (higherInDimensions * batchSize); ++offset)
343
340
  {
344
341
  const size_t fullInputOffset = offset * inMaps;
345
342
  const size_t fullOutputOffset = offset * maps;
346
343
 
347
- #pragma omp parallel for collapse(2)
344
+ CubeType inputTemp, weightTemp, outputTempTemp;
348
345
  for (size_t group = 0; group < groups; group++)
349
346
  {
350
- // Iterate over output maps.
351
- for (size_t outMap = 0; outMap < outGroupSize; ++outMap)
352
- {
353
- MatType& convOutput = outputTemp.slice(group * outGroupSize + outMap +
354
- fullOutputOffset);
355
- // Iterate over input maps (we will apply the filter and sum).
356
- for (size_t inMap = 0; inMap < inGroupSize; ++inMap)
357
- {
358
- ForwardConvolutionRule::Convolution(
359
- inputTemp.slice((group * inGroupSize) + inMap + fullInputOffset),
360
- weight.slice(((group * outGroupSize + outMap) * inGroupSize) +
361
- inMap),
362
- convOutput,
363
- strideWidth,
364
- strideHeight,
365
- 1,
366
- 1,
367
- true);
368
- }
347
+ MakeAlias(inputTemp, (usingPadding ? inputPadded : input), paddedRows,
348
+ paddedCols, inGroupSize, (group * inGroupSize + fullInputOffset) *
349
+ (paddedRows * paddedCols));
350
+ MakeAlias(weightTemp, weight, weight.n_rows, weight.n_cols,
351
+ inGroupSize * outGroupSize, (group * outGroupSize * inGroupSize) *
352
+ (weight.n_rows * weight.n_cols));
353
+ MakeAlias(outputTempTemp, outputTemp, outputTemp.n_rows,
354
+ outputTemp.n_cols, outGroupSize,
355
+ (group * outGroupSize + fullOutputOffset) *
356
+ (outputTemp.n_rows * outputTemp.n_cols));
357
+ ForwardConvolutionRule::Convolution(
358
+ inputTemp,
359
+ weightTemp,
360
+ outputTempTemp,
361
+ strideWidth,
362
+ strideHeight,
363
+ 1,
364
+ 1,
365
+ true);
366
+ }
369
367
 
370
- // Make sure to add the bias.
371
- if (useBias)
372
- convOutput += bias(group * outGroupSize + outMap);
368
+ // Make sure to add the bias.
369
+ if (useBias)
370
+ {
371
+ for (size_t group = 0; group < groups; group++)
372
+ {
373
+ for (size_t outMap = 0; outMap < outGroupSize; ++outMap)
374
+ outputTemp.slice(group * outGroupSize + outMap + fullOutputOffset) +=
375
+ bias(group * outGroupSize + outMap);
373
376
  }
374
377
  }
375
378
  }
376
379
  }
377
380
 
378
381
  template<
382
+ typename MatType,
379
383
  typename ForwardConvolutionRule,
380
384
  typename BackwardConvolutionRule,
381
- typename GradientConvolutionRule,
382
- typename MatType
385
+ typename GradientConvolutionRule
383
386
  >
384
- void GroupedConvolutionType<
387
+ void GroupedConvolution<
388
+ MatType,
385
389
  ForwardConvolutionRule,
386
390
  BackwardConvolutionRule,
387
- GradientConvolutionRule,
388
- MatType
391
+ GradientConvolutionRule
389
392
  >::Backward(
390
393
  const MatType& /* input */,
391
394
  const MatType& /* output */,
@@ -441,41 +444,39 @@ void GroupedConvolutionType<
441
444
 
442
445
  MatType output(apparentWidth * apparentHeight * inMaps * higherInDimensions,
443
446
  batchSize);
444
- CubeType outputCube;
445
- MakeAlias(outputCube, output, apparentWidth, apparentHeight,
446
- inMaps * higherInDimensions * batchSize);
447
447
 
448
448
  size_t inGroupSize = inMaps / groups;
449
449
  size_t outGroupSize = maps / groups;
450
450
 
451
451
  // See Forward() for the overall iteration strategy.
452
+ #pragma omp parallel for schedule(dynamic) private(outputTemp)
452
453
  for (size_t offset = 0; offset < (higherInDimensions * batchSize); ++offset)
453
454
  {
454
455
  const size_t fullInputOffset = offset * inMaps;
455
456
  const size_t fullOutputOffset = offset * maps;
456
457
 
457
- #pragma omp parallel for collapse(2)
458
+ CubeType rotatedFiltersTemp;
458
459
  for (size_t group = 0; group < groups; group++)
459
460
  {
460
- // Iterate over input maps.
461
- for (size_t inMap = 0; inMap < inGroupSize; ++inMap)
462
- {
463
- // Iterate over output maps.
464
- MatType& curG = outputCube.slice((group * inGroupSize) + inMap +
465
- fullInputOffset);
466
- for (size_t outMap = group * outGroupSize; outMap < (group + 1) *
461
+ // Iterate over output maps.
462
+ for (size_t outMap = group * outGroupSize; outMap < (group + 1) *
467
463
  outGroupSize; ++outMap)
468
- {
469
- BackwardConvolutionRule::Convolution(
470
- dilatedMappedError.slice(outMap + fullOutputOffset),
471
- rotatedFilters.slice((outMap * inGroupSize) + inMap),
472
- curG,
473
- 1,
474
- 1,
475
- 1,
476
- 1,
477
- true);
478
- }
464
+ {
465
+ MakeAlias(rotatedFiltersTemp, rotatedFilters, rotatedFilters.n_rows,
466
+ rotatedFilters.n_cols, inGroupSize, (outMap * inGroupSize) *
467
+ (rotatedFilters.n_rows * rotatedFilters.n_cols));
468
+ MakeAlias(outputTemp, output, apparentWidth, apparentHeight,
469
+ inGroupSize, (group * inGroupSize + fullInputOffset) *
470
+ (apparentWidth * apparentHeight));
471
+ BackwardConvolutionRule::Convolution(
472
+ dilatedMappedError.slice(outMap + fullOutputOffset),
473
+ rotatedFiltersTemp,
474
+ outputTemp,
475
+ 1,
476
+ 1,
477
+ 1,
478
+ 1,
479
+ true);
479
480
  }
480
481
  }
481
482
  }
@@ -501,25 +502,21 @@ void GroupedConvolutionType<
501
502
  }
502
503
 
503
504
  template<
505
+ typename MatType,
504
506
  typename ForwardConvolutionRule,
505
507
  typename BackwardConvolutionRule,
506
- typename GradientConvolutionRule,
507
- typename MatType
508
+ typename GradientConvolutionRule
508
509
  >
509
- void GroupedConvolutionType<
510
+ void GroupedConvolution<
511
+ MatType,
510
512
  ForwardConvolutionRule,
511
513
  BackwardConvolutionRule,
512
- GradientConvolutionRule,
513
- MatType
514
+ GradientConvolutionRule
514
515
  >::Gradient(
515
516
  const MatType& input,
516
517
  const MatType& error,
517
518
  MatType& gradient)
518
519
  {
519
- CubeType mappedError;
520
- MakeAlias(mappedError, error, this->outputDimensions[0],
521
- this->outputDimensions[1], higherInDimensions * maps * batchSize);
522
-
523
520
  // We are depending here on `inputPadded` being properly set from a call to
524
521
  // Forward().
525
522
  const bool usingPadding =
@@ -527,10 +524,6 @@ void GroupedConvolutionType<
527
524
  const size_t paddedRows = this->inputDimensions[0] + padWLeft + padWRight;
528
525
  const size_t paddedCols = this->inputDimensions[1] + padHTop + padHBottom;
529
526
 
530
- CubeType inputTemp;
531
- MakeAlias(inputTemp, (usingPadding ? inputPadded : input),
532
- paddedRows, paddedCols, inMaps * batchSize, 0, false);
533
-
534
527
  MatType temp(apparentWidth * apparentHeight * inMaps * higherInDimensions,
535
528
  batchSize);
536
529
  CubeType tempCube;
@@ -549,40 +542,54 @@ void GroupedConvolutionType<
549
542
  size_t inGroupSize = inMaps / groups;
550
543
  size_t outGroupSize = maps / groups;
551
544
 
545
+ MatType tempSlice;
546
+
552
547
  // See Forward() for our iteration strategy.
548
+ #pragma omp parallel for schedule(dynamic) private(tempSlice)
553
549
  for (size_t offset = 0; offset < higherInDimensions * batchSize; ++offset)
554
550
  {
555
551
  const size_t fullInputOffset = offset * inMaps;
556
552
  const size_t fullOutputOffset = offset * maps;
557
553
 
558
- #pragma omp parallel for collapse(2)
554
+ CubeType mappedError, gradientTempTemp;
559
555
  for (size_t group = 0; group < groups; group++)
560
556
  {
561
- // Iterate over output maps.
562
- for (size_t outMap = 0; outMap < outGroupSize; ++outMap)
557
+ MakeAlias(mappedError, error, this->outputDimensions[0],
558
+ this->outputDimensions[1], outGroupSize,
559
+ (group * outGroupSize + fullOutputOffset) *
560
+ (this->outputDimensions[0] * this->outputDimensions[1]));
561
+ // Iterate over input maps (we will apply the filter and sum).
562
+ for (size_t inMap = 0; inMap < inGroupSize; ++inMap)
563
563
  {
564
- // Iterate over input maps (we will apply the filter and sum).
565
- MatType& curError = mappedError.slice(group * outGroupSize + outMap +
566
- fullOutputOffset);
567
- for (size_t inMap = 0; inMap < inGroupSize; ++inMap)
564
+ MakeAlias(tempSlice, (usingPadding ? inputPadded : input), paddedRows,
565
+ paddedCols, ((group * inGroupSize) + inMap + fullInputOffset) *
566
+ (paddedRows * paddedCols));
567
+ GradientConvolutionRule::Convolution(
568
+ tempSlice,
569
+ mappedError,
570
+ gradientTempTemp,
571
+ 1,
572
+ 1,
573
+ strideWidth,
574
+ strideHeight,
575
+ false);
576
+
577
+ // Reorder convolution output slices.
578
+ #pragma omp critical
579
+ for (size_t outMap = 0; outMap < outGroupSize; ++outMap)
568
580
  {
569
- MatType output;
570
- GradientConvolutionRule::Convolution(
571
- tempCube.slice((group * inGroupSize) + inMap + fullInputOffset),
572
- curError,
573
- gradientTemp.slice(((group * outGroupSize + outMap) *
574
- inGroupSize) + inMap),
575
- 1,
576
- 1,
577
- strideWidth,
578
- strideHeight,
579
- true);
581
+ gradientTemp.slice((group * outGroupSize + outMap) * inGroupSize +
582
+ inMap) += gradientTempTemp.slice(outMap);
580
583
  }
584
+ }
581
585
 
582
- if (useBias)
586
+ if (useBias)
587
+ {
588
+ for (size_t outMap = 0; outMap < outGroupSize; ++outMap)
583
589
  {
590
+ #pragma omp atomic update
584
591
  gradient[weight.n_elem + group * outGroupSize + outMap] +=
585
- accu(curError);
592
+ accu(mappedError.slice(outMap));
586
593
  }
587
594
  }
588
595
  }
@@ -590,16 +597,16 @@ void GroupedConvolutionType<
590
597
  }
591
598
 
592
599
  template<
600
+ typename MatType,
593
601
  typename ForwardConvolutionRule,
594
602
  typename BackwardConvolutionRule,
595
- typename GradientConvolutionRule,
596
- typename MatType
603
+ typename GradientConvolutionRule
597
604
  >
598
- void GroupedConvolutionType<
605
+ void GroupedConvolution<
606
+ MatType,
599
607
  ForwardConvolutionRule,
600
608
  BackwardConvolutionRule,
601
- GradientConvolutionRule,
602
- MatType
609
+ GradientConvolutionRule
603
610
  >::ComputeOutputDimensions()
604
611
  {
605
612
  // First, we must make sure the padding sizes are up to date, which we can
@@ -616,7 +623,7 @@ void GroupedConvolutionType<
616
623
  InitializeSamePadding();
617
624
  }
618
625
 
619
- padding = PaddingType<MatType>(padWLeft, padWRight, padHTop, padHBottom);
626
+ padding = Padding<MatType>(padWLeft, padWRight, padHTop, padHBottom);
620
627
  padding.InputDimensions() = this->inputDimensions;
621
628
  padding.ComputeOutputDimensions();
622
629
 
@@ -654,7 +661,7 @@ void GroupedConvolutionType<
654
661
  apparentHeight = (this->outputDimensions[1] - 1) * strideHeight +
655
662
  kernelHeight;
656
663
 
657
- paddingBackward = PaddingType<MatType>(0, padding.OutputDimensions()[0] -
664
+ paddingBackward = Padding<MatType>(0, padding.OutputDimensions()[0] -
658
665
  apparentWidth, 0, padding.OutputDimensions()[1] - apparentHeight);
659
666
  paddingBackward.InputDimensions() = std::vector<size_t>({ apparentWidth,
660
667
  apparentHeight, inMaps * higherInDimensions });
@@ -664,17 +671,17 @@ void GroupedConvolutionType<
664
671
  }
665
672
 
666
673
  template<
674
+ typename MatType,
667
675
  typename ForwardConvolutionRule,
668
676
  typename BackwardConvolutionRule,
669
- typename GradientConvolutionRule,
670
- typename MatType
677
+ typename GradientConvolutionRule
671
678
  >
672
679
  template<typename Archive>
673
- void GroupedConvolutionType<
680
+ void GroupedConvolution<
681
+ MatType,
674
682
  ForwardConvolutionRule,
675
683
  BackwardConvolutionRule,
676
- GradientConvolutionRule,
677
- MatType
684
+ GradientConvolutionRule
678
685
  >::serialize(Archive& ar, const uint32_t /* version*/)
679
686
  {
680
687
  ar(cereal::base_class<Layer<MatType>>(this));
@@ -698,16 +705,16 @@ void GroupedConvolutionType<
698
705
  }
699
706
 
700
707
  template<
708
+ typename MatType,
701
709
  typename ForwardConvolutionRule,
702
710
  typename BackwardConvolutionRule,
703
- typename GradientConvolutionRule,
704
- typename MatType
711
+ typename GradientConvolutionRule
705
712
  >
706
- void GroupedConvolutionType<
713
+ void GroupedConvolution<
714
+ MatType,
707
715
  ForwardConvolutionRule,
708
716
  BackwardConvolutionRule,
709
- GradientConvolutionRule,
710
- MatType
717
+ GradientConvolutionRule
711
718
  >::InitializeSamePadding()
712
719
  {
713
720
  /*