diff --git a/CMake/Autodownload.cmake b/CMake/Autodownload.cmake index 4864e5004c..af78d624d4 100644 --- a/CMake/Autodownload.cmake +++ b/CMake/Autodownload.cmake @@ -27,11 +27,7 @@ macro(get_deps LINK DEPS_NAME PACKAGE) # Get the name of the directory. file (GLOB DIRECTORIES RELATIVE "${CMAKE_BINARY_DIR}/deps/" "${CMAKE_BINARY_DIR}/deps/${DEPS_NAME}*.*") - # Clean this line when boost is removed. - if (${DEPS_NAME} MATCHES "boost") - file (GLOB DIRECTORIES RELATIVE "${CMAKE_BINARY_DIR}/deps/" - "${CMAKE_BINARY_DIR}/deps/${DEPS_NAME}*_*") - elseif(${DEPS_NAME} MATCHES "stb") + if(${DEPS_NAME} MATCHES "stb") file (GLOB DIRECTORIES RELATIVE "${CMAKE_BINARY_DIR}/deps/" "${CMAKE_BINARY_DIR}/deps/${DEPS_NAME}") endif() @@ -44,14 +40,8 @@ macro(get_deps LINK DEPS_NAME PACKAGE) list(LENGTH DIRECTORIES DIRECTORIES_LEN) if (DIRECTORIES_LEN GREATER 0) list(GET DIRECTORIES 0 DEPENDENCY_DIR) - # Clean these lines when boost is removed. - if (${DEPS_NAME} MATCHES "boost") - set(Boost_INCLUDE_DIR "${CMAKE_BINARY_DIR}/deps/${DEPENDENCY_DIR}/") - install(DIRECTORY "${Boost_INCLUDE_DIR}/boost" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - else() - set(GENERIC_INCLUDE_DIR "${CMAKE_BINARY_DIR}/deps/${DEPENDENCY_DIR}/include") - install(DIRECTORY "${GENERIC_INCLUDE_DIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - endif() + set(GENERIC_INCLUDE_DIR "${CMAKE_BINARY_DIR}/deps/${DEPENDENCY_DIR}/include") + install(DIRECTORY "${GENERIC_INCLUDE_DIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") else () message(FATAL_ERROR "Problem unpacking ${DEPS_NAME}! Expected only one directory ${DEPS_NAME};. Try to remove the directory ${CMAKE_BINARY_DIR}/deps and reconfigure.") diff --git a/CMakeLists.txt b/CMakeLists.txt index 40a447b282..f4998e69f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,6 @@ option(BUILD_DOCS "Build doxygen documentation (if doxygen is available)." ON) # See https://github.com/mlpack/mlpack/issues/3033 for some more discussion. set(ARMADILLO_VERSION "9.800") set(ENSMALLEN_VERSION "2.10.0") -set(BOOST_VERSION "1.58") set(CEREAL_VERSION "1.1.2") # If BUILD_SHARED_LIBS is OFF then the mlpack library will be built statically. @@ -290,8 +289,6 @@ endif() # ARMADILLO_LIBRARY - location of libarmadillo.so / armadillo.lib # ARMADILLO_INCLUDE_DIR - directory containing # ARMADILLO_INCLUDE_DIRS - directories necessary for Armadillo includes -# BOOST_ROOT - root of Boost installation -# BOOST_INCLUDEDIR - include directory for Boost # CEREAL_INCLUDE_DIR - include directory for cereal # ENSMALLEN_INCLUDE_DIR - include directory for ensmallen # STB_IMAGE_INCLUDE_DIR - include directory for STB image library @@ -377,54 +374,6 @@ else() endif() set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIRS} ${CEREAL_INCLUDE_DIR}) -# Unfortunately this configuration variable is necessary and will need to be -# updated as time goes on and new versions are released. -set(Boost_ADDITIONAL_VERSIONS - "1.79.0" "1.79" - "1.78.0" "1.78" - "1.77.0" "1.77" - "1.76.0" "1.76" - "1.75.0" "1.75" - "1.74.0" "1.74" - "1.73.0" "1.73" - "1.72.0" "1.72" - "1.71.0" "1.71" - "1.70.0" "1.70" - "1.69.0" "1.69" - "1.68.0" "1.68" - "1.67.0" "1.67" - "1.66.0" "1.66" - "1.65.1" "1.65.0" "1.65" - "1.64.1" "1.64.0" "1.64" - "1.63.1" "1.63.0" "1.63" - "1.62.1" "1.62.0" "1.62" - "1.61.1" "1.61.0" "1.61" - "1.60.1" "1.60.0" "1.60" - "1.59.1" "1.59.0" "1.59" - "1.58.1" "1.58.0" "1.58") -# Disable forced config-mode CMake search for Boost, which only imports targets -# and does not set the variables that we need. -# -# TODO for the brave: transition all mlpack's CMake to 'target-based modern -# CMake'. Good luck! You'll need it. -set(Boost_NO_BOOST_CMAKE 1) -if (NOT DOWNLOAD_DEPENDENCIES) - find_package(Boost "${BOOST_VERSION}" REQUIRED) -else() - find_package(Boost "${BOOST_VERSION}") - if (NOT Boost_FOUND) - if (CMAKE_COMPILER_IS_GNUCC AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)) - get_deps(http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.gz boost boost_1_58_0.tar.gz) - else() - get_deps(https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz boost boost_1_76_0.tar.gz) - endif() - find_package(Boost REQUIRED) - endif() -endif() -set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}) -set(MLPACK_LIBRARIES ${MLPACK_LIBRARIES}) -set(MLPACK_LIBRARY_DIRS ${MLPACK_LIBRARY_DIRS}) - # Detect OpenMP support in a compiler. If the compiler supports OpenMP, flags # to compile with OpenMP are returned and added and the HAS_OPENMP definition # is added for compilation. diff --git a/README.md b/README.md index a4a8e43788..c33b715a59 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,6 @@ Citations are beneficial for the growth and improvement of mlpack. mlpack has the following dependencies: Armadillo >= 9.800 - Boost (math_c99, spirit) >= 1.58.0 CMake >= 3.6 ensmallen >= 2.10.0 cereal >= 1.1.2 @@ -202,7 +201,6 @@ Options are specified with the -D flag. The allowed options include: DEBUG=(ON/OFF): compile with debugging symbols PROFILE=(ON/OFF): compile with profiling symbols ARMA_EXTRA_DEBUG=(ON/OFF): compile with extra Armadillo debugging symbols - BOOST_ROOT=(/path/to/boost/): path to root of boost installation ARMADILLO_INCLUDE_DIR=(/path/to/armadillo/include/): path to Armadillo headers ARMADILLO_LIBRARY=(/path/to/armadillo/libarmadillo.so): Armadillo library BUILD_CLI_EXECUTABLES=(ON/OFF): whether or not to build command-line programs diff --git a/doc/examples/sample-ml-app/sample-ml-app/sample-ml-app.vcxproj b/doc/examples/sample-ml-app/sample-ml-app/sample-ml-app.vcxproj index 02d1ed80b4..31b304cecc 100644 --- a/doc/examples/sample-ml-app/sample-ml-app/sample-ml-app.vcxproj +++ b/doc/examples/sample-ml-app/sample-ml-app/sample-ml-app.vcxproj @@ -104,12 +104,12 @@ true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) false - C:\boost\boost_1_66_0;C:\mlpack\armadillo-8.500.1\include;C:\mlpack\mlpack-3.4.2\build\include;%(AdditionalIncludeDirectories) + C:\mlpack\armadillo-8.500.1\include;C:\mlpack\mlpack-3.4.2\build\include;%(AdditionalIncludeDirectories) Console true - C:\mlpack\mlpack-3.4.2\build\Debug\mlpack.lib;C:\boost\boost_1_66_0\lib64-msvc-14.1\libboost_serialization-vc141-mt-gd-x64-1_66.lib;%(AdditionalDependencies) + C:\mlpack\mlpack-3.4.2\build\Debug\mlpack.lib;%(AdditionalDependencies) xcopy /y "C:\mlpack\mlpack-3.4.2\build\Debug\mlpack.dll" $(OutDir) diff --git a/doc/guide/bindings.hpp b/doc/guide/bindings.hpp index 797eded866..b6b93e67c7 100644 --- a/doc/guide/bindings.hpp +++ b/doc/guide/bindings.hpp @@ -1314,7 +1314,7 @@ will be able to pass a pointer to the model itself. This is generally best---users should not expect to be able to manipulate the model in the target language, but they should expect that they can pass a model back and forth without paying a runtime penalty. So, for example, serializing a model using a -@c boost::text_oarchive and then returning the string that represents the model +cereal text archive and then returning the string that represents the model is not acceptable, because that string can be extremely large and the time it takes to decode the model can be very large. diff --git a/doc/guide/build.hpp b/doc/guide/build.hpp index 74edd56be8..c9aab1fa7c 100644 --- a/doc/guide/build.hpp +++ b/doc/guide/build.hpp @@ -96,7 +96,6 @@ mlpack depends on the following libraries, which need to be installed on the system and have headers present: - Armadillo >= 9.800 (with LAPACK support) - - Boost (math_c99, spirit) >= 1.58 - cereal >= 1.1.2 - ensmallen >= 2.10.0 (will be downloaded if not found) @@ -117,9 +116,8 @@ In Ubuntu (>= 18.04) and Debian (>= 10) all of these dependencies can be installed through apt: @code -# apt-get install libboost-math-dev libcereal-dev - libarmadillo-dev binutils-dev python3-pandas python3-numpy cython3 - python3-setuptools +# apt-get install libcereal-dev libarmadillo-dev binutils-dev python3-pandas + python3-numpy cython3 python3-setuptools @endcode If you are using Ubuntu 19.10 or newer, you can also install @c libensmallen-dev @@ -140,8 +138,8 @@ source as apt installs an older version. So you need to omit On Fedora, Red Hat, or CentOS, these same dependencies can be obtained via dnf: @code -# dnf install boost-devel boost-math armadillo-devel binutils-devel - python3-Cython python3-setuptools python3-numpy python3-pandas ensmallen-devel +# dnf install armadillo-devel binutils-devel python3-Cython python3-setuptools + python3-numpy python3-pandas ensmallen-devel stbi-devel cereal-devel @endcode @@ -225,7 +223,6 @@ and libraries. These also use the '-D' flag. - ARMADILLO_INCLUDE_DIR=(/path/to/armadillo/include/): path to Armadillo headers - ARMADILLO_LIBRARY=(/path/to/armadillo/libarmadillo.so): location of Armadillo library - - BOOST_ROOT=(/path/to/boost/): path to root of boost installation - CEREAL_INCLUDE_DIR=(/path/to/cereal/include): path to include directory for cereal - ENSMALLEN_INCLUDE_DIR=(/path/to/ensmallen/include): path to include directory diff --git a/doc/guide/build_windows.hpp b/doc/guide/build_windows.hpp index 41eb911659..c85379492e 100644 --- a/doc/guide/build_windows.hpp +++ b/doc/guide/build_windows.hpp @@ -48,7 +48,6 @@ This tutorial has been designed and tested using: - Visual Studio 2019 (toolset v142) - mlpack - OpenBLAS.0.2.14.1 -- boost_1_71_0-msvc-14.2-64 - armadillo (newest version) - and x64 configuration @@ -100,18 +99,6 @@ It you choose to build `OpenBLAS` from source, make sure that `LAPACK` functions sure that the `openblas.lib` library is linked in your `Armadillo` build (see below), as well as the library path used for the CMake options `BLAS_LIBRARIES` and `LAPACK_LIBRARIES` in the mlpack CMake project. - Boost Dependency - -You can either get Boost via NuGet or you can download the prebuilt Windows binaries separately. -This tutorial follows the second approach for simplicity. - -- Download the "Prebuilt Windows binaries" of the Boost library ("boost_1_71_0-msvc-14.2-64") from -Sourceforge - -@note Make sure you download the MSVC version that matches your Visual Studio - -- Install or unzip to "C:\boost\" - Armadillo Dependency - Download the newest version of Armadillo from Sourceforge @@ -140,7 +127,7 @@ compiler version, check if the Visual Studio compiler and Windows SDK are instal - Run cmake: @code -cmake -G "Visual Studio 16 2019" -A x64 -DBLAS_LIBRARIES:FILEPATH="C:/mlpack/mlpack/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DLAPACK_LIBRARIES:FILEPATH="C:/mlpack/mlpack/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DARMADILLO_INCLUDE_DIR="C:/mlpack/armadillo/include" -DARMADILLO_LIBRARY:FILEPATH="C:/mlpack/armadillo/build/Debug/armadillo.lib" -DBOOST_INCLUDEDIR:PATH="C:/boost/" -DBOOST_LIBRARYDIR:PATH="C:/boost/lib64-msvc-14.2" -DDEBUG=OFF -DPROFILE=OFF .. +cmake -G "Visual Studio 16 2019" -A x64 -DBLAS_LIBRARIES:FILEPATH="C:/mlpack/mlpack/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DLAPACK_LIBRARIES:FILEPATH="C:/mlpack/mlpack/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DARMADILLO_INCLUDE_DIR="C:/mlpack/armadillo/include" -DARMADILLO_LIBRARY:FILEPATH="C:/mlpack/armadillo/build/Debug/armadillo.lib" -DDEBUG=OFF -DPROFILE=OFF .. @endcode @note cmake will attempt to automatically download the ensmallen dependency. If for some reason cmake can't download the dependency, you will need to manually download ensmallen from http://ensmallen.org/ and extract it to "C:\mlpack\mlpack\deps\". Then, specify the path to ensmallen using the flag: -DENSMALLEN_INCLUDE_DIR=C:/mlpack/mlpack/deps/ensmallen/include @@ -166,7 +153,6 @@ must provide to Visual Studio's CMake are: - `ARMADILLO_INCLUDE_DIR` - `ARMADILLO_LIBRARY` - - `BOOST_ROOT` - `CEREAL_INCLUDE_DIR` - `BLAS_LIBRARIES` - `LAPACK_LIBRARIES` @@ -215,16 +201,6 @@ Here is a full example of the `CMakeSettings.json`file: "value": "PATH/TO/CPP/DEPENDENCY/cereal-1.3.0/include", "type": "PATH" }, - { - "name": "BUILD_ROOT", - "value": "PATH/TO/CPP/DEPENDENCY/boost_1_66_0", - "type": "PATH" - }, - { - "name": "BOOST_INCLUDEDIR", - "value": "PATH/TO/CPP/DEPENDENCY/boost_1_66_0", - "type": "PATH" - }, { "name": "BLAS_LIBRARIES", "value": "PATH/TO/CPP/DEPENDENCY/OpenBLAS/lib/openblas.lib", @@ -255,10 +231,6 @@ If you prefer to use cmake GUI, follow these instructions: - Name: `ARMADILLO_LIBRARY`; type `FILEPATH`; value `C:/mlpack/armadillo/build/Debug/armadillo.lib` - Name: `BLAS_LIBRARY`; type `FILEPATH`; value `C:/mlpack/mlpack/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a` - Name: `LAPACK_LIBRARY`; type `FILEPATH`; value `C:/mlpack/mlpack/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a` - - If there is an error and Boost is not found, try "Add Entry" with the - following variables and reconfigure: - - Name: `BOOST_INCLUDEDIR`; type `PATH`; value `C:/boost/` - - Name: `BOOST_LIBRARYDIR`; type `PATH`; value `C:/boost/lib64-msvc-14.2` - Once CMake has configured successfully, hit "Generate" to create the `.sln` file. @section build_windows_additional_information Additional Information diff --git a/doc/guide/python_quickstart.hpp b/doc/guide/python_quickstart.hpp index 2f249ea5b5..faf2fe2638 100644 --- a/doc/guide/python_quickstart.hpp +++ b/doc/guide/python_quickstart.hpp @@ -30,7 +30,7 @@ have to install the dependencies (the code below is for Ubuntu), then we can build and install mlpack. You can copy-paste the commands into your shell. @code{.sh} -sudo apt-get install libboost-all-dev g++ cmake libarmadillo-dev python-pip wget +sudo apt-get install g++ cmake libarmadillo-dev python-pip wget sudo pip install cython setuptools distutils numpy pandas wget https://www.mlpack.org/files/mlpack-3.4.2.tar.gz tar -xvzpf mlpack-3.4.2.tar.gz diff --git a/doc/guide/sample_ml_app.hpp b/doc/guide/sample_ml_app.hpp index b8282a9ade..024bb21988 100644 --- a/doc/guide/sample_ml_app.hpp +++ b/doc/guide/sample_ml_app.hpp @@ -27,7 +27,6 @@ mlpack and dependencies in Release Mode). - Right click on the project and select Properties, select the x64 Debug profile - Under C/C++ > General > Additional Include Directories add: @code - - C:\boost\boost_1_71_0\lib\native\include - C:\mlpack\armadillo-9.800.3\include - C:\mlpack\mlpack-3.4.2\build\include @endcode diff --git a/doc/policies/trees.hpp b/doc/policies/trees.hpp index 20564ba77f..36a03e634a 100644 --- a/doc/policies/trees.hpp +++ b/doc/policies/trees.hpp @@ -231,7 +231,7 @@ class ExampleTree template ExampleTree( Archive& ar, - const typename boost::enable_if::type* = 0); + const typename std::enable_if_c::type* = 0); // Release any resources held by the tree. ~ExampleTree(); @@ -477,9 +477,6 @@ a default-constructed metric should be used. The constructor *must* return a valid, fully-constructed, ready-to-use tree that satisfies the definition of *space tree* that was \ref whatistree "given earlier". -It is possible to implement both these constructors as one by using \c -boost::optional. - The third constructor requires the tree to be initializable from a \c cereal archive: @@ -490,7 +487,7 @@ cereal archive: template ExampleTree( Archive& ar, - const typename boost::enable_if::type* = 0); + const typename std::enable_if_c::type* = 0); @endcode This has implications on how the tree must be stored. In this case, the dataset @@ -794,13 +791,6 @@ On the other hand, the specifics of the functionality required for the \c Serialize() function are somewhat more difficult. The \c Serialize() function will be called either when a tree is being saved to disk or loaded from disk. The \c cereal documentation is fairly comprehensive. -when writing a \c Serialize() method for mlpack trees you should use -\c data::CreateNVP() instead of \c BOOST_SERIALIZATION_NVP(). This is because -mlpack classes implement \c Serialize() instead of \c serialize() in order to -conform to the mlpack style guidelines, and making this work requires some -interesting shim code, which is hidden inside of \c data::CreateNVP(). It may -be useful to look at other \c Serialize() methods contained in other mlpack -classes as an example. An important note is that it is very difficult to use references with \c cereal, because \c serialize() may be called at any time during diff --git a/doc/tutorials/ann/ann.txt b/doc/tutorials/ann/ann.txt index a17ed2be97..e3047f0be4 100644 --- a/doc/tutorials/ann/ann.txt +++ b/doc/tutorials/ann/ann.txt @@ -731,11 +731,10 @@ model.Parameters(); which will return the complete model parameters as an armadillo matrix object; however often it is useful to not only have the parameters for the complete network, but the parameters of a specific layer. The parameters for a specific -layer @c x can be accessed via @c boost::visitor: +layer @c x can be accessed via the @c Parameters() member: @code -arma::mat parametersX; -boost::apply_visitor(ParametersVisitor(parametersX), model.Model()[x]); +arma::mat parametersX = model.Model()[x].Parameters(); @endcode In the example above, we get the weights of the second layer. diff --git a/src/mlpack/bindings/R/mlpack/inst/include/mlpack.h.in b/src/mlpack/bindings/R/mlpack/inst/include/mlpack.h.in index 9db76b5c2a..0862610a84 100644 --- a/src/mlpack/bindings/R/mlpack/inst/include/mlpack.h.in +++ b/src/mlpack/bindings/R/mlpack/inst/include/mlpack.h.in @@ -14,9 +14,6 @@ #include -// To suppress Found ‘__assert_fail’, possibly from ‘assert’ (C). -#define BOOST_DISABLE_ASSERTS - // Rcpp has its own stream object which cooperates more nicely with R's i/o // And as of armadillo and mlpack, we can use this stream object as well. #if !defined(ARMA_COUT_STREAM) diff --git a/src/mlpack/bindings/markdown/print_docs.cpp b/src/mlpack/bindings/markdown/print_docs.cpp index 400ea954fe..83d5724ac0 100644 --- a/src/mlpack/bindings/markdown/print_docs.cpp +++ b/src/mlpack/bindings/markdown/print_docs.cpp @@ -12,8 +12,6 @@ #include #include -#include - #include "binding_info.hpp" #include "print_docs.hpp" #include "print_doc_functions.hpp" diff --git a/src/mlpack/methods/ann/layer_names.hpp b/src/mlpack/methods/ann/layer_names.hpp deleted file mode 100644 index 60b7cc4aa1..0000000000 --- a/src/mlpack/methods/ann/layer_names.hpp +++ /dev/null @@ -1,441 +0,0 @@ -/** - * @file methods/ann/layer_names.hpp - * @author Sreenik Seal - * - * Implementation of a class that converts a given ann layer to string format. - * - * mlpack is free software; you may redistribute it and/or modify it under the - * terms of the 3-clause BSD license. You should have received a copy of the - * 3-clause BSD license along with mlpack. If not, see - * http://www.opensource.org/licenses/BSD-3-Clause for more information. - */ - -#include -#include -#include -#include -#include - -/** - * Implementation of a class that returns the string representation of the - * name of the given layer. - */ -class LayerNameVisitor : public boost::static_visitor -{ - public: - //! Create the LayerNameVisitor object. - LayerNameVisitor() - { - } - - /** - * Return the name of the given layer of type AdaptiveMaxPooling as string. - * - * @param * Given layer of type AdaptiveMaxPooling. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::AdaptiveMaxPooling<> * /*layer*/) const - { - return "adaptivemaxpooling"; - } - - /** - * Return the name of the given layer of type AdaptiveMeanPooling as string. - * - * @param * Given layer of type AdaptiveMeanPooling. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::AdaptiveMeanPooling<> * /*layer*/) const - { - return "adaptivemeanpooling"; - } - - /** - * Return the name of the given layer of type AtrousConvolution as a string. - * - * @param * Given layer of type AtrousConvolution. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::AtrousConvolution<>* /*layer*/) const - { - return "atrousconvolution"; - } - - /** - * Return the name of the given layer of type AlphaDropout as a string. - * - * @param * Given layer of type AlphaDropout. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::AlphaDropout<>* /*layer*/) const - { - return "alphadropout"; - } - - /** - * Return the name of the given layer of type BatchNorm as a string. - * - * @param * Given layer of type BatchNorm. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::BatchNorm<>* /*layer*/) const - { - return "batchnorm"; - } - - /** - * Return the name of the given layer of type Constant as a string. - * - * @param * Given layer of type Constant. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::Constant<>* /*layer*/) const - { - return "constant"; - } - - /** - * Return the name of the given layer of type Convolution as a string. - * - * @param * Given layer of type Convolution. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::Convolution<>* /*layer*/) const - { - return "convolution"; - } - - /** - * Return the name of the given layer of type DropConnect as a string. - * - * @param * Given layer of type DropConnect. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::DropConnect<>* /*layer*/) const - { - return "dropconnect"; - } - - /** - * Return the name of the given layer of type Dropout as a string. - * - * @param * Given layer of type Dropout. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::Dropout<>* /*layer*/) const - { - return "dropout"; - } - - /** - * Return the name of the given layer of type FlexibleReLU as a string. - * - * @param * Given layer of type FlexibleReLU. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::FlexibleReLU<>* /*layer*/) const - { - return "flexiblerelu"; - } - - /** - * Return the name of the given layer of type LayerNorm as a string. - * - * @param * Given layer of type LayerNorm. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::LayerNorm<>* /*layer*/) const - { - return "layernorm"; - } - - /** - * Return the name of the given layer of type Linear as a string. - * - * @param * Given layer of type Linear. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::Linear<>* /*layer*/) const - { - return "linear"; - } - - /** - * Return the name of the given layer of type LinearNoBias as a string. - * - * @param * Given layer of type LinearNoBias. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::LinearNoBias<>* /*layer*/) const - { - return "linearnobias"; - } - - /** - * Return the name of the given layer of type NoisyLinear as a string. - * - * @param * Given layer of type NoisyLinear. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::NoisyLinear<>* /*layer*/) const - { - return "noisylinear"; - } - - /** - * Return the name of the given layer of type MaxPooling as a string. - * - * @param * Given layer of type MaxPooling. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::MaxPooling<>* /*layer*/) const - { - return "maxpooling"; - } - - /** - * Return the name of the given layer of type MeanPooling as a string. - * - * @param * Given layer of type MeanPooling. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::MeanPooling<>* /*layer*/) const - { - return "meanpooling"; - } - - /** - * Return the name of the given layer of type LpPooling as a string. - * - * @param * Given layer of type LpPooling. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::LpPooling<>* /*layer*/) const - { - return "lppooling"; - } - - /** - * Return the name of the given layer of type MultiplyConstant as a string. - * - * @param * Given layer of type MultiplyConstant. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::MultiplyConstant<>* /*layer*/) const - { - return "multiplyconstant"; - } - - /** - * Return the name of the given layer of type ReLULayer as a string. - * - * @param * Given layer of type ReLULayer. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::ReLULayer<>* /*layer*/) const - { - return "relu"; - } - - /** - * Return the name of the given layer of type TransposedConvolution as a - * string. - * - * @param * Given layer of type TransposedConvolution. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::TransposedConvolution<>* /*layer*/) const - { - return "transposedconvolution"; - } - - /** - * Return the name of the given layer of type IdentityLayer as a string. - * - * @param * Given layer of type IdentityLayer. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::IdentityLayer<>* /*layer*/) const - { - return "identity"; - } - - /** - * Return the name of the given layer of type TanHLayer as a string. - * - * @param * Given layer of type TanHLayer. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::TanHLayer<>* /*layer*/) const - { - return "tanh"; - } - - /** - * Return the name of the given layer of type ELU as a string. - * - * @param * Given layer of type ELU. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::ELU<>* /*layer*/) const - { - return "elu"; - } - - /** - * Return the name of the given layer of type HardTanH as a string. - * - * @param * Given layer of type HardTanH. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::HardTanH<>* /*layer*/) const - { - return "hardtanh"; - } - - /** - * Return the name of the given layer of type LeakyReLU as a string. - * - * @param * Given layer of type LeakyReLU. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::LeakyReLU<>* /*layer*/) const - { - return "leakyrelu"; - } - - /** - * Return the name of the given layer of type PReLU as a string. - * - * @param * Given layer of type PReLU. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::PReLU<>* /*layer*/) const - { - return "prelu"; - } - - /** - * Return the name of the given layer of type SigmoidLayer as a string. - * - * @param * Given layer of type SigmoidLayer. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::SigmoidLayer<>* /*layer*/) const - { - return "sigmoid"; - } - - /** - * Return the name of the given layer of type LogSoftMax as a string. - * - * @param * Given layer of type LogSoftMax. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::LogSoftMax<>* /*layer*/) const - { - return "logsoftmax"; - } - - /* - * Return the name of the given layer of type LSTM as a string. - * - * @param * Given layer of type LSTM. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::LSTM<>* /*layer*/) const - { - return "lstm"; - } - - /** - * Return the name of the given layer of type CReLU as a string. - * - * @param * Given layer of type CReLU. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::CReLU<>* /*layer*/) const - { - return "crelu"; - } - - /** - * Return the name of the given layer of type Highway as a string. - * - * @param * Given layer of type Highway. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::Highway<>* /*layer*/) const - { - return "highway"; - } - - /** - * Return the name of the given layer of type GRU as a string. - * - * @param * Given layer of type GRU. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::GRU<>* /*layer*/) const - { - return "gru"; - } - - /** - * Return the name of the given layer of type Glimpse as a string. - * - * @param * Given layer of type Glimpse. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::Glimpse<>* /*layer*/) const - { - return "glimpse"; - } - - /** - * Return the name of the given layer of type FastLSTM as a string. - * - * @param * Given layer of type FastLSTM. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::FastLSTM<>* /*layer*/) const - { - return "fastlstm"; - } - - /** - * Return the name of the given layer of type WeightNorm as a string. - * - * @param * Given layer of type WeightNorm. - * @return The string representation of the layer. - */ - std::string LayerString(mlpack::ann::WeightNorm<>* /*layer*/) const - { - return "weightnorm"; - } - - /** - * Return the name of the layer of specified type as a string. - * - * @param * Given layer of any type. - * @return A string declaring that the layer is unsupported. - */ - template - std::string LayerString(T* /*layer*/) const - { - return "unsupported"; - } - - //! Overload function call. - std::string operator()(mlpack::ann::MoreTypes layer) const - { - return layer.apply_visitor(*this); - } - - //! Overload function call. - template - std::string operator()(LayerType* layer) const - { - return LayerString(layer); - } -}; diff --git a/src/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp b/src/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp index ba5c1f7abb..65364deabc 100644 --- a/src/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp +++ b/src/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp @@ -181,8 +181,7 @@ class CategoricalDQN { for (size_t i = 0; i < noisyLayerIndex.size(); ++i) { - boost::get*> - (network.Model()[noisyLayerIndex[i]])->ResetNoise(); + (network.Model()[noisyLayerIndex[i]])->ResetNoise(); } } diff --git a/src/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp b/src/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp index a55e6c34ba..2b54d27619 100644 --- a/src/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp +++ b/src/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp @@ -243,10 +243,8 @@ class DuelingDQN { for (size_t i = 0; i < noisyLayerIndex.size(); i++) { - boost::get*> - (valueNetwork->Model()[noisyLayerIndex[i]])->ResetNoise(); - boost::get*> - (advantageNetwork->Model()[noisyLayerIndex[i]])->ResetNoise(); + (valueNetwork->Model()[noisyLayerIndex[i]])->ResetNoise(); + (advantageNetwork->Model()[noisyLayerIndex[i]])->ResetNoise(); } } diff --git a/src/mlpack/methods/reinforcement_learning/sac_impl.hpp b/src/mlpack/methods/reinforcement_learning/sac_impl.hpp index cae78e95a2..452a6e5b46 100644 --- a/src/mlpack/methods/reinforcement_learning/sac_impl.hpp +++ b/src/mlpack/methods/reinforcement_learning/sac_impl.hpp @@ -223,8 +223,7 @@ void SAC< learningQ2Network.Predict(qInput, Q2); // Get the size of the first hidden layer in the Q network. - size_t hidden1 = boost::get *> - (learningQ1Network.Model()[0])->OutputSize(); + size_t hidden1 = (learningQ1Network.Model()[0])->OutputSize(); arma::mat gradient; for (size_t i = 0; i < sampledStates.n_cols; i++)