Generic Max Pooling Layer class.
This generic Max Pooling Layer Class represents a pooling layer of a CNN. It inherits all of the properties of the convolutional layer TConvLayer, but it overrides the propagation methods. In a sense, max pooling can be seen as non-linear convolution: a filter slides over the input and produces one element as a function of the elements within the receptive field. In addition to that, it contains a matrix of winning units.
The height and width of the weights and biases is set to 0, since this layer does not contain any weights.
Definition at line 59 of file MaxPoolLayer.h.
Public Types | |
using | AlgorithmBackward_t = typename Architecture_t::AlgorithmBackward_t |
Backward layer operation. | |
using | AlgorithmDataType_t = typename Architecture_t::AlgorithmDataType_t |
using | AlgorithmForward_t = typename Architecture_t::AlgorithmForward_t |
Forward layer operation. | |
using | AlgorithmHelper_t = typename Architecture_t::AlgorithmHelper_t |
Used for weight grad backward pass. | |
using | HelperDescriptor_t = typename Architecture_t::DropoutDescriptor_t |
using | LayerDescriptor_t = typename Architecture_t::PoolingDescriptor_t |
using | Matrix_t = typename Architecture_t::Matrix_t |
using | ReduceTensorDescriptor_t = typename Architecture_t::ReduceTensorDescriptor_t |
using | Scalar_t = typename Architecture_t::Scalar_t |
using | Tensor_t = typename Architecture_t::Tensor_t |
using | WeightsDescriptor_t = typename Architecture_t::EmptyDescriptor_t |
Public Member Functions | |
TMaxPoolLayer (const TMaxPoolLayer &) | |
Copy constructor. | |
TMaxPoolLayer (size_t BatchSize, size_t InputDepth, size_t InputHeight, size_t InputWidth, size_t FilterHeight, size_t FilterWidth, size_t StrideRows, size_t StrideCols, Scalar_t DropoutProbability) | |
Constructor. | |
TMaxPoolLayer (TMaxPoolLayer< Architecture_t > *layer) | |
Copy the max pooling layer provided as a pointer. | |
virtual | ~TMaxPoolLayer () |
Destructor. | |
virtual void | AddWeightsXMLTo (void *parent) |
Writes the information and the weights about the layer in an XML node. | |
void | Backward (Tensor_t &gradients_backward, const Tensor_t &activations_backward) |
Depending on the winning units determined during the Forward pass, it only forwards the derivatives to the right units in the previous layer. | |
void | Forward (Tensor_t &input, bool applyDropout=true) |
Computes activation of the layer for the given input. | |
TDescriptors * | GetDescriptors () |
const TDescriptors * | GetDescriptors () const |
Scalar_t | GetDropoutProbability () const |
size_t | GetFilterDepth () const |
Getters. | |
size_t | GetFilterHeight () const |
size_t | GetFilterWidth () const |
Tensor_t & | GetIndexTensor () |
const Tensor_t & | GetIndexTensor () const |
size_t | GetNLocalViews () const |
size_t | GetStrideCols () const |
size_t | GetStrideRows () const |
TWorkspace * | GetWorkspace () |
const TWorkspace * | GetWorkspace () const |
void | Print () const |
Prints the info about the layer. | |
virtual void | ReadWeightsFromXML (void *parent) |
Read the information and the weights about the layer from XML node. | |
Public Member Functions inherited from TMVA::DNN::VGeneralLayer< Architecture_t > | |
VGeneralLayer (const VGeneralLayer &) | |
Copy Constructor. | |
VGeneralLayer (size_t BatchSize, size_t InputDepth, size_t InputHeight, size_t InputWidth, size_t Depth, size_t Height, size_t Width, size_t WeightsNSlices, size_t WeightsNRows, size_t WeightsNCols, size_t BiasesNSlices, size_t BiasesNRows, size_t BiasesNCols, size_t OutputNSlices, size_t OutputNRows, size_t OutputNCols, EInitialization Init) | |
Constructor. | |
VGeneralLayer (size_t BatchSize, size_t InputDepth, size_t InputHeight, size_t InputWidth, size_t Depth, size_t Height, size_t Width, size_t WeightsNSlices, std::vector< size_t > WeightsNRows, std::vector< size_t > WeightsNCols, size_t BiasesNSlices, std::vector< size_t > BiasesNRows, std::vector< size_t > BiasesNCols, size_t OutputNSlices, size_t OutputNRows, size_t OutputNCols, EInitialization Init) | |
General Constructor with different weights dimension. | |
VGeneralLayer (VGeneralLayer< Architecture_t > *layer) | |
Copy the layer provided as a pointer. | |
virtual | ~VGeneralLayer () |
Virtual Destructor. | |
void | CopyBiases (const std::vector< Matrix_t > &otherBiases) |
Copies the biases provided as an input. | |
template<typename Arch > | |
void | CopyParameters (const VGeneralLayer< Arch > &layer) |
Copy all trainable weight and biases from another equivalent layer but with different architecture The function can copy also extra parameters in addition to weights and biases if they are return by the function GetExtraLayerParameters. | |
void | CopyWeights (const std::vector< Matrix_t > &otherWeights) |
Copies the weights provided as an input. | |
Tensor_t & | GetActivationGradients () |
const Tensor_t & | GetActivationGradients () const |
Matrix_t | GetActivationGradientsAt (size_t i) |
const Matrix_t & | GetActivationGradientsAt (size_t i) const |
size_t | GetBatchSize () const |
Getters. | |
std::vector< Matrix_t > & | GetBiases () |
const std::vector< Matrix_t > & | GetBiases () const |
Matrix_t & | GetBiasesAt (size_t i) |
const Matrix_t & | GetBiasesAt (size_t i) const |
std::vector< Matrix_t > & | GetBiasGradients () |
const std::vector< Matrix_t > & | GetBiasGradients () const |
Matrix_t & | GetBiasGradientsAt (size_t i) |
const Matrix_t & | GetBiasGradientsAt (size_t i) const |
size_t | GetDepth () const |
virtual std::vector< Matrix_t > | GetExtraLayerParameters () const |
size_t | GetHeight () const |
EInitialization | GetInitialization () const |
size_t | GetInputDepth () const |
size_t | GetInputHeight () const |
size_t | GetInputWidth () const |
Tensor_t & | GetOutput () |
const Tensor_t & | GetOutput () const |
Matrix_t | GetOutputAt (size_t i) |
const Matrix_t & | GetOutputAt (size_t i) const |
std::vector< Matrix_t > & | GetWeightGradients () |
const std::vector< Matrix_t > & | GetWeightGradients () const |
Matrix_t & | GetWeightGradientsAt (size_t i) |
const Matrix_t & | GetWeightGradientsAt (size_t i) const |
std::vector< Matrix_t > & | GetWeights () |
const std::vector< Matrix_t > & | GetWeights () const |
Matrix_t & | GetWeightsAt (size_t i) |
const Matrix_t & | GetWeightsAt (size_t i) const |
size_t | GetWidth () const |
virtual void | Initialize () |
Initialize the weights and biases according to the given initialization method. | |
bool | IsTraining () const |
void | ReadMatrixXML (void *node, const char *name, Matrix_t &matrix) |
virtual void | ResetTraining () |
Reset some training flags after a loop on all batches Some layer (e.g. | |
void | SetBatchSize (size_t batchSize) |
Setters. | |
void | SetDepth (size_t depth) |
virtual void | SetDropoutProbability (Scalar_t) |
Set Dropout probability. | |
virtual void | SetExtraLayerParameters (const std::vector< Matrix_t > &) |
void | SetHeight (size_t height) |
void | SetInputDepth (size_t inputDepth) |
void | SetInputHeight (size_t inputHeight) |
void | SetInputWidth (size_t inputWidth) |
void | SetIsTraining (bool isTraining) |
void | SetWidth (size_t width) |
void | Update (const Scalar_t learningRate) |
Updates the weights and biases, given the learning rate. | |
void | UpdateBiases (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate) |
Updates the biases, given the gradients and the learning rate. | |
void | UpdateBiasGradients (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate) |
Updates the bias gradients, given some other weight gradients and learning rate. | |
void | UpdateWeightGradients (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate) |
Updates the weight gradients, given some other weight gradients and learning rate. | |
void | UpdateWeights (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate) |
Updates the weights, given the gradients and the learning rate,. | |
void | WriteMatrixToXML (void *node, const char *name, const Matrix_t &matrix) |
void | WriteTensorToXML (void *node, const char *name, const std::vector< Matrix_t > &tensor) |
helper functions for XML | |
Protected Attributes | |
TDescriptors * | fDescriptors = nullptr |
Keeps the convolution, activations and filter descriptors. | |
Scalar_t | fDropoutProbability |
Probability that an input is active. | |
size_t | fFilterDepth |
The depth of the filter. | |
size_t | fFilterHeight |
The height of the filter. | |
size_t | fFilterWidth |
The width of the filter. | |
size_t | fNLocalViewPixels |
The number of pixels in one local image view. | |
size_t | fNLocalViews |
The number of local views in one image. | |
size_t | fStrideCols |
The number of column pixels to slid the filter each step. | |
size_t | fStrideRows |
The number of row pixels to slid the filter each step. | |
TWorkspace * | fWorkspace = nullptr |
Protected Attributes inherited from TMVA::DNN::VGeneralLayer< Architecture_t > | |
Tensor_t | fActivationGradients |
Gradients w.r.t. the activations of this layer. | |
size_t | fBatchSize |
Batch size used for training and evaluation. | |
std::vector< Matrix_t > | fBiases |
The biases associated to the layer. | |
std::vector< Matrix_t > | fBiasGradients |
Gradients w.r.t. the bias values of the layer. | |
size_t | fDepth |
The depth of the layer. | |
size_t | fHeight |
The height of the layer. | |
EInitialization | fInit |
The initialization method. | |
size_t | fInputDepth |
The depth of the previous layer or input. | |
size_t | fInputHeight |
The height of the previous layer or input. | |
size_t | fInputWidth |
The width of the previous layer or input. | |
bool | fIsTraining |
Flag indicating the mode. | |
Tensor_t | fOutput |
Activations of this layer. | |
std::vector< Matrix_t > | fWeightGradients |
Gradients w.r.t. the weights of the layer. | |
std::vector< Matrix_t > | fWeights |
The weights associated to the layer. | |
size_t | fWidth |
The width of this layer. | |
Private Member Functions | |
void | FreeWorkspace () |
void | InitializeDescriptors () |
void | InitializeWorkspace () |
void | ReleaseDescriptors () |
Private Attributes | |
Tensor_t | fIndexTensor |
Matrix of indices for the backward pass. | |
#include <TMVA/DNN/CNN/MaxPoolLayer.h>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmBackward_t = typename Architecture_t::AlgorithmBackward_t |
Backward layer operation.
Definition at line 72 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmDataType_t = typename Architecture_t::AlgorithmDataType_t |
Definition at line 76 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmForward_t = typename Architecture_t::AlgorithmForward_t |
Forward layer operation.
Definition at line 71 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmHelper_t = typename Architecture_t::AlgorithmHelper_t |
Used for weight grad backward pass.
Definition at line 73 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::HelperDescriptor_t = typename Architecture_t::DropoutDescriptor_t |
Definition at line 68 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::LayerDescriptor_t = typename Architecture_t::PoolingDescriptor_t |
Definition at line 66 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Matrix_t = typename Architecture_t::Matrix_t |
Definition at line 63 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::ReduceTensorDescriptor_t = typename Architecture_t::ReduceTensorDescriptor_t |
Definition at line 78 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Scalar_t = typename Architecture_t::Scalar_t |
Definition at line 64 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Tensor_t = typename Architecture_t::Tensor_t |
Definition at line 62 of file MaxPoolLayer.h.
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::WeightsDescriptor_t = typename Architecture_t::EmptyDescriptor_t |
Definition at line 67 of file MaxPoolLayer.h.
TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer | ( | size_t | BatchSize, |
size_t | InputDepth, | ||
size_t | InputHeight, | ||
size_t | InputWidth, | ||
size_t | FilterHeight, | ||
size_t | FilterWidth, | ||
size_t | StrideRows, | ||
size_t | StrideCols, | ||
Scalar_t | DropoutProbability | ||
) |
Constructor.
Definition at line 168 of file MaxPoolLayer.h.
TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer | ( | TMaxPoolLayer< Architecture_t > * | layer | ) |
Copy the max pooling layer provided as a pointer.
Definition at line 192 of file MaxPoolLayer.h.
TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer | ( | const TMaxPoolLayer< Architecture_t > & | layer | ) |
Copy constructor.
Definition at line 204 of file MaxPoolLayer.h.
|
virtual |
Destructor.
Definition at line 216 of file MaxPoolLayer.h.
|
virtual |
Writes the information and the weights about the layer in an XML node.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 283 of file MaxPoolLayer.h.
|
virtual |
Depending on the winning units determined during the Forward pass, it only forwards the derivatives to the right units in the previous layer.
Must only be called directly at the corresponding call to Forward(...).
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 247 of file MaxPoolLayer.h.
|
virtual |
Computes activation of the layer for the given input.
The input must be in 3D tensor form with the different matrices corresponding to different events in the batch. It spatially downsamples the input matrices.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 233 of file MaxPoolLayer.h.
|
private |
Definition at line 326 of file MaxPoolLayer.h.
|
inline |
Definition at line 159 of file MaxPoolLayer.h.
|
inline |
Definition at line 160 of file MaxPoolLayer.h.
|
inline |
Definition at line 153 of file MaxPoolLayer.h.
|
inline |
Getters.
Definition at line 144 of file MaxPoolLayer.h.
|
inline |
Definition at line 145 of file MaxPoolLayer.h.
|
inline |
Definition at line 146 of file MaxPoolLayer.h.
|
inline |
Definition at line 156 of file MaxPoolLayer.h.
|
inline |
Definition at line 155 of file MaxPoolLayer.h.
|
inline |
Definition at line 151 of file MaxPoolLayer.h.
|
inline |
Definition at line 149 of file MaxPoolLayer.h.
|
inline |
Definition at line 148 of file MaxPoolLayer.h.
|
inline |
Definition at line 162 of file MaxPoolLayer.h.
|
inline |
Definition at line 163 of file MaxPoolLayer.h.
|
private |
Definition at line 304 of file MaxPoolLayer.h.
|
private |
Definition at line 315 of file MaxPoolLayer.h.
|
virtual |
Prints the info about the layer.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 264 of file MaxPoolLayer.h.
|
virtual |
Read the information and the weights about the layer from XML node.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 297 of file MaxPoolLayer.h.
|
private |
Definition at line 309 of file MaxPoolLayer.h.
|
protected |
Keeps the convolution, activations and filter descriptors.
Definition at line 93 of file MaxPoolLayer.h.
|
protected |
Probability that an input is active.
Definition at line 91 of file MaxPoolLayer.h.
|
protected |
The depth of the filter.
Definition at line 81 of file MaxPoolLayer.h.
|
protected |
The height of the filter.
Definition at line 82 of file MaxPoolLayer.h.
|
protected |
The width of the filter.
Definition at line 83 of file MaxPoolLayer.h.
|
private |
Matrix of indices for the backward pass.
Definition at line 98 of file MaxPoolLayer.h.
|
protected |
The number of pixels in one local image view.
Definition at line 88 of file MaxPoolLayer.h.
|
protected |
The number of local views in one image.
Definition at line 89 of file MaxPoolLayer.h.
|
protected |
The number of column pixels to slid the filter each step.
Definition at line 86 of file MaxPoolLayer.h.
|
protected |
The number of row pixels to slid the filter each step.
Definition at line 85 of file MaxPoolLayer.h.
|
protected |
Definition at line 95 of file MaxPoolLayer.h.