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
@@ -0,0 +1,189 @@
1
+ /**
2
+ * @file methods/ann/layer/embedding_impl.hpp
3
+ * @author Marcus Edel
4
+ *
5
+ * Implementation of the Embedding layer class.
6
+ *
7
+ * mlpack is free software; you may redistribute it and/or modify it under the
8
+ * terms of the 3-clause BSD license. You should have received a copy of the
9
+ * 3-clause BSD license along with mlpack. If not, see
10
+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.
11
+ */
12
+ #ifndef MLPACK_METHODS_ANN_LAYER_EMBEDDING_IMPL_HPP
13
+ #define MLPACK_METHODS_ANN_LAYER_EMBEDDING_IMPL_HPP
14
+
15
+ // In case it hasn't yet been included.
16
+ #include "embedding.hpp"
17
+
18
+ namespace mlpack {
19
+
20
+ template<typename MatType, typename RegularizerType>
21
+ Embedding<MatType, RegularizerType>::Embedding() :
22
+ Layer<MatType>(),
23
+ vocabSize(0),
24
+ embeddingSize(0)
25
+ {
26
+ // Nothing to do here.
27
+ }
28
+
29
+ template<typename MatType, typename RegularizerType>
30
+ Embedding<MatType, RegularizerType>::Embedding(
31
+ const size_t vocabSize,
32
+ const size_t embeddingSize,
33
+ RegularizerType regularizer) :
34
+ Layer<MatType>(),
35
+ vocabSize(vocabSize),
36
+ embeddingSize(embeddingSize),
37
+ regularizer(regularizer)
38
+ {
39
+ // Nothing to do here.
40
+ }
41
+
42
+ // Copy constructor.
43
+ template<typename MatType, typename RegularizerType>
44
+ Embedding<MatType, RegularizerType>::Embedding(const Embedding& layer) :
45
+ Layer<MatType>(layer),
46
+ vocabSize(layer.vocabSize),
47
+ embeddingSize(layer.embeddingSize),
48
+ regularizer(layer.regularizer)
49
+ {
50
+ // Nothing else to do.
51
+ }
52
+
53
+ // Move constructor.
54
+ template<typename MatType, typename RegularizerType>
55
+ Embedding<MatType, RegularizerType>::Embedding(Embedding&& layer) :
56
+ Layer<MatType>(std::move(layer)),
57
+ vocabSize(std::move(layer.vocabSize)),
58
+ embeddingSize(std::move(layer.embeddingSize)),
59
+ regularizer(std::move(layer.regularizer))
60
+ {
61
+ // Reset parameters of other layer.
62
+ layer.vocabSize = 0;
63
+ layer.embeddingSize = 0;
64
+ }
65
+
66
+ template<typename MatType, typename RegularizerType>
67
+ Embedding<MatType, RegularizerType>&
68
+ Embedding<MatType, RegularizerType>::operator=(const Embedding& layer)
69
+ {
70
+ if (&layer != this)
71
+ {
72
+ Layer<MatType>::operator=(layer);
73
+ vocabSize = layer.vocabSize;
74
+ embeddingSize = layer.embeddingSize;
75
+ regularizer = layer.regularizer;
76
+ }
77
+
78
+ return *this;
79
+ }
80
+
81
+ template<typename MatType, typename RegularizerType>
82
+ Embedding<MatType, RegularizerType>&
83
+ Embedding<MatType, RegularizerType>::operator=(
84
+ Embedding&& layer)
85
+ {
86
+ if (&layer != this)
87
+ {
88
+ Layer<MatType>::operator=(std::move(layer));
89
+ vocabSize = std::move(layer.vocabSize);
90
+ embeddingSize = std::move(layer.embeddingSize);
91
+ regularizer = std::move(layer.regularizer);
92
+
93
+ // Reset parameters of other layer.
94
+ layer.vocabSize = 0;
95
+ layer.embeddingSize = 0;
96
+ }
97
+
98
+ return *this;
99
+ }
100
+
101
+ template<typename MatType, typename RegularizerType>
102
+ void Embedding<MatType, RegularizerType>::SetWeights(const MatType& weightsIn)
103
+ {
104
+ // The weights matrix is of size (embeddingSize, vocabSize). Each vocabulary
105
+ // item's embedding is represented in a single column.
106
+ MakeAlias(weights, weightsIn, embeddingSize, vocabSize);
107
+ }
108
+
109
+ template<typename MatType, typename RegularizerType>
110
+ void Embedding<MatType, RegularizerType>::Forward(
111
+ const MatType& input, MatType& output)
112
+ {
113
+ const size_t batchSize = input.n_cols;
114
+ for (size_t i = 0; i < batchSize; ++i)
115
+ {
116
+ // ith column of output is a vectorized form of a matrix of shape
117
+ // (seqLength, embeddingSize) selected as a combination of rows from the
118
+ // weights. The MultiheadAttention class requires this particular ordering
119
+ // of matrix dimensions.
120
+ output.col(i) = vectorise(weights.cols(
121
+ arma::conv_to<arma::uvec>::from(input.col(i))));
122
+ }
123
+ }
124
+
125
+ template<typename MatType, typename RegularizerType>
126
+ void Embedding<MatType, RegularizerType>::Backward(
127
+ const MatType& /* input */,
128
+ const MatType& /* output */,
129
+ const MatType& /* gy */,
130
+ MatType& g)
131
+ {
132
+ // NOTE: Embedding should be the first layer of a network, and shouldn't be
133
+ // used as an intermediate layer! So Backward() does nothing except set g to
134
+ // zeros.
135
+ g.zeros();
136
+ }
137
+
138
+ template<typename MatType, typename RegularizerType>
139
+ void Embedding<MatType, RegularizerType>::Gradient(
140
+ const MatType& input,
141
+ const MatType& error,
142
+ MatType& gradient)
143
+ {
144
+ const size_t seqLength = input.n_rows;
145
+ const size_t batchSize = input.n_cols;
146
+
147
+ const CubeType errorTemp;
148
+ MakeAlias(const_cast<CubeType&>(errorTemp), error, embeddingSize, seqLength,
149
+ batchSize, 0, false);
150
+ MatType gradTemp;
151
+ MakeAlias(gradTemp, gradient, embeddingSize, vocabSize);
152
+
153
+ gradient.zeros();
154
+ for (size_t j = 0; j < batchSize; ++j)
155
+ {
156
+ for (size_t i = 0; i < seqLength; ++i)
157
+ {
158
+ gradTemp.col((size_t) input(i, j)) += errorTemp.slice(j).col(i);
159
+ }
160
+ }
161
+ }
162
+
163
+ template<typename MatType, typename RegularizerType>
164
+ void Embedding<MatType, RegularizerType>::ComputeOutputDimensions()
165
+ {
166
+ // The Embedding layer returns a two-dimensional output and flattens its
167
+ // input.
168
+ this->outputDimensions.clear();
169
+ this->outputDimensions.push_back(this->embeddingSize);
170
+ this->outputDimensions.push_back(this->inputDimensions[0]);
171
+ for (size_t i = 1; i < this->inputDimensions.size(); ++i)
172
+ this->outputDimensions[1] *= this->inputDimensions[i];
173
+ }
174
+
175
+ template<typename MatType, typename RegularizerType>
176
+ template<typename Archive>
177
+ void Embedding<MatType, RegularizerType>::serialize(
178
+ Archive& ar, const uint32_t /* version */)
179
+ {
180
+ ar(cereal::base_class<Layer<MatType>>(this));
181
+
182
+ ar(CEREAL_NVP(vocabSize));
183
+ ar(CEREAL_NVP(embeddingSize));
184
+ ar(CEREAL_NVP(regularizer));
185
+ }
186
+
187
+ } // namespace mlpack
188
+
189
+ #endif
@@ -52,9 +52,12 @@ namespace mlpack {
52
52
  * (Default: arma::mat).
53
53
  */
54
54
  template<typename MatType = arma::mat>
55
- class FlexibleReLUType : public Layer<MatType>
55
+ class FlexibleReLU : public Layer<MatType>
56
56
  {
57
57
  public:
58
+ // Convenience typedef to access the element type of the weights and data.
59
+ using ElemType = typename MatType::elem_type;
60
+
58
61
  /**
59
62
  * Create the FlexibleReLU object using the specified alpha parameter.
60
63
  * The trainable alpha parameter controls the range of the ReLU function.
@@ -62,22 +65,22 @@ class FlexibleReLUType : public Layer<MatType>
62
65
  *
63
66
  * @param alpha Parameter to adjust the range of the ReLU function.
64
67
  */
65
- FlexibleReLUType(const double alpha = 0);
68
+ FlexibleReLU(const double alpha = 0);
66
69
 
67
- //! Clone the FlexibleReLUType object. This handles polymorphism correctly.
68
- FlexibleReLUType* Clone() const { return new FlexibleReLUType(*this); }
70
+ //! Clone the FlexibleReLU object. This handles polymorphism correctly.
71
+ FlexibleReLU* Clone() const { return new FlexibleReLU(*this); }
69
72
 
70
73
  // Virtual destructor.
71
- virtual ~FlexibleReLUType() { }
74
+ virtual ~FlexibleReLU() { }
72
75
 
73
- //! Copy the given FlexibleReLUType.
74
- FlexibleReLUType(const FlexibleReLUType& other);
75
- //! Take ownership of the given FlexibleReLUType.
76
- FlexibleReLUType(FlexibleReLUType&& other);
77
- //! Copy the given FlexibleReLUType.
78
- FlexibleReLUType& operator=(const FlexibleReLUType& other);
79
- //! Take ownership of the given FlexibleReLUType.
80
- FlexibleReLUType& operator=(FlexibleReLUType&& other);
76
+ //! Copy the given FlexibleReLU.
77
+ FlexibleReLU(const FlexibleReLU& other);
78
+ //! Take ownership of the given FlexibleReLU.
79
+ FlexibleReLU(FlexibleReLU&& other);
80
+ //! Copy the given FlexibleReLU.
81
+ FlexibleReLU& operator=(const FlexibleReLU& other);
82
+ //! Take ownership of the given FlexibleReLU.
83
+ FlexibleReLU& operator=(FlexibleReLU&& other);
81
84
 
82
85
  /**
83
86
  * Reset the layer parameter (alpha). The method is called to
@@ -155,12 +158,7 @@ class FlexibleReLUType : public Layer<MatType>
155
158
 
156
159
  //! Parameter controlling the range of the ReLU function.
157
160
  double userAlpha;
158
- }; // class FlexibleReLUType
159
-
160
- // Convenience typedefs.
161
-
162
- // Standard flexible ReLU layer.
163
- using FlexibleReLU = FlexibleReLUType<arma::mat>;
161
+ }; // class FlexibleReLU
164
162
 
165
163
  } // namespace mlpack
166
164
 
@@ -22,7 +22,7 @@
22
22
  namespace mlpack {
23
23
 
24
24
  template<typename MatType>
25
- FlexibleReLUType<MatType>::FlexibleReLUType(const double userAlpha) :
25
+ FlexibleReLU<MatType>::FlexibleReLU(const double userAlpha) :
26
26
  Layer<MatType>(),
27
27
  userAlpha(userAlpha)
28
28
  {
@@ -30,8 +30,8 @@ FlexibleReLUType<MatType>::FlexibleReLUType(const double userAlpha) :
30
30
  }
31
31
 
32
32
  template<typename MatType>
33
- FlexibleReLUType<MatType>::FlexibleReLUType(
34
- const FlexibleReLUType& other) :
33
+ FlexibleReLU<MatType>::FlexibleReLU(
34
+ const FlexibleReLU& other) :
35
35
  Layer<MatType>(other),
36
36
  userAlpha(other.userAlpha)
37
37
  {
@@ -39,8 +39,8 @@ FlexibleReLUType<MatType>::FlexibleReLUType(
39
39
  }
40
40
 
41
41
  template<typename MatType>
42
- FlexibleReLUType<MatType>::FlexibleReLUType(
43
- FlexibleReLUType&& other) :
42
+ FlexibleReLU<MatType>::FlexibleReLU(
43
+ FlexibleReLU&& other) :
44
44
  Layer<MatType>(std::move(other)),
45
45
  userAlpha(std::move(other.userAlpha))
46
46
  {
@@ -48,8 +48,8 @@ FlexibleReLUType<MatType>::FlexibleReLUType(
48
48
  }
49
49
 
50
50
  template<typename MatType>
51
- FlexibleReLUType<MatType>&
52
- FlexibleReLUType<MatType>::operator=(const FlexibleReLUType& other)
51
+ FlexibleReLU<MatType>&
52
+ FlexibleReLU<MatType>::operator=(const FlexibleReLU& other)
53
53
  {
54
54
  if (&other != this)
55
55
  {
@@ -61,8 +61,8 @@ FlexibleReLUType<MatType>::operator=(const FlexibleReLUType& other)
61
61
  }
62
62
 
63
63
  template<typename MatType>
64
- FlexibleReLUType<MatType>&
65
- FlexibleReLUType<MatType>::operator=(FlexibleReLUType&& other)
64
+ FlexibleReLU<MatType>&
65
+ FlexibleReLU<MatType>::operator=(FlexibleReLU&& other)
66
66
  {
67
67
  if (&other != this)
68
68
  {
@@ -74,46 +74,46 @@ FlexibleReLUType<MatType>::operator=(FlexibleReLUType&& other)
74
74
  }
75
75
 
76
76
  template<typename MatType>
77
- void FlexibleReLUType<MatType>::SetWeights(const MatType& weights)
77
+ void FlexibleReLU<MatType>::SetWeights(const MatType& weights)
78
78
  {
79
79
  MakeAlias(alpha, weights, 1, 1);
80
80
  }
81
81
 
82
82
  template<typename MatType>
83
- void FlexibleReLUType<MatType>::CustomInitialize(
83
+ void FlexibleReLU<MatType>::CustomInitialize(
84
84
  MatType& W,
85
85
  const size_t elements)
86
86
  {
87
87
  if (elements != 1)
88
88
  {
89
- throw std::invalid_argument("FlexibleReLUType::CustomInitialize(): wrong "
89
+ throw std::invalid_argument("FlexibleReLU::CustomInitialize(): wrong "
90
90
  "elements size!");
91
91
  }
92
92
 
93
- W(0) = userAlpha;
93
+ W(0) = ElemType(userAlpha);
94
94
  }
95
95
 
96
96
  template<typename MatType>
97
- void FlexibleReLUType<MatType>::Forward(
97
+ void FlexibleReLU<MatType>::Forward(
98
98
  const MatType& input, MatType& output)
99
99
  {
100
- output = arma::clamp(input, 0.0,
101
- std::numeric_limits<typename MatType::elem_type>::max()) + alpha(0);
100
+ output = arma::clamp(input, 0,
101
+ std::numeric_limits<ElemType>::max()) + alpha(0);
102
102
  }
103
103
 
104
104
  template<typename MatType>
105
- void FlexibleReLUType<MatType>::Backward(
105
+ void FlexibleReLU<MatType>::Backward(
106
106
  const MatType& input,
107
107
  const MatType& /* output */,
108
108
  const MatType& gy,
109
109
  MatType& g)
110
110
  {
111
111
  // Compute the first derivative of FlexibleReLU function.
112
- g = gy % (input > 0);
112
+ g = gy % conv_to<MatType>::from(input > 0);
113
113
  }
114
114
 
115
115
  template<typename MatType>
116
- void FlexibleReLUType<MatType>::Gradient(
116
+ void FlexibleReLU<MatType>::Gradient(
117
117
  const MatType& input,
118
118
  const MatType& error,
119
119
  MatType& gradient)
@@ -123,7 +123,7 @@ void FlexibleReLUType<MatType>::Gradient(
123
123
 
124
124
  template<typename MatType>
125
125
  template<typename Archive>
126
- void FlexibleReLUType<MatType>::serialize(
126
+ void FlexibleReLU<MatType>::serialize(
127
127
  Archive& ar,
128
128
  const uint32_t /* version*/)
129
129
  {
@@ -42,32 +42,34 @@ namespace mlpack {
42
42
  * computation.
43
43
  */
44
44
  template<typename MatType = arma::mat>
45
- class FTSwishType : public Layer<MatType>
45
+ class FTSwish : public Layer<MatType>
46
46
  {
47
47
  public:
48
+ // Convenience typedef to access the element type of the weights and data.
49
+ using ElemType = typename MatType::elem_type;
50
+
48
51
  /**
49
52
  * Create the Flatten T Swish object using the specified parameters.
50
53
  * The thresholded value T can be adjusted via T paramaters.
51
54
  * When the x is < 0, T will be used instead of 0.
52
55
  * The default value of T is -0.20 as suggested in the paper.
53
- * @param T
54
56
  */
55
- FTSwishType(const double T = -0.20);
57
+ FTSwish(const double T = -0.20);
56
58
 
57
- //! Clone the FTSwishType object. This handles polymorphism correctly.
58
- FTSwishType* Clone() const { return new FTSwishType(*this); }
59
+ //! Clone the FTSwish object. This handles polymorphism correctly.
60
+ FTSwish* Clone() const { return new FTSwish(*this); }
59
61
 
60
62
  // Virtual destructor.
61
- virtual ~FTSwishType() { }
63
+ virtual ~FTSwish() { }
62
64
 
63
- //! Copy the given FTSwishType.
64
- FTSwishType(const FTSwishType& other);
65
- //! Take ownership of the given FTSwishType.
66
- FTSwishType(FTSwishType&& other);
67
- //! Copy the given FTSwishType.
68
- FTSwishType& operator=(const FTSwishType& other);
69
- //! Take ownership of the given FTSwishType.
70
- FTSwishType& operator=(FTSwishType&& other);
65
+ //! Copy the given FTSwish.
66
+ FTSwish(const FTSwish& other);
67
+ //! Take ownership of the given FTSwish.
68
+ FTSwish(FTSwish&& other);
69
+ //! Copy the given FTSwish.
70
+ FTSwish& operator=(const FTSwish& other);
71
+ //! Take ownership of the given FTSwish.
72
+ FTSwish& operator=(FTSwish&& other);
71
73
 
72
74
  /**
73
75
  * Ordinary feed forward pass of a neural network, evaluating the function
@@ -105,10 +107,7 @@ class FTSwishType : public Layer<MatType>
105
107
  private:
106
108
  //! Threshold value for x < 0.
107
109
  double T;
108
- }; // class FTSwishType
109
-
110
- // Convenience typedefs.
111
- using FTSwish = FTSwishType<arma::mat>;
110
+ }; // class FTSwish
112
111
 
113
112
  } // namespace mlpack
114
113
 
@@ -4,7 +4,6 @@
4
4
  *
5
5
  * Definition of Flatten T Swish layer first introduced in the acoustic model,
6
6
  * Hock Hung Chieng, Noorhaniza Wahid, Pauline Ong, Sai Raj Kishore Perla,
7
- *
8
7
  *
9
8
  * mlpack is free software; you may redistribute it and/or modify it under the
10
9
  * terms of the 3-clause BSD license. You should have received a copy of the
@@ -20,7 +19,7 @@
20
19
  namespace mlpack {
21
20
 
22
21
  template<typename MatType>
23
- FTSwishType<MatType>::FTSwishType(const double T) :
22
+ FTSwish<MatType>::FTSwish(const double T) :
24
23
  Layer<MatType>(),
25
24
  T(T)
26
25
  {
@@ -28,7 +27,7 @@ FTSwishType<MatType>::FTSwishType(const double T) :
28
27
  }
29
28
 
30
29
  template<typename MatType>
31
- FTSwishType<MatType>::FTSwishType(const FTSwishType& other) :
30
+ FTSwish<MatType>::FTSwish(const FTSwish& other) :
32
31
  Layer<MatType>(other),
33
32
  T(other.T)
34
33
  {
@@ -36,7 +35,7 @@ FTSwishType<MatType>::FTSwishType(const FTSwishType& other) :
36
35
  }
37
36
 
38
37
  template<typename MatType>
39
- FTSwishType<MatType>::FTSwishType(FTSwishType&& other) :
38
+ FTSwish<MatType>::FTSwish(FTSwish&& other) :
40
39
  Layer<MatType>(std::move(other)),
41
40
  T(std::move(other.T))
42
41
  {
@@ -44,8 +43,8 @@ FTSwishType<MatType>::FTSwishType(FTSwishType&& other) :
44
43
  }
45
44
 
46
45
  template<typename MatType>
47
- FTSwishType<MatType>&
48
- FTSwishType<MatType>::operator=(const FTSwishType& other)
46
+ FTSwish<MatType>&
47
+ FTSwish<MatType>::operator=(const FTSwish& other)
49
48
  {
50
49
  if (&other != this)
51
50
  {
@@ -57,8 +56,8 @@ FTSwishType<MatType>::operator=(const FTSwishType& other)
57
56
  }
58
57
 
59
58
  template<typename MatType>
60
- FTSwishType<MatType>&
61
- FTSwishType<MatType>::operator=(FTSwishType&& other)
59
+ FTSwish<MatType>&
60
+ FTSwish<MatType>::operator=(FTSwish&& other)
62
61
  {
63
62
  if (&other != this)
64
63
  {
@@ -70,45 +69,28 @@ FTSwishType<MatType>::operator=(FTSwishType&& other)
70
69
  }
71
70
 
72
71
  template<typename MatType>
73
- void FTSwishType<MatType>::Forward(const MatType& input, MatType& output)
72
+ void FTSwish<MatType>::Forward(const MatType& input, MatType& output)
74
73
  {
75
- #pragma omp for
76
- for (size_t i = 0; i < (size_t) input.n_elem; ++i)
77
- {
78
- if (input(i) >= 0)
79
- output(i) = input(i) / (1 + std::exp(-input(i))) + T;
80
- else
81
- output(i) = T;
82
- }
74
+ output = ElemType(T) + clamp(input, 0,
75
+ std::numeric_limits<ElemType>::max()) /
76
+ (1 + exp(-input));
83
77
  }
84
78
 
85
79
  template<typename MatType>
86
- void FTSwishType<MatType>::Backward(
80
+ void FTSwish<MatType>::Backward(
87
81
  const MatType& input,
88
- const MatType& /* output */,
82
+ const MatType& output,
89
83
  const MatType& gy,
90
84
  MatType& g)
91
85
  {
92
- #pragma omp for
93
- for (size_t i = 0; i < (size_t) input.n_elem; ++i)
94
- {
95
- if (input(i) >= 0)
96
- {
97
- const double sigmoidX = 1 / (1 + std::exp(-input(i)));
98
- const double fX = input(i) * sigmoidX;
99
-
100
- g(i) = gy(i) * (sigmoidX * (1 - fX) + fX);
101
- }
102
- else
103
- {
104
- g(i) = 0;
105
- }
106
- }
86
+ const ElemType convT = ElemType(T);
87
+ g = gy % sign(output - convT) % (((output - convT) / input) %
88
+ (1 - (output - convT)) + (output - convT));
107
89
  }
108
90
 
109
91
  template<typename MatType>
110
92
  template<typename Archive>
111
- void FTSwishType<MatType>::serialize(
93
+ void FTSwish<MatType>::serialize(
112
94
  Archive& ar,
113
95
  const uint32_t /* version */)
114
96
  {
@@ -17,8 +17,7 @@
17
17
 
18
18
  #include <mlpack/methods/ann/convolution_rules/border_modes.hpp>
19
19
  #include <mlpack/methods/ann/convolution_rules/naive_convolution.hpp>
20
- #include <mlpack/methods/ann/convolution_rules/fft_convolution.hpp>
21
- #include <mlpack/methods/ann/convolution_rules/svd_convolution.hpp>
20
+ #include <mlpack/methods/ann/convolution_rules/im2col_convolution.hpp>
22
21
  #include <mlpack/core/util/to_lower.hpp>
23
22
 
24
23
  #include "layer.hpp"
@@ -69,21 +68,23 @@ namespace mlpack {
69
68
  * computation.
70
69
  */
71
70
  template <
72
- typename ForwardConvolutionRule = NaiveConvolution<ValidConvolution>,
73
- typename BackwardConvolutionRule = NaiveConvolution<FullConvolution>,
74
- typename GradientConvolutionRule = NaiveConvolution<ValidConvolution>,
75
- typename MatType = arma::mat
71
+ typename MatType = arma::mat,
72
+ typename ForwardConvolutionRule = Im2ColConvolution<ValidConvolution>,
73
+ typename BackwardConvolutionRule = Im2ColConvolution<FullConvolution>,
74
+ typename GradientConvolutionRule = Im2ColConvolution<ValidConvolution>
76
75
  >
77
- class GroupedConvolutionType : public Layer<MatType>
76
+ class GroupedConvolution : public Layer<MatType>
78
77
  {
79
78
  public:
79
+ // Convenience typedefs.
80
+ using ElemType = typename MatType::elem_type;
80
81
  using CubeType = typename GetCubeType<MatType>::type;
81
82
 
82
- //! Create the GroupedConvolutionType object.
83
- GroupedConvolutionType();
83
+ // Create the GroupedConvolution object.
84
+ GroupedConvolution();
84
85
 
85
86
  /**
86
- * Create the GroupedConvolutionType object using the specified number of
87
+ * Create the GroupedConvolution object using the specified number of
87
88
  * output maps, filter size, stride and padding parameter.
88
89
  *
89
90
  * @param maps The number of output maps.
@@ -99,7 +100,7 @@ class GroupedConvolutionType : public Layer<MatType>
99
100
  * will be used.
100
101
  * @param useBias Whether or not to use a bias with the convolution.
101
102
  */
102
- GroupedConvolutionType(const size_t maps,
103
+ GroupedConvolution(const size_t maps,
103
104
  const size_t kernelWidth,
104
105
  const size_t kernelHeight,
105
106
  const size_t groups,
@@ -131,7 +132,7 @@ class GroupedConvolutionType : public Layer<MatType>
131
132
  * will be used.
132
133
  * @param useBias Whether or not to use a bias with the convolution.
133
134
  */
134
- GroupedConvolutionType(const size_t maps,
135
+ GroupedConvolution(const size_t maps,
135
136
  const size_t kernelWidth,
136
137
  const size_t kernelHeight,
137
138
  const size_t groups,
@@ -142,27 +143,27 @@ class GroupedConvolutionType : public Layer<MatType>
142
143
  const std::string& paddingType = "none",
143
144
  const bool useBias = true);
144
145
 
145
- //! Clone the GroupedConvolutionType object. This handles polymorphism
146
+ //! Clone the GroupedConvolution object. This handles polymorphism
146
147
  //! correctly.
147
- GroupedConvolutionType* Clone() const
148
+ GroupedConvolution* Clone() const
148
149
  {
149
- return new GroupedConvolutionType(*this);
150
+ return new GroupedConvolution(*this);
150
151
  }
151
152
 
152
- //! Copy the given GroupedConvolutionType (but not weights).
153
- GroupedConvolutionType(const GroupedConvolutionType& layer);
153
+ //! Copy the given GroupedConvolution (but not weights).
154
+ GroupedConvolution(const GroupedConvolution& layer);
154
155
 
155
- //! Take ownership of the given GroupedConvolutionType (but not weights).
156
- GroupedConvolutionType(GroupedConvolutionType&&);
156
+ //! Take ownership of the given GroupedConvolution (but not weights).
157
+ GroupedConvolution(GroupedConvolution&&);
157
158
 
158
- //! Copy the given GroupedConvolutionType (but not weights).
159
- GroupedConvolutionType& operator=(const GroupedConvolutionType& layer);
159
+ //! Copy the given GroupedConvolution (but not weights).
160
+ GroupedConvolution& operator=(const GroupedConvolution& layer);
160
161
 
161
- //! Take ownership of the given GroupedConvolutionType (but not weights).
162
- GroupedConvolutionType& operator=(GroupedConvolutionType&& layer);
162
+ //! Take ownership of the given GroupedConvolution (but not weights).
163
+ GroupedConvolution& operator=(GroupedConvolution&& layer);
163
164
 
164
165
  // Virtual destructor.
165
- virtual ~GroupedConvolutionType() { }
166
+ virtual ~GroupedConvolution() { }
166
167
 
167
168
  /*
168
169
  * Set the weight and bias term.
@@ -396,10 +397,10 @@ class GroupedConvolutionType : public Layer<MatType>
396
397
  CubeType gradientTemp;
397
398
 
398
399
  //! Locally-stored padding layer.
399
- PaddingType<MatType> padding;
400
+ Padding<MatType> padding;
400
401
 
401
402
  //! Locally-stored padding layer for backward pass.
402
- PaddingType<MatType> paddingBackward;
403
+ Padding<MatType> paddingBackward;
403
404
 
404
405
  //! Type of padding.
405
406
  std::string paddingType;
@@ -416,13 +417,6 @@ class GroupedConvolutionType : public Layer<MatType>
416
417
  size_t apparentHeight;
417
418
  }; // class Convolution
418
419
 
419
- // Standard Convolution layer.
420
- using GroupedConvolution = GroupedConvolutionType<
421
- NaiveConvolution<ValidConvolution>,
422
- NaiveConvolution<FullConvolution>,
423
- NaiveConvolution<ValidConvolution>,
424
- arma::mat>;
425
-
426
420
  } // namespace mlpack
427
421
 
428
422
  // Include implementation.