@@ -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;
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ void BatchNormType<MatType>::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;
|
||||
|
||||
@@ -68,13 +68,14 @@ template<typename MatType>
|
||||
void CReLUType<MatType>::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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,10 +374,10 @@ class ConvolutionType : public Layer<MatType>
|
||||
arma::Cube<typename MatType::elem_type> gradientTemp;
|
||||
|
||||
//! Locally-stored padding layer.
|
||||
Padding padding;
|
||||
PaddingType<MatType> padding;
|
||||
|
||||
//! Locally-stored padding layer for backward pass.
|
||||
Padding paddingBackward;
|
||||
PaddingType<MatType> paddingBackward;
|
||||
|
||||
//! Type of padding.
|
||||
std::string paddingType;
|
||||
|
||||
@@ -573,7 +573,7 @@ void ConvolutionType<
|
||||
InitializeSamePadding();
|
||||
}
|
||||
|
||||
padding = Padding(padWLeft, padWRight, padHTop, padHBottom);
|
||||
padding = PaddingType<MatType>(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<MatType>(0, padding.OutputDimensions()[0] -
|
||||
apparentWidth, 0, padding.OutputDimensions()[1] - apparentHeight);
|
||||
paddingBackward.InputDimensions() = std::vector<size_t>({ apparentWidth,
|
||||
apparentHeight, inMaps * higherInDimensions });
|
||||
|
||||
@@ -390,10 +390,10 @@ class GroupedConvolutionType : public Layer<MatType>
|
||||
arma::Cube<typename MatType::elem_type> gradientTemp;
|
||||
|
||||
//! Locally-stored padding layer.
|
||||
Padding padding;
|
||||
PaddingType<MatType> padding;
|
||||
|
||||
//! Locally-stored padding layer for backward pass.
|
||||
Padding paddingBackward;
|
||||
PaddingType<MatType> paddingBackward;
|
||||
|
||||
//! Type of padding.
|
||||
std::string paddingType;
|
||||
|
||||
@@ -612,7 +612,7 @@ void GroupedConvolutionType<
|
||||
InitializeSamePadding();
|
||||
}
|
||||
|
||||
padding = Padding(padWLeft, padWRight, padHTop, padHBottom);
|
||||
padding = PaddingType<MatType>(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<MatType>(0, padding.OutputDimensions()[0] -
|
||||
apparentWidth, 0, padding.OutputDimensions()[1] - apparentHeight);
|
||||
paddingBackward.InputDimensions() = std::vector<size_t>({ apparentWidth,
|
||||
apparentHeight, inMaps * higherInDimensions });
|
||||
|
||||
@@ -47,7 +47,7 @@ class LeakyReLUType : public Layer<MatType>
|
||||
*
|
||||
* @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<MatType>
|
||||
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<typename Archive>
|
||||
@@ -95,7 +95,7 @@ class LeakyReLUType : public Layer<MatType>
|
||||
|
||||
private:
|
||||
//! Leakyness Parameter in the range 0 <alpha< 1
|
||||
double alpha;
|
||||
typename MatType::elem_type alpha;
|
||||
}; // class LeakyReLUType
|
||||
|
||||
// Convenience typedefs.
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
namespace mlpack {
|
||||
|
||||
template<typename MatType>
|
||||
LeakyReLUType<MatType>::LeakyReLUType(const double alpha) :
|
||||
LeakyReLUType<MatType>::LeakyReLUType(const typename MatType::elem_type alpha) :
|
||||
Layer<MatType>(),
|
||||
alpha(alpha)
|
||||
{
|
||||
|
||||
@@ -376,7 +376,7 @@ void MeanPoolingType<MatType>::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<typename MatType::elem_type>(OutputArea.n_rows, OutputArea.n_cols);
|
||||
unpooledError.fill(error(rowidx, colidx) / OutputArea.n_elem);
|
||||
|
||||
Reference in New Issue
Block a user