Merge pull request #3534 from shrit/float

Float -- episode 1
This commit is contained in:
Omar Shrit
2023-09-20 17:05:44 +02:00
committed by GitHub
10 changed files with 19 additions and 18 deletions
+1 -1
View File
@@ -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;
+3 -2
View File
@@ -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);
}
}
}
+2 -2
View File
@@ -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 });
+4 -4
View File
@@ -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);