Skip to content

mlpack 4.0.0

Compare
Choose a tag to compare
@mlpack-bot mlpack-bot released this 24 Oct 13:43
· 1504 commits to master since this release

Released Oct. 24, 2022.

This is a huge overhaul of mlpack so that the C++ portion of the library is header-only.
The library no longer depends on Boost, and only requires cereal, Armadillo, and ensmallen.
Compilation time has been significantly reduced due to these changes, and complicated linking processes are no longer necessary.
Since this refactoring took quite a while, there have also been numerous other improvements, listed individually below:

  • Bump C++ standard requirement to C++14 (#3233).
  • Fix Perceptron to work with cross-validation framework (#3190).
  • Migrate from boost tests to Catch2 framework (#2523), (#2584).
  • Bump minimum armadillo version from 8.400 to 9.800 (#3043), (#3048).
  • Adding a copy constructor in the Convolution layer (#3067).
  • Replace boost::spirit parser by a local efficient implementation (#2942).
  • Disable correctly the autodownloader + fix tests stability (#3076).
  • Replace boost::any with core::v2::any or std::any if available (#3006).
  • Remove old non used Boost headers (#3005).
  • Replace boost::enable_if with std::enable_if (#2998).
  • Replace boost::is_same with std::is_same (#2993).
  • Remove invalid option for emsmallen and STB (#2960).
  • Check for armadillo dependencies before downloading armadillo (#2954).
  • Disable the usage of autodownloader by default (#2953).
  • Install dependencies downloaded with the autodownloader (#2952).
  • Download older Boost if the compiler is old (#2940).
  • Add support for embedded systems (#2531).
  • Build mlpack executable statically if the library is statically linked (#2931).
  • Fix cover tree loop bug on embedded arm systems (#2869).
  • Fix a LAPACK bug in FindArmadillo.cmake (#2929).
  • Add an autodownloader to get mlpack dependencies (#2927).
  • Remove Coverage files and configurations from CMakeLists (#2866).
  • Added Multi Label Soft Margin Loss loss function for neural networks (#2345).
  • Added Decision Tree Regressor (#2905). It can be used using the class mlpack::tree::DecisionTreeRegressor. It is accessible only though C++.
  • Added dict-style inspection of mlpack models in python bindings (#2868).
  • Added Extra Trees Algorithm (#2883). Currently, it can be used using the class mlpack::tree::ExtraTrees, but only through C++.
  • Add Flatten T Swish activation function (flatten-t-swish.hpp)
  • Added warm start feature to Random Forest (#2881); this feature is accessible from mlpack's bindings to different languages.
  • Added Pixel Shuffle layer (#2563).
  • Add "check_input_matrices" option to python bindings that checks for NaN and inf values in all the input matrices (#2787).
  • Add Adjusted R squared functionality to R2Score::Evaluate (#2624).
  • Disabled all the bindings by default in CMake (#2782).
  • Added an implementation to Stratify Data (#2671).
  • Add BUILD_DOCS CMake option to control whether Doxygen documentation is built (default ON) (#2730).
  • Add Triplet Margin Loss function (#2762).
  • Add finalizers to Julia binding model types to fix memory handling (#2756).
  • HMM: add functions to calculate likelihood for data stream with/without pre-calculated emission probability (#2142).
  • Replace Boost serialization library with Cereal (#2458).
  • Add PYTHON_INSTALL_PREFIX CMake option to specify installation root for Python bindings (#2797).
  • Removed boost::visitor from model classes for knn, kfn, cf, range_search, krann, and kde bindings (#2803).
  • Add k-means++ initialization strategy (#2813).
  • NegativeLogLikelihood<> now expects classes in the range 0 to numClasses - 1 (#2534).
  • Add Lambda1(), Lambda2(), UseCholesky(), and Tolerance() members to LARS so parameters for training can be modified (#2861).
  • Remove unused ElemType template parameter from DecisionTree and RandomForest (#2874).
  • Fix Python binding build when the CMake variable USE_OPENMP is set to OFF (#2884).
  • The mlpack_test target is no longer built as part of make all. Use make mlpack_test to build the tests.
  • Fixes to HoeffdingTree: ensure that training still works when empty constructor is used (#2964).
  • Fix Julia model serialization bug (#2970).
  • Fix LoadCSV() to use pre-populated DatasetInfo objects (#2980).
  • Add probabilities option to softmax regression binding, to get class probabilities for test points (#3001).
  • Fix thread safety issues in mlpack bindings to other languages (#2995).
  • Fix double-free of model pointers in R bindings (#3034).
  • Fix Julia, Python, R, and Go handling of categorical data for decision_tree() and hoeffding_tree() (#2971).
  • Depend on pkgbuild for R bindings (#3081).
  • Replaced Numpy deprecated code in Python bindings (#3126).

Refer to the documentation on the website or in doc/ for updated instructions on how to use this new version of mlpack.