From 8bb8ea1bad84b3fcc6ae6e22c3970e4c5b44ad39 Mon Sep 17 00:00:00 2001 From: Utkarsh Rai Date: Sat, 3 Oct 2020 01:22:46 +0530 Subject: [PATCH 01/11] Added Weight Size to concat and fast_lstm layers and renamed parameters to weights in dropconnect. --- src/mlpack/methods/ann/layer/concat.hpp | 14 ++++++++++---- src/mlpack/methods/ann/layer/concat_impl.hpp | 4 ++-- src/mlpack/methods/ann/layer/dropconnect.hpp | 6 +++--- src/mlpack/methods/ann/layer/fast_lstm.hpp | 6 ++++++ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/mlpack/methods/ann/layer/concat.hpp b/src/mlpack/methods/ann/layer/concat.hpp index 30bfe4f3b5..bb0d733651 100644 --- a/src/mlpack/methods/ann/layer/concat.hpp +++ b/src/mlpack/methods/ann/layer/concat.hpp @@ -165,9 +165,9 @@ class Concat } //! Return the initial point for the optimization. - const arma::mat& Parameters() const { return parameters; } + const arma::mat& Parameters() const { return weights; } //! Modify the initial point for the optimization. - arma::mat& Parameters() { return parameters; } + arma::mat& Parameters() { return weights; } //! Get the value of run parameter. bool Run() const { return run; } @@ -196,6 +196,12 @@ class Concat //! Get the axis of concatenation. size_t const& ConcatAxis() const { return axis; } + //! Get the size of the weight matrix. + size_t WeightSize() const + { + return 0; + } + /** * Serialize the layer */ @@ -225,8 +231,8 @@ class Concat //! Locally-stored network modules. std::vector > network; - //! Locally-stored model parameters. - arma::mat parameters; + //! Locally-stored model weights. + OutputDataType weights; //! Locally-stored delta visitor. DeltaVisitor deltaVisitor; diff --git a/src/mlpack/methods/ann/layer/concat_impl.hpp b/src/mlpack/methods/ann/layer/concat_impl.hpp index a75fea8697..62de73a74e 100644 --- a/src/mlpack/methods/ann/layer/concat_impl.hpp +++ b/src/mlpack/methods/ann/layer/concat_impl.hpp @@ -33,7 +33,7 @@ Concat::Concat( run(run), channels(1) { - parameters.set_size(0, 0); + weights.set_size(0, 0); } template::Concat( model(model), run(run) { - parameters.set_size(0, 0); + weights.set_size(0, 0); // Parameters to help calculate the number of channels. size_t oldColSize = 1, newColSize = 1; diff --git a/src/mlpack/methods/ann/layer/dropconnect.hpp b/src/mlpack/methods/ann/layer/dropconnect.hpp index a1411845a4..cf96d6237f 100644 --- a/src/mlpack/methods/ann/layer/dropconnect.hpp +++ b/src/mlpack/methods/ann/layer/dropconnect.hpp @@ -115,9 +115,9 @@ class DropConnect std::vector >& Model() { return network; } //! Get the parameters. - OutputDataType const& Parameters() const { return parameters; } + OutputDataType const& Parameters() const { return weights; } //! Modify the parameters. - OutputDataType& Parameters() { return parameters; } + OutputDataType& Parameters() { return weights; } //! Get the output parameter. OutputDataType const& OutputParameter() const { return outputParameter; } @@ -164,7 +164,7 @@ class DropConnect double scale; //! Locally-stored weight object. - OutputDataType parameters; + OutputDataType weights; //! Locally-stored delta object. OutputDataType delta; diff --git a/src/mlpack/methods/ann/layer/fast_lstm.hpp b/src/mlpack/methods/ann/layer/fast_lstm.hpp index b934c0c5ea..eb5d2ef855 100644 --- a/src/mlpack/methods/ann/layer/fast_lstm.hpp +++ b/src/mlpack/methods/ann/layer/fast_lstm.hpp @@ -164,6 +164,12 @@ class FastLSTM //! Get the number of output units. size_t OutSize() const { return outSize; } + //! Get the size of the weight matrix. + size_t WeightSize() const + { + return 4 * outSize * inSize + 4 * outSize + 4 * outSize * outSize; + } + /** * Serialize the layer */ From 7ef7ec02a5faaca5452d7df2a05cb769fcb0d24e Mon Sep 17 00:00:00 2001 From: Utkarsh Rai Date: Fri, 9 Oct 2020 10:53:12 +0530 Subject: [PATCH 02/11] Replaced the expression with WeightSize().) Added tests. --- src/mlpack/methods/ann/layer/add_impl.hpp | 2 +- .../ann/layer/atrous_convolution_impl.hpp | 3 +- src/mlpack/methods/ann/layer/concat.hpp | 5 +- .../methods/ann/layer/fast_lstm_impl.hpp | 3 +- src/mlpack/methods/ann/layer/linear_impl.hpp | 2 +- src/mlpack/tests/ann_visitor_test.cpp | 75 +++++++++++++++++-- 6 files changed, 73 insertions(+), 17 deletions(-) diff --git a/src/mlpack/methods/ann/layer/add_impl.hpp b/src/mlpack/methods/ann/layer/add_impl.hpp index 79f2a4386f..4fc8f42d0b 100644 --- a/src/mlpack/methods/ann/layer/add_impl.hpp +++ b/src/mlpack/methods/ann/layer/add_impl.hpp @@ -23,7 +23,7 @@ template Add::Add(const size_t outSize) : outSize(outSize) { - weights.set_size(outSize, 1); + weights.set_size(WeightSize(), 1); } template diff --git a/src/mlpack/methods/ann/layer/atrous_convolution_impl.hpp b/src/mlpack/methods/ann/layer/atrous_convolution_impl.hpp index 3536690037..7d6534a18e 100644 --- a/src/mlpack/methods/ann/layer/atrous_convolution_impl.hpp +++ b/src/mlpack/methods/ann/layer/atrous_convolution_impl.hpp @@ -122,8 +122,7 @@ AtrousConvolution< dilationWidth(dilationWidth), dilationHeight(dilationHeight) { - weights.set_size((outSize * inSize * kernelWidth * kernelHeight) + outSize, - 1); + weights.set_size(WeightSize(), 1); // Transform paddingType to lowercase. std::string paddingTypeLow = paddingType; diff --git a/src/mlpack/methods/ann/layer/concat.hpp b/src/mlpack/methods/ann/layer/concat.hpp index bb0d733651..c6e5937167 100644 --- a/src/mlpack/methods/ann/layer/concat.hpp +++ b/src/mlpack/methods/ann/layer/concat.hpp @@ -197,10 +197,7 @@ class Concat size_t const& ConcatAxis() const { return axis; } //! Get the size of the weight matrix. - size_t WeightSize() const - { - return 0; - } + size_t WeightSize() const { return 0; } /** * Serialize the layer diff --git a/src/mlpack/methods/ann/layer/fast_lstm_impl.hpp b/src/mlpack/methods/ann/layer/fast_lstm_impl.hpp index 24b3544fd1..b350a704b3 100644 --- a/src/mlpack/methods/ann/layer/fast_lstm_impl.hpp +++ b/src/mlpack/methods/ann/layer/fast_lstm_impl.hpp @@ -42,8 +42,7 @@ FastLSTM::FastLSTM( { // Weights for: input to gate layer (4 * outsize * inSize + 4 * outsize) // and output to gate (4 * outSize). - weights.set_size( - 4 * outSize * inSize + 4 * outSize + 4 * outSize * outSize, 1); + weights.set_size(WeightSize(), 1); } template diff --git a/src/mlpack/methods/ann/layer/linear_impl.hpp b/src/mlpack/methods/ann/layer/linear_impl.hpp index 79799fea98..875147f7b7 100644 --- a/src/mlpack/methods/ann/layer/linear_impl.hpp +++ b/src/mlpack/methods/ann/layer/linear_impl.hpp @@ -38,7 +38,7 @@ Linear::Linear( outSize(outSize), regularizer(regularizer) { - weights.set_size(outSize * inSize + outSize, 1); + weights.set_size(WeightSize(), 1); } template linear = new Linear<>(randomSize, randomSize); + LayerTypes<> linearLayer = new Linear<>(randomInSize, randomOutSize); - size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), - linear); + size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), linearLayer); - REQUIRE(weightSize == randomSize * randomSize + randomSize); + REQUIRE(weightSize == randomInSize * randomOutSize + randomOutSize); } +/** + * Test that WeightSizeVisitor works properly for concat layer. + */ +TEST_CASE("WeightSizeVisitorTestForConcatLayer", "[ANNVisitorTest]") +{ + LayerTypes<> concatLayer = new Concat<>(); + + size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), concatLayer); + + REQUIRE(weightSize == 0); +} + +/** + * Test that WeightSizeVisitor works properly for fast lstm layer. + */ +TEST_CASE("WeightSizeVisitorTestForFastLSTMLayer", "[ANNVisitorTest]") +{ + size_t randomInSize = arma::randi(arma::distr_param(1, 100)); + size_t randomOutSize = arma::randi(arma::distr_param(1, 100)); + + LayerTypes<> fastLSTMLayer = new FastLSTM<>(randomInSize, randomOutSize); + + size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), fastLSTMLayer); + + REQUIRE(weightSize == 4 * randomInSize * randomOutSize + 4 * randomOutSize + + 4 * randomOutSize * randomOutSize); +} + +/** + * Test that WeightSizeVisitor works properly for Add layer. + */ +TEST_CASE("WeightSizeVisitorTestForAddLayer", "[ANNVisitorTest]") +{ + size_t randomOutSize = arma::randi(arma::distr_param(1, 100)); + + LayerTypes<> addLayer = new Add<>(randomOutSize); + + size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), addLayer); + + REQUIRE(weightSize == randomOutSize); +} + +/** + * Test that WeightSizeVisitor works properly for Atrous Convolution Layer. + */ +TEST_CASE("WeightSizeVisitorTestForAtrousConvolutionLayer", "[ANNVisitorTest]") +{ + size_t randomInSize = arma::randi(arma::distr_param(1, 100)); + size_t randomOutSize = arma::randi(arma::distr_param(1, 100)); + size_t randomKernelWidth = arma::randi(arma::distr_param(1, 100)); + size_t randomKernelHeight = arma::randi(arma::distr_param(1, 100)); + + LayerTypes<> atrousConvLayer = new AtrousConvolution<>(randomInSize, randomOutSize, + randomKernelWidth, randomKernelHeight); + + size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), + atrousConvLayer); + + REQUIRE(weightSize == randomOutSize * randomInSize * randomKernelWidth + * randomKernelHeight + randomOutSize); +} From 8f9685a06a81f60fd0c11964af33e1641e05d126 Mon Sep 17 00:00:00 2001 From: Utkarsh Rai Date: Mon, 12 Oct 2020 10:35:14 +0530 Subject: [PATCH 03/11] WeightSize() for dropconnect. --- src/mlpack/methods/ann/layer/dropconnect.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mlpack/methods/ann/layer/dropconnect.hpp b/src/mlpack/methods/ann/layer/dropconnect.hpp index cf96d6237f..2b07cfed8f 100644 --- a/src/mlpack/methods/ann/layer/dropconnect.hpp +++ b/src/mlpack/methods/ann/layer/dropconnect.hpp @@ -150,6 +150,9 @@ class DropConnect scale = 1.0 / (1.0 - ratio); } + //! Return the size of the weight matrix. + size_t WeightSize() const { return 0; } + /** * Serialize the layer. */ From 8b3b5522494e9de1f4b01613c0351ef928ecebf5 Mon Sep 17 00:00:00 2001 From: Utkarsh Rai Date: Tue, 13 Oct 2020 12:26:10 +0530 Subject: [PATCH 04/11] Indentation fix. --- src/mlpack/tests/ann_visitor_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mlpack/tests/ann_visitor_test.cpp b/src/mlpack/tests/ann_visitor_test.cpp index 3849e85740..b8690e6bd6 100644 --- a/src/mlpack/tests/ann_visitor_test.cpp +++ b/src/mlpack/tests/ann_visitor_test.cpp @@ -142,7 +142,7 @@ TEST_CASE("WeightSizeVisitorTestForAtrousConvolutionLayer", "[ANNVisitorTest]") randomKernelWidth, randomKernelHeight); size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), - atrousConvLayer); + atrousConvLayer); REQUIRE(weightSize == randomOutSize * randomInSize * randomKernelWidth * randomKernelHeight + randomOutSize); From 95c1707762dc67fb2ae934073437cad4958e054a Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 28 Oct 2020 12:33:46 -0400 Subject: [PATCH 05/11] Add release scripts. --- scripts/release-mlpack.sh | 221 ++++++++++++++++++++++++ scripts/update-website-after-release.sh | 64 +++++++ 2 files changed, 285 insertions(+) create mode 100755 scripts/release-mlpack.sh create mode 100755 scripts/update-website-after-release.sh diff --git a/scripts/release-mlpack.sh b/scripts/release-mlpack.sh new file mode 100755 index 0000000000..5452a17753 --- /dev/null +++ b/scripts/release-mlpack.sh @@ -0,0 +1,221 @@ +#!/bin/bash +# +# Release a new version of mlpack. +# +# Usage: release-mlpack.sh X Y Z +# +# where X is the major version, Y is the minor version, and Z is the patch +# version. Run this from the root of the repository. +# +# Make sure HISTORY.md is updated first! +set +e + +if [ "$#" -ne "4" ]; +then + echo "Usage: mlpack-release.sh "; + exit 1; +fi + +# First, check for any unlicensed files. +output=$( + for i in $(find src/ -iname '*.[hc]pp'); + do + echo -n $i": "; + cat $i | grep 'mlpack is free software;' | wc -l; + done |\ + grep -v ': 1' |\ + grep -v 'arma_extend' |\ + grep -v 'boost_backport' |\ + grep -v 'arma_config.hpp' |\ + grep -v 'gitversion.hpp' |\ + grep -v 'CLI11.hpp' |\ + grep -v 'bindings/R/mlpack/src/boost/serialization' |\ + grep -v 'tests/catch.hpp'); +lines=`echo $output | grep -v '^[ ]*$' | wc -l`; + +if [ "0$lines" -gt "0" ]; +then + echo "Unlicensed files found! Aborting release."; + echo "$output"; + exit 1; +fi + +# Now, check that there are no local changes. +lines=`git diff | wc -l | sed -e 's/^\s*//g'`; +if [ "$lines" != "0" ]; then + echo "git diff returned a nonzero result!"; + echo ""; + git diff; + exit 1; +fi + +# Next, make sure the origin is right. +dest_remote_name=`git remote -v |\ + grep "mlpack/mlpack (fetch)" |\ + head -1 |\ + awk -F' ' '{ print $1 }'`; + +if [ "a$dest_remote_name" == "a" ]; then + echo "No git remote found for https://github.com/mlpack/mlpack!"; + echo "Make sure that you've got the ensmallen repository as a remote, and" \ + "that the master branch from that remote is checked out."; + echo "You can do this with a fresh repository via \`git clone" \ + "https://github.com/mlpack/mlpack\`."; + exit 1; +fi + +# Also check that we're on the master branch, from the correct origin. +current_branch=`git branch --no-color | grep '^\* ' | awk -F' ' '{ print $2 }'`; +current_origin=`git rev-parse --abbrev-ref --symbolic-full-name @{u} |\ + awk -F'/' '{ print $1 }'`; +if [ "a$current_branch" != "amaster" ]; then + echo "Current branch is $current_branch."; + echo "This script has to be run from the master branch."; + exit 1; +elif [ "a$current_origin" != "a$dest_remote_name" ]; then + echo "Current branch does not track from remote mlpack repository!"; + echo "Instead, it tracks from $current_origin/master."; + echo "Make sure to check out a branch that tracks $dest_remote_name/master."; + exit 1; +fi + +# Make sure `hub` is installed. +hub_output="`which hub`" || true; +if [ "a$hub_output" == "a" ]; then + echo "The Hub command-line tool must be installed for this script to run" \ + "successfully."; + echo "See https://hub.github.com for more details and installation" \ + "instructions."; + echo ""; + echo "(apt-get install hub on Debian and Ubuntu)"; + echo "(brew install hub via Homebrew)"; + exit 1; +fi + +# Check git remotes: we need to make sure we have a fork to push to. +github_user=$1; +remote_name`git remote -v |\ + grep "$github_user/mlpack (push)" |\ + head -1 |\ + awk -F' ' '{ print $1 }'`; +if [ "a$remote_name" == "a" ]; then + echo "No git remote found for $github_user/mlpack!"; + echo "Adding remote '$github_user'."; + git remote add $github_user https://github.com/$github_user/mlpack; + remote_name="$github_user"; +fi +git fetch $github_user; + +# Make sure everything is up to date. +git pull; + +# Make updates to files that will be needed for the release. +MAJOR="$2"; +MINOR="$3"; +PATCH="$4"; + +# Update version. +sed --in-place -E 's/PROJECT_NUMBER([ \t]*)= .*$/PROJECT_NUMBER\1= '$MAJOR'.'$MINOR'.'$PATCH'/' \ + Doxyfile; +sed --in-place 's/MLPACK_VERSION_MAJOR [0-9]*$/MLPACK_VERSION_MAJOR '$MAJOR'/' \ + src/mlpack/core/util/version.hpp; +sed --in-place 's/MLPACK_VERSION_MINOR [0-9]*$/MLPACK_VERSION_MINOR '$MINOR'/' \ + src/mlpack/core/util/version.hpp; +sed --in-place 's/MLPACK_VERSION_PATCH [0-9]*$/MLPACK_VERSION_PATCH '$PATCH'/' \ + src/mlpack/core/util/version.hpp; +sed --in-place 's/ VERSION [0-9]*\.[0-9]*/ VERSION '$MAJOR'.'$MINOR'/' \ + src/mlpack/CMakeLists.txt; + +sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g' \ + doc/guide/build.hpp; +sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g' \ + doc/guide/python_quickstart.hpp; +sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g' \ + doc/guide/sample_ml_app.hpp; +sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g' \ + doc/examples/sample-ml-app/sample-ml-app/sample-ml-app.vcxproj; + +sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g' \ + README.md; +sed --in-place 's/([0-9]\.[0-9]\.[0-9])/('$MAJOR'.'$MINOR'.'$PATCH')/g' \ + README.md; +sed --in-place 's/mlpack [0-9]\.[0-9]\.[0-9]/mlpack '$MAJOR'.'$MINOR'.'$PATCH'/g' \ + README.md; + +sed --in-place 's/### mlpack ?[.]?[.]?/### mlpack '$MAJOR'.'$MINOR'.'$PATCH'/g' HISTORY.md; +year=`date +%Y`; +month=`date +%m`; +day=`date +%d`; +sed --in-place 's/###### ????-??-??/###### '$year'-'$month'-'$day'/g' \ + HISTORY.md; + +# Get the latest release of ensmallen. +git clone https://github.com/mlpack/ensmallen /tmp/ensmallen; +cd /tmp/ensmallen; +ens_ver=`git describe --tags $(git rev-list --tags --max-count=1)`; +echo "Latest version of ensmallen: $ens_ver" +cd -; +sed --in-place "s/ensmallen-latest.tar.gz/ensmallen-$ens_ver.tar.gz/" CMakeLists.txt; +rm -rf /tmp/ensmallen; + +# Make these changes on a release branch. +git checkout -b release-$MAJOR.$MINOR.$PATCH; + +git add Doxyfile src/mlpack/core/util/version.hpp src/mlpack/CMakeLists.txt \ + doc/guide/build.hpp doc/guide/python_quickstart.hpp \ + doc/guide/sample_ml_app.hpp \ + doc/examples/sample-ml-app/sample-ml-app/sample-ml-app.vcxproj \ + CMakeLists.txt \ + README.md \ + HISTORY.md; + +git commit -m "Update and release version $MAJOR.$MINOR.$PATCH."; + +changelog_str=`cat HISTORY.md |\ + awk '/^### /{f=0} /^### mlpack '"$MAJOR"'.'"$MINOR"'.'"$PATCH"'/{f=1} f{print}' |\ + grep -v '^#' |\ + tr '\n' '!' |\ + sed -e 's/! [ ]*/ /g' |\ + tr '!' '\n'`; +echo "Changelog string:" +echo "$changelog_str" + +# Update version again and add a new block for HISTORY.md. +sed --in-place 's/MLPACK_VERSION_PATCH [0-9]*$/MLPACK_VERSION_PATCH '$(($PATCH + 1))'/' \ + src/mlpack/core/util/version.hpp; +sed --in-place 's/ensmallen-'$ens_ver'.tar.gz/ensmallen-latest.tar.gz/' CMakeLists.txt; + +echo "### mlpack ?.?.?" > HISTORY.md.new; +echo "###### ????-??-??" >> HISTORY.md.new; +echo "" >> HISTORY.md.new; +cat HISTORY.md >> HISTORY.md.new; +mv HISTORY.md.new HISTORY.md; + +git add HISTORY.md; +git add src/mlpack/core/util/version.hpp CMakeLists.txt; + +git commit -m "Add new block for next release to HISTORY.md."; + +# Push to new branch. +git push --set-upstream $github_user release-$MAJOR.$MINOR.$PATCH; + +# Next, we have to actually open the PR for the release. +hub pull-request \ + -b mlpack:master \ + -h $github_user:release-$MAJOR.$MINOR.$PATCH \ + -m "Release version $MAJOR.$MINOR.$PATCH" \ + -m "This automatically-generated pull request adds the commits necessary to +make the $MAJOR.$MINOR.$PATCH release." \ + -m "Once the PR is merged, mlpack-bot will tag the release as HEAD~1 (so +that it doesn't include the new HISTORY block) and publish it." \ + -m "Or, well, hopefully that will happen someday." \ + -m "When you merge this PR, be sure to merge it using a *rebase*." \ + -m "### Changelog" \ + -m "$changelog_str" \ + -l "t: release" + +echo ""; +echo "Switching back to 'master' branch."; +echo "If you want to access the release branch again, use \`git checkout " \ + "release-$MAJOR.$MINOR.$PATCH\`."; +echo 0; diff --git a/scripts/update-website-after-release.sh b/scripts/update-website-after-release.sh new file mode 100755 index 0000000000..67adb18614 --- /dev/null +++ b/scripts/update-website-after-release.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# +# This script is used to update the website after an mlpack release is made. +# Push access to the mlpack.org website repository is needed. Generally, this +# script will be run by mlpack-bot, so it never needs to be run by hand. +# +# Usage: update-website-after-release.sh + +MAJOR=$1; +MINOR=$2; +PATCH=$3; + +# Make sure that the mlpack repository exists. +dest_remote_name=`git remote -v |\ + grep "mlpack/mlpack (fetch)" |\ + head -1 |\ + awk -F' ' '{ print $1 }'`; + +if [ "a$dest_remote_name" == "a" ]; then + echo "No git remote found for mlpack/mlpack!"; + echo "Make sure that you've got the mlpack repository as a remote, and" \ + "that the master branch from that remote is checked out."; + echo "You can do this with a fresh repository via \`git clone" \ + "https://github.com/mlpack/mlpack\`."; + exit 1; +fi + +# Update the checked out repository, so that we can get the tags. +git fetch $dest_remote_name; + +# Check out a copy of the ensmallen.org repository. +git clone git@github.com:mlpack/mlpack.org /tmp/mlpack.org/; + +# Create the release file. +git archive --prefix=mlpack-$MAJOR.$MINOR.$PATCH/ $MAJOR.$MINOR.$PATCH |\ + gzip > /tmp/mlpack.org/files/mlpack-$MAJOR.$MINOR.$PATCH.tar.gz; + +# Now update the website. +wd=`pwd`; +cd /tmp/mlpack.org/; + +# These may be specific to the old website. +sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' index.md; +sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' docs.md; +sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' getstarted.md; +sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' community.md; +git add index.md docs.md getstarted.md community.md; + +# These may be specific to the new website. +sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g' html/index.html; +sed --in-place 's/Version [0-9]\.[0-9]\.[0-9]/Version '$MAJOR'.'$MINOR'.'$PATCH'/g' html/index.html; +sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' html/getstarted.html; +sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' html/config/install.md; + +git commit -m "Update links to latest stable version." + +git add files/mlpack-$MAJOR.$MINOR.$PATCH.tar.gz; +git commit -m "Release version $MAJOR.$MINOR.$PATCH."; + +# Finally, push, and we're done. +git push origin; +cd $wd; + +rm -rf /tmp/mlpack.org; From eafc1c02eb872b59dcb5a51e9f4653711e374ff9 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 28 Oct 2020 12:41:17 -0400 Subject: [PATCH 06/11] Update scripts/release-mlpack.sh Co-authored-by: Marcus Edel --- scripts/release-mlpack.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release-mlpack.sh b/scripts/release-mlpack.sh index 5452a17753..5997ace895 100755 --- a/scripts/release-mlpack.sh +++ b/scripts/release-mlpack.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Release a new version of mlpack. # From a173012e975edf675b330e023371c43fdf89e8fe Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 28 Oct 2020 12:41:24 -0400 Subject: [PATCH 07/11] Update scripts/update-website-after-release.sh Co-authored-by: Marcus Edel --- scripts/update-website-after-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-website-after-release.sh b/scripts/update-website-after-release.sh index 67adb18614..fa3f840ca0 100755 --- a/scripts/update-website-after-release.sh +++ b/scripts/update-website-after-release.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # This script is used to update the website after an mlpack release is made. # Push access to the mlpack.org website repository is needed. Generally, this From c6f666925bcfc445dcf9c706536d6fe8df21c6f7 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 28 Oct 2020 13:27:37 -0400 Subject: [PATCH 08/11] Add a couple missing files. --- scripts/update-website-after-release.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/update-website-after-release.sh b/scripts/update-website-after-release.sh index fa3f840ca0..e80ad8694f 100755 --- a/scripts/update-website-after-release.sh +++ b/scripts/update-website-after-release.sh @@ -51,8 +51,9 @@ sed --in-place 's/mlpack-[0-9]\.[0-9]\.[0-9]/mlpack-'$MAJOR'.'$MINOR'.'$PATCH'/g sed --in-place 's/Version [0-9]\.[0-9]\.[0-9]/Version '$MAJOR'.'$MINOR'.'$PATCH'/g' html/index.html; sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' html/getstarted.html; sed --in-place 's/[0-9]\.[0-9]\.[0-9]/'$MAJOR'.'$MINOR'.'$PATCH'/g' html/config/install.md; +git add html/index.html html/getstarted.html html/config/install.md; -git commit -m "Update links to latest stable version." +git commit -m "Update links to latest stable version."; git add files/mlpack-$MAJOR.$MINOR.$PATCH.tar.gz; git commit -m "Release version $MAJOR.$MINOR.$PATCH."; From 71555f2946638ce6c45ea448ba50b0f4b12b43d6 Mon Sep 17 00:00:00 2001 From: Marcus Edel Date: Sun, 1 Nov 2020 13:45:17 +0100 Subject: [PATCH 09/11] Style fixes (line length, whitespace/end_of_line, whitespace comments). --- src/mlpack/bindings/markdown/print_docs.cpp | 2 +- src/mlpack/core/cereal/array_wrapper.hpp | 4 +- src/mlpack/core/cereal/is_loading.hpp | 15 +++---- src/mlpack/core/cereal/is_saving.hpp | 15 +++---- src/mlpack/core/data/has_serialize.hpp | 7 +++- src/mlpack/core/metrics/bleu_impl.hpp | 2 +- .../binary_space_tree_impl.hpp | 2 +- src/mlpack/methods/ann/layer/fast_lstm.hpp | 2 +- src/mlpack/methods/ann/layer/linear_impl.hpp | 4 +- src/mlpack/methods/ann/layer/softmin_impl.hpp | 4 +- .../mean_absolute_percentage_error_impl.hpp | 4 +- .../bayesian_linear_regression_impl.hpp | 3 +- src/mlpack/methods/hmm/hmm_util_impl.hpp | 17 ++++++-- .../tests/activation_functions_test.cpp | 2 +- src/mlpack/tests/ann_visitor_test.cpp | 8 ++-- src/mlpack/tests/distribution_test.cpp | 3 +- src/mlpack/tests/hoeffding_tree_test.cpp | 30 ++++++++----- src/mlpack/tests/io_test.cpp | 3 +- src/mlpack/tests/lin_alg_test.cpp | 1 - src/mlpack/tests/loss_functions_test.cpp | 10 +++-- src/mlpack/tests/nbc_test.cpp | 2 +- src/mlpack/tests/pca_test.cpp | 3 +- src/mlpack/tests/range_search_test.cpp | 42 ++++++++++++------- src/mlpack/tests/rl_components_test.cpp | 3 +- src/mlpack/tests/sort_policy_test.cpp | 4 +- src/mlpack/tests/string_encoding_test.cpp | 40 +++++++++++------- 26 files changed, 144 insertions(+), 88 deletions(-) diff --git a/src/mlpack/bindings/markdown/print_docs.cpp b/src/mlpack/bindings/markdown/print_docs.cpp index 10805e8209..45b9807afa 100644 --- a/src/mlpack/bindings/markdown/print_docs.cpp +++ b/src/mlpack/bindings/markdown/print_docs.cpp @@ -180,7 +180,7 @@ void PrintDocs(const std::string& bindingName, } if (hasOutputOptions) - { + { // Next, iterate through the list of output options. cout << "### Output options" << endl; cout << endl; diff --git a/src/mlpack/core/cereal/array_wrapper.hpp b/src/mlpack/core/cereal/array_wrapper.hpp index 05a675277f..c696f5b727 100644 --- a/src/mlpack/core/cereal/array_wrapper.hpp +++ b/src/mlpack/core/cereal/array_wrapper.hpp @@ -21,7 +21,7 @@ namespace cereal { -/** +/** * This class is used as a shim for cereal to be able to serialize a raw pointer array. */ template @@ -84,7 +84,7 @@ ArrayWrapper make_array(T*& t, S& s) * @param T C Style array. * @param S Size of the array. */ -#define CEREAL_POINTER_ARRAY(T,S) cereal::make_array(T, S) +#define CEREAL_POINTER_ARRAY(T, S) cereal::make_array(T, S) } // namespace cereal diff --git a/src/mlpack/core/cereal/is_loading.hpp b/src/mlpack/core/cereal/is_loading.hpp index d075c3d303..085358b2f4 100644 --- a/src/mlpack/core/cereal/is_loading.hpp +++ b/src/mlpack/core/cereal/is_loading.hpp @@ -5,7 +5,7 @@ * Implementation of is_loading function. * * This implementation provides backward compatibilty with older - * version of cereal that does not have Archive::is_loading struct. + * version of cereal that does not have Archive::is_loading struct. * * 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 @@ -28,11 +28,12 @@ struct is_cereal_archive { // Archive::is_loading is not implemented yet, so we can use std::is_same<> // to check if it is a loading archive. - constexpr static bool value = std::is_same::value || -//#if (BINDING_TYPE != BINDING_TYPE_R) - std::is_same::value || -//#endif - std::is_same::value; + constexpr static bool value = std::is_same::value || +// #if (BINDING_TYPE != BINDING_TYPE_R) + std::is_same::value || +// #endif + std::is_same::value; }; template @@ -40,7 +41,7 @@ bool is_loading( const typename std::enable_if< is_cereal_archive::value, Archive>::type* = 0) { - return true; + return true; } template diff --git a/src/mlpack/core/cereal/is_saving.hpp b/src/mlpack/core/cereal/is_saving.hpp index 147668853f..e54362913f 100644 --- a/src/mlpack/core/cereal/is_saving.hpp +++ b/src/mlpack/core/cereal/is_saving.hpp @@ -6,7 +6,7 @@ * Implementation of is_saving function. * * This implementation provides backward compatibilty with older - * version of cereal that does not have Archive::is_saving struct. + * version of cereal that does not have Archive::is_saving struct. * * 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 @@ -29,11 +29,12 @@ struct is_cereal_archive_saving { // Archive::is_saving is not implemented yet, so we can use std::is_same<> // to check if it is a loading archive. - constexpr static bool value = std::is_same::value || -//#if (BINDING_TYPE != BINDING_TYPE_R) - std::is_same::value || -//#endif - std::is_same::value; + constexpr static bool value = std::is_same::value || +// #if (BINDING_TYPE != BINDING_TYPE_R) + std::is_same::value || +// #endif + std::is_same::value; }; template @@ -41,7 +42,7 @@ bool is_saving( const typename std::enable_if< is_cereal_archive_saving::value, Archive>::type* = 0) { - return true; + return true; } template diff --git a/src/mlpack/core/data/has_serialize.hpp b/src/mlpack/core/data/has_serialize.hpp index 0c3b92c73b..7c2c3d114a 100644 --- a/src/mlpack/core/data/has_serialize.hpp +++ b/src/mlpack/core/data/has_serialize.hpp @@ -32,9 +32,12 @@ template struct HasSerializeFunction { template - using NonStaticSerialize = void(C::*)(cereal::XMLOutputArchive&, const uint32_t version); + using NonStaticSerialize = void(C::*)(cereal::XMLOutputArchive&, + const uint32_t version); + template - using StaticSerialize = void(*)(cereal::XMLOutputArchive&, const uint32_t version); + using StaticSerialize = void(*)(cereal::XMLOutputArchive&, + const uint32_t version); static const bool value = HasSerializeCheck::value || HasSerializeCheck::value; diff --git a/src/mlpack/core/metrics/bleu_impl.hpp b/src/mlpack/core/metrics/bleu_impl.hpp index 66fdd626a5..38e9b29437 100644 --- a/src/mlpack/core/metrics/bleu_impl.hpp +++ b/src/mlpack/core/metrics/bleu_impl.hpp @@ -187,7 +187,7 @@ ElemType BLEU::Evaluate( template template -void BLEU::serialize(Archive& ar, +void BLEU::serialize(Archive& ar, const uint32_t version) { ar(CEREAL_NVP(maxOrder)); diff --git a/src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp b/src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp index cc1b86be18..6e2a934004 100644 --- a/src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp +++ b/src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp @@ -1131,7 +1131,7 @@ void BinarySpaceTree:: if (node->left) stack.push(node->left); if (node->right) - stack.push(node->right); + stack.push(node->right); } } } diff --git a/src/mlpack/methods/ann/layer/fast_lstm.hpp b/src/mlpack/methods/ann/layer/fast_lstm.hpp index 957c64e670..121c97e176 100644 --- a/src/mlpack/methods/ann/layer/fast_lstm.hpp +++ b/src/mlpack/methods/ann/layer/fast_lstm.hpp @@ -165,7 +165,7 @@ class FastLSTM size_t OutSize() const { return outSize; } //! Get the size of the weight matrix. - size_t WeightSize() const + size_t WeightSize() const { return 4 * outSize * inSize + 4 * outSize + 4 * outSize * outSize; } diff --git a/src/mlpack/methods/ann/layer/linear_impl.hpp b/src/mlpack/methods/ann/layer/linear_impl.hpp index 183597d4a7..2edfb4802c 100644 --- a/src/mlpack/methods/ann/layer/linear_impl.hpp +++ b/src/mlpack/methods/ann/layer/linear_impl.hpp @@ -70,7 +70,7 @@ template& Linear:: operator=(const Linear& layer) -{ +{ if (this != &layer) { inSize = layer.inSize; @@ -86,7 +86,7 @@ template& Linear:: operator=(Linear&& layer) -{ +{ if (this != &layer) { inSize = layer.inSize; diff --git a/src/mlpack/methods/ann/layer/softmin_impl.hpp b/src/mlpack/methods/ann/layer/softmin_impl.hpp index e2389f5856..6945256b44 100644 --- a/src/mlpack/methods/ann/layer/softmin_impl.hpp +++ b/src/mlpack/methods/ann/layer/softmin_impl.hpp @@ -29,7 +29,7 @@ template void Softmin::Forward( const InputType& input, OutputType& output) -{ +{ InputType softminInput = arma::exp(-(input.each_row() - arma::min(input, 0))); output = softminInput.each_row() / sum(softminInput, 0); @@ -53,7 +53,7 @@ void Softmin::serialize( { // Nothing to do here. } - + } // namespace ann } // namespace mlpack diff --git a/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp b/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp index c17badf733..82f054e2b9 100644 --- a/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp +++ b/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp @@ -32,7 +32,7 @@ MeanAbsolutePercentageError::Forward( const InputType& input, const TargetType& target) { - InputType loss = arma::abs((input - target) / target); + InputType loss = arma::abs((input - target) / target); return arma::accu(loss) * (100 / target.n_cols); } @@ -43,7 +43,7 @@ void MeanAbsolutePercentageError::Backward( const TargetType& target, OutputType& output) -{ +{ output = (((arma::conv_to::from(input < target) * -2) + 1) / target) * (100 / target.n_cols) ; } diff --git a/src/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_impl.hpp b/src/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_impl.hpp index 8842cc82e5..d0881dd06a 100644 --- a/src/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_impl.hpp +++ b/src/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_impl.hpp @@ -21,7 +21,8 @@ namespace regression { * Serialize the Bayesian linear regression model. */ template -void BayesianLinearRegression::serialize(Archive& ar, const uint32_t /* version */) +void BayesianLinearRegression::serialize(Archive& ar, + const uint32_t /* version */) { ar(CEREAL_NVP(centerData)); ar(CEREAL_NVP(scaleData)); diff --git a/src/mlpack/methods/hmm/hmm_util_impl.hpp b/src/mlpack/methods/hmm/hmm_util_impl.hpp index 24ee4adc6b..017cc65bcd 100644 --- a/src/mlpack/methods/hmm/hmm_util_impl.hpp +++ b/src/mlpack/methods/hmm/hmm_util_impl.hpp @@ -41,14 +41,25 @@ void LoadHMMAndPerformAction(const std::string& modelFile, { const std::string extension = data::Extension(modelFile); if (extension == "xml") - LoadHMMAndPerformActionHelper(modelFile, x); + { + LoadHMMAndPerformActionHelper( + modelFile, x); + } else if (extension == "bin") - LoadHMMAndPerformActionHelper(modelFile, x); + { + LoadHMMAndPerformActionHelper( + modelFile, x); + } else if (extension == "json") - LoadHMMAndPerformActionHelper(modelFile, x); + { + LoadHMMAndPerformActionHelper( + modelFile, x); + } else + { Log::Fatal << "Unknown extension '" << extension << "' for HMM model file " << "(known: 'xml', 'json', 'bin')." << std::endl; + } } template concatLayer = new Concat<>(); - + size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), concatLayer); CheckCorrectnessOfWeightSize(concatLayer); @@ -151,12 +151,12 @@ TEST_CASE("WeightSizeVisitorTestForAtrousConvolutionLayer", "[ANNVisitorTest]") size_t randomKernelWidth = arma::randi(arma::distr_param(1, 100)); size_t randomKernelHeight = arma::randi(arma::distr_param(1, 100)); - LayerTypes<> atrousConvLayer = new AtrousConvolution<>(randomInSize, randomOutSize, - randomKernelWidth, randomKernelHeight); + LayerTypes<> atrousConvLayer = new AtrousConvolution<>(randomInSize, + randomOutSize, randomKernelWidth, randomKernelHeight); size_t weightSize = boost::apply_visitor(WeightSizeVisitor(), atrousConvLayer); - + CheckCorrectnessOfWeightSize(atrousConvLayer); } diff --git a/src/mlpack/tests/distribution_test.cpp b/src/mlpack/tests/distribution_test.cpp index 0ec7fd3cb6..7346098d43 100644 --- a/src/mlpack/tests/distribution_test.cpp +++ b/src/mlpack/tests/distribution_test.cpp @@ -1518,7 +1518,8 @@ TEST_CASE("DiagonalGaussianUnbiasedEstimatorTest", "[DistributionTest]") * the weighted mean and covariance reduce to the unweighted sample mean and * covariance. */ -TEST_CASE("DiagonalGaussianWeightedParametersReductionTest", "[DistributionTest]") +TEST_CASE("DiagonalGaussianWeightedParametersReductionTest", + "[DistributionTest]") { arma::vec mean("2.5 1.5 8.2 3.1"); arma::vec cov("1.2 3.1 8.3 4.3"); diff --git a/src/mlpack/tests/hoeffding_tree_test.cpp b/src/mlpack/tests/hoeffding_tree_test.cpp index 8787dfe28f..49c60b0cea 100644 --- a/src/mlpack/tests/hoeffding_tree_test.cpp +++ b/src/mlpack/tests/hoeffding_tree_test.cpp @@ -173,7 +173,8 @@ TEST_CASE("HoeffdingInformationGainBadSplitTest", "[HoeffdingTreeTest]") counts(1, 0) = 5; counts(1, 1) = 5; - REQUIRE(HoeffdingInformationGain::Evaluate(counts) == Approx(0.0).margin(1e-10)); + REQUIRE(HoeffdingInformationGain::Evaluate(counts) == + Approx(0.0).margin(1e-10)); } /** @@ -216,7 +217,8 @@ TEST_CASE("HoeffdingInformationGainZeroTest", "[HoeffdingTreeTest]") // When nothing has been seen, the information gain should be zero. arma::Mat counts = arma::zeros>(10, 10); - REQUIRE(HoeffdingInformationGain::Evaluate(counts) == Approx(0.0).margin(1e-10)); + REQUIRE(HoeffdingInformationGain::Evaluate(counts) == + Approx(0.0).margin(1e-10)); } /** @@ -225,14 +227,22 @@ TEST_CASE("HoeffdingInformationGainZeroTest", "[HoeffdingTreeTest]") */ TEST_CASE("HoeffdingInformationGainRangeTest", "[HoeffdingTreeTest]") { - REQUIRE(HoeffdingInformationGain::Range(1) == Approx(0).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(2) == Approx(1.0).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(3) == Approx(1.5849625).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(4) == Approx(2).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(5) == Approx(2.32192809).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(10) == Approx(3.32192809).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(100) == Approx(6.64385619).epsilon(1e-7)); - REQUIRE(HoeffdingInformationGain::Range(1000) == Approx(9.96578428).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(1) == + Approx(0).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(2) == + Approx(1.0).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(3) == + Approx(1.5849625).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(4) == + Approx(2).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(5) == + Approx(2.32192809).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(10) == + Approx(3.32192809).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(100) == + Approx(6.64385619).epsilon(1e-7)); + REQUIRE(HoeffdingInformationGain::Range(1000) == + Approx(9.96578428).epsilon(1e-7)); } /** diff --git a/src/mlpack/tests/io_test.cpp b/src/mlpack/tests/io_test.cpp index d09b7e97a0..fa363face9 100644 --- a/src/mlpack/tests/io_test.cpp +++ b/src/mlpack/tests/io_test.cpp @@ -795,7 +795,8 @@ TEST_CASE_METHOD(IOTestDestroyer, "OutputMatrixParamTest", remove("test.csv"); } -TEST_CASE_METHOD(IOTestDestroyer, "OutputMatrixNoTransposeParamTest", "[IOTest]") +TEST_CASE_METHOD(IOTestDestroyer, "OutputMatrixNoTransposeParamTest", + "[IOTest]") { AddRequiredCLIOptions(); diff --git a/src/mlpack/tests/lin_alg_test.cpp b/src/mlpack/tests/lin_alg_test.cpp index 7454564c20..a43821d75d 100644 --- a/src/mlpack/tests/lin_alg_test.cpp +++ b/src/mlpack/tests/lin_alg_test.cpp @@ -190,7 +190,6 @@ TEST_CASE("TestSvecSmat", "[LinAlgTest]") for (size_t i = 0; i < 3; ++i) for (size_t j = 0; j < 3; ++j) REQUIRE(X(i, j) == Approx(Xtest(i, j)).epsilon(1e-9)); - } TEST_CASE("TestSparseSvec", "[LinAlgTest]") diff --git a/src/mlpack/tests/loss_functions_test.cpp b/src/mlpack/tests/loss_functions_test.cpp index cb814d021e..54b9945c66 100644 --- a/src/mlpack/tests/loss_functions_test.cpp +++ b/src/mlpack/tests/loss_functions_test.cpp @@ -201,7 +201,7 @@ TEST_CASE("KLDivergenceMeanTest", "[LossFunctionsTest]") target = arma::exp(arma::mat("2 1 1 1 1 1 1 1 1 1")); loss = module.Forward(input, target); - REQUIRE(loss == Approx(-1.1 ).epsilon(1e-5)); + REQUIRE(loss == Approx(-1.1).epsilon(1e-5)); // Test the Backward function. module.Backward(input, target, output); @@ -846,7 +846,8 @@ TEST_CASE("SoftMarginLossTest", "[LossFunctionsTest]") // Test the Backward function. module1.Backward(input, target, output); - REQUIRE(arma::as_scalar(arma::accu(output)) == Approx(-1.48227).epsilon(1e-3)); + REQUIRE(arma::as_scalar(arma::accu(output)) == + Approx(-1.48227).epsilon(1e-3)); REQUIRE(output.n_rows == input.n_rows); REQUIRE(output.n_cols == input.n_cols); CheckMatrices(output, expectedOutput, 0.1); @@ -865,7 +866,8 @@ TEST_CASE("SoftMarginLossTest", "[LossFunctionsTest]") // Test the Backward function. module2.Backward(input, target, output); - REQUIRE(arma::as_scalar(arma::accu(output)) == Approx(-0.164697).epsilon(1e-3)); + REQUIRE(arma::as_scalar(arma::accu(output)) == + Approx(-0.164697).epsilon(1e-3)); REQUIRE(output.n_rows == input.n_rows); REQUIRE(output.n_cols == input.n_cols); CheckMatrices(output, expectedOutput, 0.1); @@ -885,7 +887,7 @@ TEST_CASE("MeanAbsolutePercentageErrorTest", "[LossFunctionsTest]") // Test the Forward function. Loss should be 95.625. // Loss value calculated manually. double loss = module.Forward(input,target); - REQUIRE(loss == Approx(95.625).epsilon(1e-1)); + REQUIRE(loss == Approx(95.625).epsilon(1e-1)); // Test the Backward function. module.Backward(input, target, output); diff --git a/src/mlpack/tests/nbc_test.cpp b/src/mlpack/tests/nbc_test.cpp index f487060db4..2b785cab0e 100644 --- a/src/mlpack/tests/nbc_test.cpp +++ b/src/mlpack/tests/nbc_test.cpp @@ -81,7 +81,7 @@ TEST_CASE("NaiveBayesClassifierTest", "[NBCTest]") { for (size_t j = 0; j < testResProbs.n_rows; ++j) { - + REQUIRE(testResProbs(j, i) + 0.0001 == Approx(calcProbs(j, i) + 0.0001).epsilon(0.0001)); } diff --git a/src/mlpack/tests/pca_test.cpp b/src/mlpack/tests/pca_test.cpp index fff63d0024..7537804ac9 100644 --- a/src/mlpack/tests/pca_test.cpp +++ b/src/mlpack/tests/pca_test.cpp @@ -316,7 +316,8 @@ TEST_CASE("PCAScalingTest", "[PCATest]") // zero. There is noise, of course... REQUIRE(std::abs(eigvec(0, 0)) == Approx(sqrt(2) / 2).epsilon(0.0035)); REQUIRE(std::abs(eigvec(1, 0)) == Approx(sqrt(2) / 2).epsilon(0.0035)); - REQUIRE(eigvec(2, 0) == Approx(0.0).margin(0.1)); // Large tolerance for noise. + // Large tolerance for noise. + REQUIRE(eigvec(2, 0) == Approx(0.0).margin(0.1)); // The second component should be focused almost entirely in the third // dimension. diff --git a/src/mlpack/tests/range_search_test.cpp b/src/mlpack/tests/range_search_test.cpp index 7bd714beaf..c490d9074b 100644 --- a/src/mlpack/tests/range_search_test.cpp +++ b/src/mlpack/tests/range_search_test.cpp @@ -206,13 +206,20 @@ TEST_CASE("ExhaustiveSyntheticTest", "[RangeSearchTest]") // Neighbors of point 10. REQUIRE(sortedOutput[newFromOld[10]].size() == 4); REQUIRE(sortedOutput[newFromOld[10]][0].second == newFromOld[9]); - REQUIRE(sortedOutput[newFromOld[10]][0].first == Approx(0.10).epsilon(1e-7)); - REQUIRE(sortedOutput[newFromOld[10]][1].second == newFromOld[3]); - REQUIRE(sortedOutput[newFromOld[10]][1].first == Approx(0.25).epsilon(1e-7)); - REQUIRE(sortedOutput[newFromOld[10]][2].second == newFromOld[8]); - REQUIRE(sortedOutput[newFromOld[10]][2].first == Approx(0.55).epsilon(1e-7)); - REQUIRE(sortedOutput[newFromOld[10]][3].second == newFromOld[1]); - REQUIRE(sortedOutput[newFromOld[10]][3].first == Approx(0.65).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][0].first == + Approx(0.10).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][1].second == + newFromOld[3]); + REQUIRE(sortedOutput[newFromOld[10]][1].first == + Approx(0.25).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][2].second == + newFromOld[8]); + REQUIRE(sortedOutput[newFromOld[10]][2].first == + Approx(0.55).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][3].second == + newFromOld[1]); + REQUIRE(sortedOutput[newFromOld[10]][3].first == + Approx(0.65).epsilon(1e-7)); // Now do it again with a different range: [sqrt(0.5) 1.0]. if (rs->ReferenceTree()) @@ -433,13 +440,20 @@ TEST_CASE("ExhaustiveSyntheticTest", "[RangeSearchTest]") // Neighbors of point 10. REQUIRE(sortedOutput[newFromOld[10]].size() == 4); REQUIRE(sortedOutput[newFromOld[10]][0].second == newFromOld[5]); - REQUIRE(sortedOutput[newFromOld[10]][0].first == Approx(1.22).epsilon(1e-7)); - REQUIRE(sortedOutput[newFromOld[10]][1].second == newFromOld[7]); - REQUIRE(sortedOutput[newFromOld[10]][1].first == Approx(2.30).epsilon(1e-7)); - REQUIRE(sortedOutput[newFromOld[10]][2].second == newFromOld[6]); - REQUIRE(sortedOutput[newFromOld[10]][2].first == Approx(3.00).epsilon(1e-7)); - REQUIRE(sortedOutput[newFromOld[10]][3].second == newFromOld[4]); - REQUIRE(sortedOutput[newFromOld[10]][3].first == Approx(4.05).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][0].first == + Approx(1.22).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][1].second == + newFromOld[7]); + REQUIRE(sortedOutput[newFromOld[10]][1].first == + Approx(2.30).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][2].second == + newFromOld[6]); + REQUIRE(sortedOutput[newFromOld[10]][2].first == + Approx(3.00).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][3].second == + newFromOld[4]); + REQUIRE(sortedOutput[newFromOld[10]][3].first == + Approx(4.05).epsilon(1e-7)); // Clean the memory. delete rs; diff --git a/src/mlpack/tests/rl_components_test.cpp b/src/mlpack/tests/rl_components_test.cpp index 7eb69cb003..8ce209903e 100644 --- a/src/mlpack/tests/rl_components_test.cpp +++ b/src/mlpack/tests/rl_components_test.cpp @@ -196,7 +196,7 @@ TEST_CASE("DoublePoleCartTest", "[RLComponentsTest]") } /** - * Constructs a ContinuousDoublePoleCart instance and check if the main + * Constructs a ContinuousDoublePoleCart instance and check if the main * routine works as it should be. */ TEST_CASE("ContinuousDoublePoleCartTest", "[RLComponentsTest]") @@ -285,5 +285,4 @@ TEST_CASE("GreedyPolicyTest", "[RLComponentsTest]") CartPole::Action action = policy.Sample(actionValue); REQUIRE(actionValue[action.action] == Approx(actionValue.max()).epsilon(1e-7)); - } diff --git a/src/mlpack/tests/sort_policy_test.cpp b/src/mlpack/tests/sort_policy_test.cpp index 6418135f8e..cb73f96cad 100644 --- a/src/mlpack/tests/sort_policy_test.cpp +++ b/src/mlpack/tests/sort_policy_test.cpp @@ -107,7 +107,7 @@ TEST_CASE("NnsNodeToNodeDistance", "[SortPolicyTest]") utility[0] = 0.5; nodeTwo.Bound() |= utility; - REQUIRE(NearestNeighborSort::BestNodeToNodeDistance(&nodeOne, &nodeTwo) == + REQUIRE(NearestNeighborSort::BestNodeToNodeDistance(&nodeOne, &nodeTwo) == Approx(0.0).margin(1e-5)); } @@ -146,7 +146,7 @@ TEST_CASE("NnsPointToNodeDistance", "[SortPolicyTest]") // And now when the point is inside the bound. point[0] = 0.5; - REQUIRE(NearestNeighborSort::BestPointToNodeDistance(point, &node) == + REQUIRE(NearestNeighborSort::BestPointToNodeDistance(point, &node) == Approx(0.0).margin(1e-5)); } diff --git a/src/mlpack/tests/string_encoding_test.cpp b/src/mlpack/tests/string_encoding_test.cpp index 81af48f843..c7213e92cc 100644 --- a/src/mlpack/tests/string_encoding_test.cpp +++ b/src/mlpack/tests/string_encoding_test.cpp @@ -269,7 +269,8 @@ TEST_CASE("DictionaryEncodingIndividualCharactersTest", "[StringEncodingTest]") * Test the one pass modification of the dictionary encoding algorithm * in case of individual character encoding. */ -TEST_CASE("OnePassDictionaryEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("OnePassDictionaryEncodingIndividualCharactersTest", + "[StringEncodingTest]") { std::vector input = { "GACCA", @@ -542,7 +543,7 @@ TEST_CASE("CharExtractDictionaryEncodingSerialization", "[StringEncodingTest]") /** * Test the Bag of Words encoding algorithm. - */ + */ TEST_CASE("BagOfWordsEncodingTest", "[StringEncodingTest]") { using DictionaryType = StringEncodingDictionary; @@ -617,7 +618,7 @@ TEST_CASE("BagOfWordsEncodingTest", "[StringEncodingTest]") /** * Test the Bag of Words encoding algorithm. The output is saved into a vector. - */ + */ TEST_CASE("VectorBagOfWordsEncodingTest", "[StringEncodingTest]") { using DictionaryType = StringEncodingDictionary; @@ -684,7 +685,8 @@ TEST_CASE("BagOfWordsEncodingIndividualCharactersTest", "[StringEncodingTest]") * Test the Bag of Words encoding algorithm in case of individual * characters encoding. The output type is vector>. */ -TEST_CASE("VectorBagOfWordsEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("VectorBagOfWordsEncodingIndividualCharactersTest", + "[StringEncodingTest]") { std::vector input = { "GACCA", @@ -861,7 +863,8 @@ TEST_CASE("VectorRawCountSmoothIdfEncodingTest", "[StringEncodingTest]") * raw count term frequency type and the smooth inverse document frequency type. * These parameters are the default ones. */ -TEST_CASE("RawCountSmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("RawCountSmoothIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", @@ -942,7 +945,8 @@ TEST_CASE("RawCountSmoothIdfEncodingIndividualCharactersTest", "[StringEncodingT * These parameters are the default ones. The output type is * vector>. */ -TEST_CASE("VectorRawCountSmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("VectorRawCountSmoothIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { std::vector input = { "GACCA", @@ -1068,7 +1072,8 @@ TEST_CASE("VectorTfIdfRawCountEncodingTest", "[StringEncodingTest]") * raw count term frequency type and the non-smooth inverse document frequency * type. */ -TEST_CASE("RawCountTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("RawCountTfIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", @@ -1099,7 +1104,8 @@ TEST_CASE("RawCountTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest] * raw count term frequency type and the non-smooth inverse document frequency * type. The output type is vector>. */ -TEST_CASE("VectorRawCountTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("VectorRawCountTfIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { std::vector input = { "GACCA", @@ -1129,7 +1135,8 @@ TEST_CASE("VectorRawCountTfIdfEncodingIndividualCharactersTest", "[StringEncodin * Test the Tf-Idf encoding algorithm for individual characters with the * binary term frequency type and the smooth inverse document frequency type. */ -TEST_CASE("BinarySmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("BinarySmoothIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", @@ -1160,7 +1167,8 @@ TEST_CASE("BinarySmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTes * binary term frequency type and the smooth inverse document frequency type. * The output type is vector>. */ -TEST_CASE("VectorBinarySmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("VectorBinarySmoothIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { std::vector input = { "GACCA", @@ -1222,7 +1230,8 @@ TEST_CASE("BinaryTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") * sublinear term frequency type and the smooth inverse document frequency * type. */ -TEST_CASE("SublinearSmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("SublinearSmoothIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", @@ -1254,7 +1263,8 @@ TEST_CASE("SublinearSmoothIdfEncodingIndividualCharactersTest", "[StringEncoding * sublinear term frequency type and the non-smooth inverse document frequency * type. */ -TEST_CASE("SublinearTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("SublinearTfIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", @@ -1286,7 +1296,8 @@ TEST_CASE("SublinearTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest * standard term frequency type and the smooth inverse document frequency * type. */ -TEST_CASE("TermFrequencySmoothIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("TermFrequencySmoothIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", @@ -1367,7 +1378,8 @@ TEST_CASE("TermFrequencySmoothIdfEncodingIndividualCharactersTest", "[StringEnco * standard term frequency type and the non-smooth inverse document frequency * type. */ -TEST_CASE("TermFrequencyTfIdfEncodingIndividualCharactersTest", "[StringEncodingTest]") +TEST_CASE("TermFrequencyTfIdfEncodingIndividualCharactersTest", + "[StringEncodingTest]") { vector input = { "GACCA", From ed36e473912dd15481997a9ddbf44c0934609582 Mon Sep 17 00:00:00 2001 From: Marcus Edel Date: Sun, 1 Nov 2020 14:50:37 +0100 Subject: [PATCH 10/11] More style fixes (line length, whitespace/end_of_line, whitespace comments). --- .../rectangle_tree/rectangle_tree_impl.hpp | 2 +- .../methods/ann/layer/dropconnect_impl.hpp | 2 +- .../mean_absolute_percentage_error_impl.hpp | 2 +- .../tests/activation_functions_test.cpp | 3 +-- src/mlpack/tests/lmnn_test.cpp | 26 +++++++++---------- src/mlpack/tests/loss_functions_test.cpp | 5 ++-- src/mlpack/tests/main_tests/kde_test.cpp | 10 +++---- src/mlpack/tests/main_tests/krann_test.cpp | 6 +++-- src/mlpack/tests/nbc_test.cpp | 1 - src/mlpack/tests/pca_test.cpp | 3 ++- src/mlpack/tests/range_search_test.cpp | 8 +++--- 11 files changed, 36 insertions(+), 32 deletions(-) diff --git a/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp b/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp index 30d09c1300..03acfb0e74 100644 --- a/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp +++ b/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp @@ -1431,7 +1431,7 @@ void RectangleTree(dataset); ar(CEREAL_POINTER(datasetTemp)); - } + } ar(CEREAL_NVP(points)); ar(CEREAL_NVP(auxiliaryInfo)); diff --git a/src/mlpack/methods/ann/layer/dropconnect_impl.hpp b/src/mlpack/methods/ann/layer/dropconnect_impl.hpp index ccbda1c888..9b22c91951 100644 --- a/src/mlpack/methods/ann/layer/dropconnect_impl.hpp +++ b/src/mlpack/methods/ann/layer/dropconnect_impl.hpp @@ -108,7 +108,7 @@ template void DropConnect::serialize( Archive& ar, const uint32_t /* version */) { - // Delete the old network first, if needed. + // Delete the old network first, if needed. if (cereal::is_loading()) { boost::apply_visitor(DeleteVisitor(), baseLayer); diff --git a/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp b/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp index 82f054e2b9..52b6281a18 100644 --- a/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp +++ b/src/mlpack/methods/ann/loss_functions/mean_absolute_percentage_error_impl.hpp @@ -45,7 +45,7 @@ void MeanAbsolutePercentageError::Backward( { output = (((arma::conv_to::from(input < target) * -2) + 1) / - target) * (100 / target.n_cols) ; + target) * (100 / target.n_cols); } template diff --git a/src/mlpack/tests/activation_functions_test.cpp b/src/mlpack/tests/activation_functions_test.cpp index 011df12840..d88c0a5109 100644 --- a/src/mlpack/tests/activation_functions_test.cpp +++ b/src/mlpack/tests/activation_functions_test.cpp @@ -573,7 +573,7 @@ void CheckSoftminActivationCorrect(const arma::colvec input, // Test the activation function using the entire vector as input. arma::colvec activations; - softmin.Forward(input,activations); + softmin.Forward(input, activations); for (size_t i = 0; i < activations.n_elem; ++i) { REQUIRE(activations.at(i) == Approx(target.at(i)).epsilon(1e-5)); @@ -607,7 +607,6 @@ void CheckSoftminDerivativeCorrect(const arma::colvec input, { REQUIRE(derivatives.at(i) == Approx(target.at(i)).epsilon(1e-5)); } - } /** diff --git a/src/mlpack/tests/lmnn_test.cpp b/src/mlpack/tests/lmnn_test.cpp index 52d014c9aa..cb07173563 100644 --- a/src/mlpack/tests/lmnn_test.cpp +++ b/src/mlpack/tests/lmnn_test.cpp @@ -120,7 +120,7 @@ TEST_CASE("LMNNInitialPointTest", "[LMNNTest]") for (int col = 0; col < 5; col++) { if (row == col) - REQUIRE(initialPoint(row, col) == Approx( 1.0).epsilon(1e-7)); + REQUIRE(initialPoint(row, col) == Approx(1.0).epsilon(1e-7)); else REQUIRE(initialPoint(row, col) == Approx(0.0).margin(1e-5)); } @@ -207,8 +207,8 @@ TEST_CASE("LMNNSeparableObjectiveTest", "[LMNNTest]") // Result calculated by hand. arma::mat coordinates = arma::eye(2, 2); - REQUIRE(lmnnfn.Evaluate(coordinates, 0, 1) == Approx( 1.576).epsilon(1e-7)); - REQUIRE(lmnnfn.Evaluate(coordinates, 1, 1) == Approx( 1.576).epsilon(1e-7)); + REQUIRE(lmnnfn.Evaluate(coordinates, 0, 1) == Approx(1.576).epsilon(1e-7)); + REQUIRE(lmnnfn.Evaluate(coordinates, 1, 1) == Approx(1.576).epsilon(1e-7)); REQUIRE(lmnnfn.Evaluate(coordinates, 2, 1) == Approx(1.576).epsilon(1e-7)); REQUIRE(lmnnfn.Evaluate(coordinates, 3, 1) == Approx(1.576).epsilon(1e-7)); REQUIRE(lmnnfn.Evaluate(coordinates, 4, 1) == Approx(1.576).epsilon(1e-7)); @@ -326,21 +326,21 @@ TEST_CASE("LMNNSeparableEvaluateWithGradientTest", "[LMNNTest]") objective = lmnnfn.EvaluateWithGradient(coordinates, 4, gradient, 1); - REQUIRE(objective == Approx( 1.576).epsilon(1e-7)); + REQUIRE(objective == Approx(1.576).epsilon(1e-7)); - REQUIRE(gradient(0, 0) == Approx( -0.048).epsilon(1e-7)); - REQUIRE(gradient(0, 1) == Approx( 0.0).epsilon(1e-7)); - REQUIRE(gradient(1, 0) == Approx( 0.0).epsilon(1e-7)); - REQUIRE(gradient(1, 1) == Approx( 2.0).epsilon(1e-7)); + REQUIRE(gradient(0, 0) == Approx(-0.048).epsilon(1e-7)); + REQUIRE(gradient(0, 1) == Approx(0.0).epsilon(1e-7)); + REQUIRE(gradient(1, 0) == Approx(0.0).epsilon(1e-7)); + REQUIRE(gradient(1, 1) == Approx(2.0).epsilon(1e-7)); objective = lmnnfn.EvaluateWithGradient(coordinates, 5, gradient, 1); REQUIRE(objective == Approx( 1.576).epsilon(1e-7)); - REQUIRE(gradient(0, 0) == Approx( -0.048).epsilon(1e-7)); - REQUIRE(gradient(0, 1) == Approx( 0.0).epsilon(1e-7)); - REQUIRE(gradient(1, 0) == Approx( 0.0).epsilon(1e-7)); - REQUIRE(gradient(1, 1) == Approx( 2.0).epsilon(1e-7)); + REQUIRE(gradient(0, 0) == Approx(-0.048).epsilon(1e-7)); + REQUIRE(gradient(0, 1) == Approx(0.0).epsilon(1e-7)); + REQUIRE(gradient(1, 0) == Approx(0.0).epsilon(1e-7)); + REQUIRE(gradient(1, 1) == Approx(2.0).epsilon(1e-7)); } // Check that final objective value using SGD optimizer is optimal. @@ -450,7 +450,7 @@ TEST_CASE("LMNNAccuracyTest", "[LMNNTest]") REQUIRE(initAccuracy < finalAccuracy); // Since this is a very simple dataset final accuracy should be around 100%. - REQUIRE(finalAccuracy == Approx( 100.0).epsilon(1e-7)); + REQUIRE(finalAccuracy == Approx(100.0).epsilon(1e-7)); } // Check that accuracy while learning square distance matrix is the same as when diff --git a/src/mlpack/tests/loss_functions_test.cpp b/src/mlpack/tests/loss_functions_test.cpp index 54b9945c66..42762bd96d 100644 --- a/src/mlpack/tests/loss_functions_test.cpp +++ b/src/mlpack/tests/loss_functions_test.cpp @@ -886,12 +886,13 @@ TEST_CASE("MeanAbsolutePercentageErrorTest", "[LossFunctionsTest]") // Test the Forward function. Loss should be 95.625. // Loss value calculated manually. - double loss = module.Forward(input,target); + double loss = module.Forward(input, target); REQUIRE(loss == Approx(95.625).epsilon(1e-1)); // Test the Backward function. module.Backward(input, target, output); - REQUIRE(arma::as_scalar(arma::accu(output)) == Approx(-105.625).epsilon(1e-3)); + REQUIRE(arma::as_scalar(arma::accu(output)) == + Approx(-105.625).epsilon(1e-3)); REQUIRE(output.n_rows == input.n_rows); REQUIRE(output.n_cols == input.n_cols); CheckMatrices(output, expectedOutput, 0.1); diff --git a/src/mlpack/tests/main_tests/kde_test.cpp b/src/mlpack/tests/main_tests/kde_test.cpp index f4604f9475..325130c928 100644 --- a/src/mlpack/tests/main_tests/kde_test.cpp +++ b/src/mlpack/tests/main_tests/kde_test.cpp @@ -87,7 +87,7 @@ TEST_CASE_METHOD(KDETestFixture, "KDEGaussianRTreeResultsMain", // Check whether results are equal. for (size_t i = 0; i < query.n_cols; ++i) - REQUIRE(kdeEstimations[i] == Approx( mainEstimations[i]).epsilon(relError)); + REQUIRE(kdeEstimations[i] == Approx(mainEstimations[i]).epsilon(relError)); } /** @@ -128,7 +128,7 @@ TEST_CASE_METHOD(KDETestFixture, "KDETriangularBallTreeResultsMain", // Check whether results are equal. for (size_t i = 0; i < query.n_cols; ++i) - REQUIRE(kdeEstimations[i] == Approx( mainEstimations[i]).epsilon(relError)); + REQUIRE(kdeEstimations[i] == Approx(mainEstimations[i]).epsilon(relError)); } /** @@ -170,7 +170,7 @@ TEST_CASE_METHOD(KDETestFixture, "KDEMonoResultsMain", // Check whether results are equal. for (size_t i = 0; i < reference.n_cols; ++i) - REQUIRE(kdeEstimations[i] == Approx( mainEstimations[i]).epsilon(relError)); + REQUIRE(kdeEstimations[i] == Approx(mainEstimations[i]).epsilon(relError)); } /** @@ -239,7 +239,7 @@ TEST_CASE_METHOD(KDETestFixture, "KDEModelReuse", // Check estimations are the same. for (size_t i = 0; i < samples; ++i) - REQUIRE(oldEstimations[i] == Approx( newEstimations[i]).epsilon(relError)); + REQUIRE(oldEstimations[i] == Approx(newEstimations[i]).epsilon(relError)); } /** @@ -282,7 +282,7 @@ TEST_CASE_METHOD(KDETestFixture, "KDEGaussianSingleKDTreeResultsMain", // Check whether results are equal. for (size_t i = 0; i < query.n_cols; ++i) - REQUIRE(kdeEstimations[i] == Approx( mainEstimations[i]).epsilon(relError)); + REQUIRE(kdeEstimations[i] == Approx(mainEstimations[i]).epsilon(relError)); } /** diff --git a/src/mlpack/tests/main_tests/krann_test.cpp b/src/mlpack/tests/main_tests/krann_test.cpp index 244b88c8c5..b61044f104 100644 --- a/src/mlpack/tests/main_tests/krann_test.cpp +++ b/src/mlpack/tests/main_tests/krann_test.cpp @@ -453,7 +453,8 @@ TEST_CASE_METHOD(KRANNTestFixture, "KRANNDifferentTreeType", // Check that initial output matrices and the output matrices using // saved model are equal - CHECK(output_model->TreeType() == 0); + const bool check = output_model->TreeType() == 0; + CHECK(check == true); CHECK(IO::GetParam("output_model")->TreeType() == 8); delete output_model; @@ -491,7 +492,8 @@ TEST_CASE_METHOD(KRANNTestFixture, "KRANNDifferentSingleSampleLimit", // Check that initial output matrices and the output matrices using // saved model are equal. - CHECK( IO::GetParam("output_model")->SingleSampleLimit() == (int) 15); + CHECK(IO::GetParam("output_model")->SingleSampleLimit() == + (int) 15); CHECK(output_model->SingleSampleLimit() == (int) 20); delete output_model; } diff --git a/src/mlpack/tests/nbc_test.cpp b/src/mlpack/tests/nbc_test.cpp index 2b785cab0e..ddc0487315 100644 --- a/src/mlpack/tests/nbc_test.cpp +++ b/src/mlpack/tests/nbc_test.cpp @@ -81,7 +81,6 @@ TEST_CASE("NaiveBayesClassifierTest", "[NBCTest]") { for (size_t j = 0; j < testResProbs.n_rows; ++j) { - REQUIRE(testResProbs(j, i) + 0.0001 == Approx(calcProbs(j, i) + 0.0001).epsilon(0.0001)); } diff --git a/src/mlpack/tests/pca_test.cpp b/src/mlpack/tests/pca_test.cpp index 7537804ac9..6ccefbbaeb 100644 --- a/src/mlpack/tests/pca_test.cpp +++ b/src/mlpack/tests/pca_test.cpp @@ -329,7 +329,8 @@ TEST_CASE("PCAScalingTest", "[PCATest]") // the first (plus tolerance). REQUIRE(std::abs(eigvec(0, 0)) == Approx(sqrt(2) / 2).epsilon(0.0035)); REQUIRE(std::abs(eigvec(1, 0)) == Approx(sqrt(2) / 2).epsilon(0.0035)); - REQUIRE(eigvec(2, 0) == Approx(0.0).margin(0.1)); // Large tolerance for noise. + // Large tolerance for noise. + REQUIRE(eigvec(2, 0) == Approx(0.0).margin(0.1)); // The eigenvalues should sum to three. REQUIRE(accu(eigval) == Approx(3.0).epsilon(0.001)); diff --git a/src/mlpack/tests/range_search_test.cpp b/src/mlpack/tests/range_search_test.cpp index c490d9074b..bb79228017 100644 --- a/src/mlpack/tests/range_search_test.cpp +++ b/src/mlpack/tests/range_search_test.cpp @@ -280,9 +280,11 @@ TEST_CASE("ExhaustiveSyntheticTest", "[RangeSearchTest]") // Neighbors of point 10. REQUIRE(sortedOutput[newFromOld[10]].size() == 2); REQUIRE(sortedOutput[newFromOld[10]][0].second == newFromOld[2]); - REQUIRE(sortedOutput[newFromOld[10]][0].first == Approx(0.85).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][0].first == + Approx(0.85).epsilon(1e-7)); REQUIRE(sortedOutput[newFromOld[10]][1].second == newFromOld[0]); - REQUIRE(sortedOutput[newFromOld[10]][1].first == Approx(0.95).epsilon(1e-7)); + REQUIRE(sortedOutput[newFromOld[10]][1].first == + Approx(0.95).epsilon(1e-7)); // Now do it again with a different range: [1.0 inf]. if (rs->ReferenceTree()) @@ -1056,7 +1058,7 @@ TEST_CASE("DualBallTreeTest2", "[RangeSearchTest]") { REQUIRE(kdSorted[i][j].second == ballSorted[i][j].second); REQUIRE(kdSorted[i][j].first == - Approx(ballSorted[i][j].first).epsilon (1e-7)); + Approx(ballSorted[i][j].first).epsilon(1e-7)); } } } From 0aabdca00d9f9cab545943377cc6246c17f63a22 Mon Sep 17 00:00:00 2001 From: Marcus Edel Date: Sun, 1 Nov 2020 14:55:44 +0100 Subject: [PATCH 11/11] Remove extra space. --- src/mlpack/tests/lmnn_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mlpack/tests/lmnn_test.cpp b/src/mlpack/tests/lmnn_test.cpp index cb07173563..b767f4a940 100644 --- a/src/mlpack/tests/lmnn_test.cpp +++ b/src/mlpack/tests/lmnn_test.cpp @@ -335,7 +335,7 @@ TEST_CASE("LMNNSeparableEvaluateWithGradientTest", "[LMNNTest]") objective = lmnnfn.EvaluateWithGradient(coordinates, 5, gradient, 1); - REQUIRE(objective == Approx( 1.576).epsilon(1e-7)); + REQUIRE(objective == Approx(1.576).epsilon(1e-7)); REQUIRE(gradient(0, 0) == Approx(-0.048).epsilon(1e-7)); REQUIRE(gradient(0, 1) == Approx(0.0).epsilon(1e-7));