mlpack 4.0.0
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
withcore::v2::any
orstd::any
if available (#3006). - Remove old non used Boost headers (#3005).
- Replace
boost::enable_if
withstd::enable_if
(#2998). - Replace
boost::is_same
withstd::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 forknn
,kfn
,cf
,range_search
,krann
, andkde
bindings (#2803). - Add k-means++ initialization strategy (#2813).
NegativeLogLikelihood<>
now expects classes in the range0
tonumClasses - 1
(#2534).- Add
Lambda1()
,Lambda2()
,UseCholesky()
, andTolerance()
members toLARS
so parameters for training can be modified (#2861). - Remove unused
ElemType
template parameter fromDecisionTree
andRandomForest
(#2874). - Fix Python binding build when the CMake variable
USE_OPENMP
is set toOFF
(#2884). - The
mlpack_test
target is no longer built as part ofmake all
. Usemake 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-populatedDatasetInfo
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()
andhoeffding_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.