From 4a0aaf99d406dc42d7519e808f00a54c3fbc91d3 Mon Sep 17 00:00:00 2001 From: Saksham Bansal <7020962+saksham189@users.noreply.github.com> Date: Mon, 12 Aug 2019 18:18:39 +0530 Subject: [PATCH] Style fix Use Padding layer pointer --- src/mlpack/methods/ann/layer/convolution.hpp | 2 +- .../methods/ann/layer/convolution_impl.hpp | 8 ++--- src/mlpack/methods/ann/layer/padding.hpp | 26 ++++++++++++----- src/mlpack/methods/ann/layer/padding_impl.hpp | 29 ++++++++++++------- 4 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/mlpack/methods/ann/layer/convolution.hpp b/src/mlpack/methods/ann/layer/convolution.hpp index 0e5fa0e6de..eb482e3e95 100644 --- a/src/mlpack/methods/ann/layer/convolution.hpp +++ b/src/mlpack/methods/ann/layer/convolution.hpp @@ -282,7 +282,7 @@ class Convolution arma::cube gradientTemp; //! Locally-stored padding layer. - LayerTypes<> padding; + Padding<>* padding; //! Locally-stored delta object. OutputDataType delta; diff --git a/src/mlpack/methods/ann/layer/convolution_impl.hpp b/src/mlpack/methods/ann/layer/convolution_impl.hpp index 7be4073577..94ea2a5e6a 100644 --- a/src/mlpack/methods/ann/layer/convolution_impl.hpp +++ b/src/mlpack/methods/ann/layer/convolution_impl.hpp @@ -15,8 +15,6 @@ // In case it hasn't yet been included. #include "convolution.hpp" -#include "../visitor/forward_visitor.hpp" - namespace mlpack { namespace ann /** Artificial Neural Network. */ { @@ -76,7 +74,7 @@ Convolution< outputHeight(0) { weights.set_size((outSize * inSize * kW * kH) + outSize, 1); - padding = new Padding<>(padW, padH); + padding = new Padding<>(padW, padW, padH, padH); } template< @@ -126,8 +124,8 @@ void Convolution< inputTemp.n_cols + padH * 2, inputTemp.n_slices); for (size_t i = 0; i < inputTemp.n_slices; ++i) { - boost::apply_visitor(ForwardVisitor(std::move(inputTemp.slice(i)), - std::move(inputPaddedTemp.slice(i))), padding); + padding->Forward(std::move(inputTemp.slice(i)), + std::move(inputPaddedTemp.slice(i))); } } diff --git a/src/mlpack/methods/ann/layer/padding.hpp b/src/mlpack/methods/ann/layer/padding.hpp index d8d49193b6..6d8855cad7 100644 --- a/src/mlpack/methods/ann/layer/padding.hpp +++ b/src/mlpack/methods/ann/layer/padding.hpp @@ -37,11 +37,15 @@ class Padding /** * Create the Padding object using the specified number of output units. * - * @param padW Padding width of the input. - * @param padH Padding height of the input. + * @param padWLeft Left padding width of the input. + * @param padWLeft Right padding width of the input. + * @param padHTop Top padding height of the input. + * @param padHBottom Bottom padding height of the input. */ - Padding(const size_t padW = 0, - const size_t padH = 0); + Padding(const size_t padWLeft = 0, + const size_t padWRight = 0, + const size_t padHTop = 0, + const size_t padHBottom = 0); /** * Ordinary feed forward pass of a neural network, evaluating the function @@ -84,11 +88,17 @@ class Padding void serialize(Archive& ar, const unsigned int /* version */); private: - //! Locally-stored padding width. - size_t padW; + //! Locally-stored left padding width. + size_t padWLeft; - //! Locally-stored padding height. - size_t padH; + //! Locally-stored right padding width. + size_t padWRight; + + //! Locally-stored top padding height. + size_t padHTop; + + //! Locally-stored bottom padding height. + size_t padHBottom; //! Locally-stored number of rows and columns of input. size_t nRows, nCols; diff --git a/src/mlpack/methods/ann/layer/padding_impl.hpp b/src/mlpack/methods/ann/layer/padding_impl.hpp index 9b73ff1b1b..fb5621d01d 100644 --- a/src/mlpack/methods/ann/layer/padding_impl.hpp +++ b/src/mlpack/methods/ann/layer/padding_impl.hpp @@ -21,10 +21,14 @@ namespace ann /** Artificial Neural Network. */ { template Padding::Padding( - const size_t padW, - const size_t padH) : - padW(padW), - padH(padH), + const size_t padWLeft, + const size_t padWRight, + const size_t padHTop, + const size_t padHBottom) : + padWLeft(padWLeft), + padWRight(padWRight), + padHTop(padHTop), + padHBottom(padHBottom), nRows(0), nCols(0) { @@ -38,9 +42,10 @@ void Padding::Forward( { nRows = input.n_rows; nCols = input.n_cols; - output = arma::zeros(input.n_rows + padW * 2, input.n_cols + padH * 2); - output.submat(padW, padH, padW + input.n_rows - 1, - padH + input.n_cols - 1) = input; + output = arma::zeros(input.n_rows + padWLeft + padWRight, + input.n_cols + padHTop + padHBottom); + output.submat(padWLeft, padHTop, padWLeft + input.n_rows - 1, + padHTop + input.n_cols - 1) = input; } template @@ -50,8 +55,8 @@ void Padding::Backward( const arma::Mat&& gy, arma::Mat&& g) { - g = gy.submat(padW, padH, padW + nRows - 1, - padH + nCols - 1); + g = gy.submat(padWLeft, padHTop, padWLeft + nRows - 1, + padHTop + nCols - 1); } template @@ -59,8 +64,10 @@ template void Padding::serialize( Archive& ar, const unsigned int /* version */) { - ar & BOOST_SERIALIZATION_NVP(padW); - ar & BOOST_SERIALIZATION_NVP(padH); + ar & BOOST_SERIALIZATION_NVP(padWLeft); + ar & BOOST_SERIALIZATION_NVP(padWRight); + ar & BOOST_SERIALIZATION_NVP(padHTop); + ar & BOOST_SERIALIZATION_NVP(padHBottom); } } // namespace ann