Style fix

Use Padding layer pointer
This commit is contained in:
Saksham Bansal
2019-08-16 14:02:12 +05:30
parent e137068dec
commit 4a0aaf99d4
4 changed files with 40 additions and 25 deletions
+1 -1
View File
@@ -282,7 +282,7 @@ class Convolution
arma::cube gradientTemp;
//! Locally-stored padding layer.
LayerTypes<> padding;
Padding<>* padding;
//! Locally-stored delta object.
OutputDataType delta;
@@ -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)));
}
}
+18 -8
View File
@@ -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;
+18 -11
View File
@@ -21,10 +21,14 @@ namespace ann /** Artificial Neural Network. */ {
template<typename InputDataType, typename OutputDataType>
Padding<InputDataType, OutputDataType>::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<InputDataType, OutputDataType>::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<typename InputDataType, typename OutputDataType>
@@ -50,8 +55,8 @@ void Padding<InputDataType, OutputDataType>::Backward(
const arma::Mat<eT>&& gy,
arma::Mat<eT>&& g)
{
g = gy.submat(padW, padH, padW + nRows - 1,
padH + nCols - 1);
g = gy.submat(padWLeft, padHTop, padWLeft + nRows - 1,
padHTop + nCols - 1);
}
template<typename InputDataType, typename OutputDataType>
@@ -59,8 +64,10 @@ template<typename Archive>
void Padding<InputDataType, OutputDataType>::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