diff --git a/src/mlpack/methods/ann/ffn_impl.hpp b/src/mlpack/methods/ann/ffn_impl.hpp index 493b2f9867..a31fdddfac 100644 --- a/src/mlpack/methods/ann/ffn_impl.hpp +++ b/src/mlpack/methods/ann/ffn_impl.hpp @@ -468,7 +468,7 @@ typename MatType::elem_type FFN< res += EvaluateWithGradient(parameters, 0, gradient, 1); for (size_t i = 1; i < predictors.n_cols; ++i) { - arma::mat tmpGradient(gradient.n_rows, gradient.n_cols); + MatType tmpGradient(gradient.n_rows, gradient.n_cols); res += EvaluateWithGradient(parameters, i, tmpGradient, 1); gradient += tmpGradient; } diff --git a/src/mlpack/methods/ann/layer/batch_norm_impl.hpp b/src/mlpack/methods/ann/layer/batch_norm_impl.hpp index 213a5c217a..a2744048ec 100644 --- a/src/mlpack/methods/ann/layer/batch_norm_impl.hpp +++ b/src/mlpack/methods/ann/layer/batch_norm_impl.hpp @@ -277,7 +277,7 @@ void BatchNormType::Backward( const MatType& gy, MatType& g) { - const arma::mat stdInv = 1.0 / arma::sqrt(variance + eps); + const MatType stdInv = 1.0 / arma::sqrt(variance + eps); const size_t batchSize = input.n_cols; const size_t inputSize = inputDimension; diff --git a/src/mlpack/methods/ann/layer/c_relu_impl.hpp b/src/mlpack/methods/ann/layer/c_relu_impl.hpp index 3a99d9e75e..c58972d9ef 100644 --- a/src/mlpack/methods/ann/layer/c_relu_impl.hpp +++ b/src/mlpack/methods/ann/layer/c_relu_impl.hpp @@ -68,13 +68,14 @@ template void CReLUType::Forward( const MatType& input, MatType& output) { + typename MatType::elem_type zero = 0.0; #pragma omp for for (size_t i = 0; i < (size_t) input.n_cols; ++i) { for (size_t j = 0; j < (size_t) input.n_rows; ++j) { - output(j, i) = std::max(input(j, i), 0.0); - output(j + input.n_rows, i) = std::max(-input(j, i), 0.0); + output(j, i) = std::max(input(j, i), zero); + output(j + input.n_rows, i) = std::max(-input(j, i), zero); } } } diff --git a/src/mlpack/methods/ann/layer/convolution.hpp b/src/mlpack/methods/ann/layer/convolution.hpp index 582fd9be78..865ee52ce0 100644 --- a/src/mlpack/methods/ann/layer/convolution.hpp +++ b/src/mlpack/methods/ann/layer/convolution.hpp @@ -374,10 +374,10 @@ class ConvolutionType : public Layer arma::Cube gradientTemp; //! Locally-stored padding layer. - Padding padding; + PaddingType padding; //! Locally-stored padding layer for backward pass. - Padding paddingBackward; + PaddingType paddingBackward; //! Type of padding. std::string paddingType; diff --git a/src/mlpack/methods/ann/layer/convolution_impl.hpp b/src/mlpack/methods/ann/layer/convolution_impl.hpp index 567cc85f85..3b83e05566 100644 --- a/src/mlpack/methods/ann/layer/convolution_impl.hpp +++ b/src/mlpack/methods/ann/layer/convolution_impl.hpp @@ -573,7 +573,7 @@ void ConvolutionType< InitializeSamePadding(); } - padding = Padding(padWLeft, padWRight, padHTop, padHBottom); + padding = PaddingType(padWLeft, padWRight, padHTop, padHBottom); padding.InputDimensions() = this->inputDimensions; padding.ComputeOutputDimensions(); @@ -600,7 +600,7 @@ void ConvolutionType< apparentHeight = (this->outputDimensions[1] - 1) * strideHeight + kernelHeight; - paddingBackward = Padding(0, padding.OutputDimensions()[0] - + paddingBackward = PaddingType(0, padding.OutputDimensions()[0] - apparentWidth, 0, padding.OutputDimensions()[1] - apparentHeight); paddingBackward.InputDimensions() = std::vector({ apparentWidth, apparentHeight, inMaps * higherInDimensions }); diff --git a/src/mlpack/methods/ann/layer/grouped_convolution.hpp b/src/mlpack/methods/ann/layer/grouped_convolution.hpp index f1b1af4383..072d98589f 100644 --- a/src/mlpack/methods/ann/layer/grouped_convolution.hpp +++ b/src/mlpack/methods/ann/layer/grouped_convolution.hpp @@ -390,10 +390,10 @@ class GroupedConvolutionType : public Layer arma::Cube gradientTemp; //! Locally-stored padding layer. - Padding padding; + PaddingType padding; //! Locally-stored padding layer for backward pass. - Padding paddingBackward; + PaddingType paddingBackward; //! Type of padding. std::string paddingType; diff --git a/src/mlpack/methods/ann/layer/grouped_convolution_impl.hpp b/src/mlpack/methods/ann/layer/grouped_convolution_impl.hpp index 5c946014bb..33f5b00006 100644 --- a/src/mlpack/methods/ann/layer/grouped_convolution_impl.hpp +++ b/src/mlpack/methods/ann/layer/grouped_convolution_impl.hpp @@ -612,7 +612,7 @@ void GroupedConvolutionType< InitializeSamePadding(); } - padding = Padding(padWLeft, padWRight, padHTop, padHBottom); + padding = PaddingType(padWLeft, padWRight, padHTop, padHBottom); padding.InputDimensions() = this->inputDimensions; padding.ComputeOutputDimensions(); @@ -650,7 +650,7 @@ void GroupedConvolutionType< apparentHeight = (this->outputDimensions[1] - 1) * strideHeight + kernelHeight; - paddingBackward = Padding(0, padding.OutputDimensions()[0] - + paddingBackward = PaddingType(0, padding.OutputDimensions()[0] - apparentWidth, 0, padding.OutputDimensions()[1] - apparentHeight); paddingBackward.InputDimensions() = std::vector({ apparentWidth, apparentHeight, inMaps * higherInDimensions }); diff --git a/src/mlpack/methods/ann/layer/leaky_relu.hpp b/src/mlpack/methods/ann/layer/leaky_relu.hpp index 3571a60353..8d4eb11522 100644 --- a/src/mlpack/methods/ann/layer/leaky_relu.hpp +++ b/src/mlpack/methods/ann/layer/leaky_relu.hpp @@ -47,7 +47,7 @@ class LeakyReLUType : public Layer * * @param alpha Non zero gradient. */ - LeakyReLUType(const double alpha = 0.03); + LeakyReLUType(const typename MatType::elem_type alpha = 0.03); //! Clone the LeakyReLUType object. This handles polymorphism correctly. LeakyReLUType* Clone() const { return new LeakyReLUType(*this); } @@ -85,9 +85,9 @@ class LeakyReLUType : public Layer void Backward(const MatType& input, const MatType& gy, MatType& g); //! Get the non zero gradient. - double const& Alpha() const { return alpha; } + typename MatType::elem_type const& Alpha() const { return alpha; } //! Modify the non zero gradient. - double& Alpha() { return alpha; } + typename MatType::elem_type& Alpha() { return alpha; } //! Serialize the layer. template @@ -95,7 +95,7 @@ class LeakyReLUType : public Layer private: //! Leakyness Parameter in the range 0 -LeakyReLUType::LeakyReLUType(const double alpha) : +LeakyReLUType::LeakyReLUType(const typename MatType::elem_type alpha) : Layer(), alpha(alpha) { diff --git a/src/mlpack/methods/ann/layer/mean_pooling_impl.hpp b/src/mlpack/methods/ann/layer/mean_pooling_impl.hpp index 420e7c12ce..5f1cf434d0 100644 --- a/src/mlpack/methods/ann/layer/mean_pooling_impl.hpp +++ b/src/mlpack/methods/ann/layer/mean_pooling_impl.hpp @@ -376,7 +376,7 @@ void MeanPoolingType::Unpooling( rowEnd = output.n_rows - 1; } - arma::mat OutputArea = output(arma::span(i, rowEnd), arma::span(j, colEnd)); + MatType OutputArea = output(arma::span(i, rowEnd), arma::span(j, colEnd)); unpooledError = arma::Mat(OutputArea.n_rows, OutputArea.n_cols); unpooledError.fill(error(rowidx, colidx) / OutputArea.n_elem);