Logo ROOT   master
Reference Guide
TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t > Class Template Reference

template<typename Architecture_t>
class TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >

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 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
 
using AlgorithmDataType_t = typename Architecture_t::AlgorithmDataType_t
 
using AlgorithmForward_t = typename Architecture_t::AlgorithmForward_t
 
using AlgorithmHelper_t = typename Architecture_t::AlgorithmHelper_t
 
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 (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. More...
 
 TMaxPoolLayer (TMaxPoolLayer< Architecture_t > *layer)
 Copy the max pooling layer provided as a pointer. More...
 
 TMaxPoolLayer (const TMaxPoolLayer &)
 Copy constructor. More...
 
virtual ~TMaxPoolLayer ()
 Destructor. More...
 
virtual void AddWeightsXMLTo (void *parent)
 Writes the information and the weights about the layer in an XML node. More...
 
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. More...
 
void Forward (Tensor_t &input, bool applyDropout=true)
 Computes activation of the layer for the given input. More...
 
TDescriptorsGetDescriptors ()
 
const TDescriptorsGetDescriptors () const
 
Scalar_t GetDropoutProbability () const
 
size_t GetFilterDepth () const
 Getters. More...
 
size_t GetFilterHeight () const
 
size_t GetFilterWidth () const
 
const Tensor_tGetIndexTensor () const
 
Tensor_tGetIndexTensor ()
 
size_t GetNLocalViews () const
 
size_t GetStrideCols () const
 
size_t GetStrideRows () const
 
TWorkspaceGetWorkspace ()
 
const TWorkspaceGetWorkspace () const
 
void Print () const
 Prints the info about the layer. More...
 
virtual void ReadWeightsFromXML (void *parent)
 Read the information and the weights about the layer from XML node. More...
 
- Public Member Functions inherited from TMVA::DNN::VGeneralLayer< Architecture_t >
 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. More...
 
 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. More...
 
 VGeneralLayer (VGeneralLayer< Architecture_t > *layer)
 Copy the layer provided as a pointer. More...
 
 VGeneralLayer (const VGeneralLayer &)
 Copy Constructor. More...
 
virtual ~VGeneralLayer ()
 Virtual Destructor. More...
 
void CopyBiases (const std::vector< Matrix_t > &otherBiases)
 Copies the biases provided as an input. More...
 
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. More...
 
void CopyWeights (const std::vector< Matrix_t > &otherWeights)
 Copies the weights provided as an input. More...
 
const Tensor_tGetActivationGradients () const
 
Tensor_tGetActivationGradients ()
 
Matrix_t GetActivationGradientsAt (size_t i)
 
const Matrix_tGetActivationGradientsAt (size_t i) const
 
size_t GetBatchSize () const
 Getters. More...
 
const std::vector< Matrix_t > & GetBiases () const
 
std::vector< Matrix_t > & GetBiases ()
 
const Matrix_tGetBiasesAt (size_t i) const
 
Matrix_tGetBiasesAt (size_t i)
 
const std::vector< Matrix_t > & GetBiasGradients () const
 
std::vector< Matrix_t > & GetBiasGradients ()
 
const Matrix_tGetBiasGradientsAt (size_t i) const
 
Matrix_tGetBiasGradientsAt (size_t i)
 
size_t GetDepth () const
 
virtual std::vector< Matrix_tGetExtraLayerParameters () const
 
size_t GetHeight () const
 
EInitialization GetInitialization () const
 
size_t GetInputDepth () const
 
size_t GetInputHeight () const
 
size_t GetInputWidth () const
 
const Tensor_tGetOutput () const
 
Tensor_tGetOutput ()
 
Matrix_t GetOutputAt (size_t i)
 
const Matrix_tGetOutputAt (size_t i) const
 
const std::vector< Matrix_t > & GetWeightGradients () const
 
std::vector< Matrix_t > & GetWeightGradients ()
 
const Matrix_tGetWeightGradientsAt (size_t i) const
 
Matrix_tGetWeightGradientsAt (size_t i)
 
const std::vector< Matrix_t > & GetWeights () const
 
std::vector< Matrix_t > & GetWeights ()
 
const Matrix_tGetWeightsAt (size_t i) const
 
Matrix_tGetWeightsAt (size_t i)
 
size_t GetWidth () const
 
virtual void Initialize ()
 Initialize the weights and biases according to the given initialization method. More...
 
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. More...
 
void SetBatchSize (size_t batchSize)
 Setters. More...
 
void SetDepth (size_t depth)
 
virtual void SetDropoutProbability (Scalar_t)
 Set Dropout probability. More...
 
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. More...
 
void UpdateBiases (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate)
 Updates the biases, given the gradients and the learning rate. More...
 
void UpdateBiasGradients (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate)
 Updates the bias gradients, given some other weight gradients and learning rate. More...
 
void UpdateWeightGradients (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate)
 Updates the weight gradients, given some other weight gradients and learning rate. More...
 
void UpdateWeights (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate)
 Updates the weights, given the gradients and the learning rate,. More...
 
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 More...
 

Protected Attributes

TDescriptorsfDescriptors = nullptr
 Keeps the convolution, activations and filter descriptors. More...
 
Scalar_t fDropoutProbability
 Probability that an input is active. More...
 
size_t fFilterDepth
 The depth of the filter. More...
 
size_t fFilterHeight
 The height of the filter. More...
 
size_t fFilterWidth
 The width of the filter. More...
 
size_t fNLocalViewPixels
 The number of pixels in one local image view. More...
 
size_t fNLocalViews
 The number of local views in one image. More...
 
size_t fStrideCols
 The number of column pixels to slid the filter each step. More...
 
size_t fStrideRows
 The number of row pixels to slid the filter each step. More...
 
TWorkspacefWorkspace = nullptr
 
- Protected Attributes inherited from TMVA::DNN::VGeneralLayer< Architecture_t >
Tensor_t fActivationGradients
 Gradients w.r.t. the activations of this layer. More...
 
size_t fBatchSize
 Batch size used for training and evaluation. More...
 
std::vector< Matrix_tfBiases
 The biases associated to the layer. More...
 
std::vector< Matrix_tfBiasGradients
 Gradients w.r.t. the bias values of the layer. More...
 
size_t fDepth
 The depth of the layer. More...
 
size_t fHeight
 The height of the layer. More...
 
EInitialization fInit
 The initialization method. More...
 
size_t fInputDepth
 The depth of the previous layer or input. More...
 
size_t fInputHeight
 The height of the previous layer or input. More...
 
size_t fInputWidth
 The width of the previous layer or input. More...
 
bool fIsTraining
 Flag indicating the mode. More...
 
Tensor_t fOutput
 Activations of this layer. More...
 
std::vector< Matrix_tfWeightGradients
 Gradients w.r.t. the weights of the layer. More...
 
std::vector< Matrix_tfWeights
 The weights associated to the layer. More...
 
size_t fWidth
 The width of this layer. More...
 

Private Member Functions

void FreeWorkspace ()
 
void InitializeDescriptors ()
 
void InitializeWorkspace ()
 
void ReleaseDescriptors ()
 

Private Attributes

Tensor_t fIndexTensor
 Matrix of indices for the backward pass. More...
 

#include <TMVA/DNN/CNN/MaxPoolLayer.h>

Inheritance diagram for TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >:
[legend]

Member Typedef Documentation

◆ AlgorithmBackward_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmBackward_t = typename Architecture_t::AlgorithmBackward_t

Definition at line 72 of file MaxPoolLayer.h.

◆ AlgorithmDataType_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmDataType_t = typename Architecture_t::AlgorithmDataType_t

Definition at line 76 of file MaxPoolLayer.h.

◆ AlgorithmForward_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmForward_t = typename Architecture_t::AlgorithmForward_t

Definition at line 71 of file MaxPoolLayer.h.

◆ AlgorithmHelper_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmHelper_t = typename Architecture_t::AlgorithmHelper_t

Definition at line 73 of file MaxPoolLayer.h.

◆ HelperDescriptor_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::HelperDescriptor_t = typename Architecture_t::DropoutDescriptor_t

Definition at line 68 of file MaxPoolLayer.h.

◆ LayerDescriptor_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::LayerDescriptor_t = typename Architecture_t::PoolingDescriptor_t

Definition at line 66 of file MaxPoolLayer.h.

◆ Matrix_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Matrix_t = typename Architecture_t::Matrix_t

Definition at line 63 of file MaxPoolLayer.h.

◆ ReduceTensorDescriptor_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::ReduceTensorDescriptor_t = typename Architecture_t::ReduceTensorDescriptor_t

Definition at line 78 of file MaxPoolLayer.h.

◆ Scalar_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Scalar_t = typename Architecture_t::Scalar_t

Definition at line 64 of file MaxPoolLayer.h.

◆ Tensor_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Tensor_t = typename Architecture_t::Tensor_t

Definition at line 62 of file MaxPoolLayer.h.

◆ WeightsDescriptor_t

template<typename Architecture_t>
using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::WeightsDescriptor_t = typename Architecture_t::EmptyDescriptor_t

Definition at line 67 of file MaxPoolLayer.h.

Constructor & Destructor Documentation

◆ TMaxPoolLayer() [1/3]

template<typename Architecture_t >
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.

◆ TMaxPoolLayer() [2/3]

template<typename Architecture_t >
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.

◆ TMaxPoolLayer() [3/3]

template<typename Architecture_t >
TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer ( const TMaxPoolLayer< Architecture_t > &  layer)

Copy constructor.

Definition at line 204 of file MaxPoolLayer.h.

◆ ~TMaxPoolLayer()

template<typename Architecture_t >
TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::~TMaxPoolLayer ( )
virtual

Destructor.

Definition at line 216 of file MaxPoolLayer.h.

Member Function Documentation

◆ AddWeightsXMLTo()

template<typename Architecture_t >
void TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AddWeightsXMLTo ( void parent)
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.

◆ Backward()

template<typename Architecture_t >
auto TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Backward ( Tensor_t gradients_backward,
const Tensor_t activations_backward 
)
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.

◆ Forward()

template<typename Architecture_t >
auto TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Forward ( Tensor_t input,
bool  applyDropout = true 
)
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.

◆ FreeWorkspace()

template<typename Architecture_t >
void TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::FreeWorkspace ( )
private

Definition at line 326 of file MaxPoolLayer.h.

◆ GetDescriptors() [1/2]

template<typename Architecture_t>
TDescriptors* TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetDescriptors ( )
inline

Definition at line 159 of file MaxPoolLayer.h.

◆ GetDescriptors() [2/2]

template<typename Architecture_t>
const TDescriptors* TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetDescriptors ( ) const
inline

Definition at line 160 of file MaxPoolLayer.h.

◆ GetDropoutProbability()

template<typename Architecture_t>
Scalar_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetDropoutProbability ( ) const
inline

Definition at line 153 of file MaxPoolLayer.h.

◆ GetFilterDepth()

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetFilterDepth ( ) const
inline

Getters.

Definition at line 144 of file MaxPoolLayer.h.

◆ GetFilterHeight()

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetFilterHeight ( ) const
inline

Definition at line 145 of file MaxPoolLayer.h.

◆ GetFilterWidth()

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetFilterWidth ( ) const
inline

Definition at line 146 of file MaxPoolLayer.h.

◆ GetIndexTensor() [1/2]

template<typename Architecture_t>
const Tensor_t& TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetIndexTensor ( ) const
inline

Definition at line 155 of file MaxPoolLayer.h.

◆ GetIndexTensor() [2/2]

template<typename Architecture_t>
Tensor_t& TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetIndexTensor ( )
inline

Definition at line 156 of file MaxPoolLayer.h.

◆ GetNLocalViews()

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetNLocalViews ( ) const
inline

Definition at line 151 of file MaxPoolLayer.h.

◆ GetStrideCols()

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetStrideCols ( ) const
inline

Definition at line 149 of file MaxPoolLayer.h.

◆ GetStrideRows()

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetStrideRows ( ) const
inline

Definition at line 148 of file MaxPoolLayer.h.

◆ GetWorkspace() [1/2]

template<typename Architecture_t>
TWorkspace* TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetWorkspace ( )
inline

Definition at line 162 of file MaxPoolLayer.h.

◆ GetWorkspace() [2/2]

template<typename Architecture_t>
const TWorkspace* TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::GetWorkspace ( ) const
inline

Definition at line 163 of file MaxPoolLayer.h.

◆ InitializeDescriptors()

template<typename Architecture_t >
void TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::InitializeDescriptors ( )
private

Definition at line 304 of file MaxPoolLayer.h.

◆ InitializeWorkspace()

template<typename Architecture_t >
void TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::InitializeWorkspace ( )
private

Definition at line 315 of file MaxPoolLayer.h.

◆ Print()

template<typename Architecture_t >
auto TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Print ( ) const
virtual

Prints the info about the layer.

Implements TMVA::DNN::VGeneralLayer< Architecture_t >.

Definition at line 264 of file MaxPoolLayer.h.

◆ ReadWeightsFromXML()

template<typename Architecture_t >
void TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::ReadWeightsFromXML ( void parent)
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.

◆ ReleaseDescriptors()

template<typename Architecture_t >
void TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::ReleaseDescriptors ( )
private

Definition at line 309 of file MaxPoolLayer.h.

Member Data Documentation

◆ fDescriptors

template<typename Architecture_t>
TDescriptors* TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fDescriptors = nullptr
protected

Keeps the convolution, activations and filter descriptors.

Definition at line 93 of file MaxPoolLayer.h.

◆ fDropoutProbability

template<typename Architecture_t>
Scalar_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fDropoutProbability
protected

Probability that an input is active.

Definition at line 91 of file MaxPoolLayer.h.

◆ fFilterDepth

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fFilterDepth
protected

The depth of the filter.

Definition at line 81 of file MaxPoolLayer.h.

◆ fFilterHeight

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fFilterHeight
protected

The height of the filter.

Definition at line 82 of file MaxPoolLayer.h.

◆ fFilterWidth

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fFilterWidth
protected

The width of the filter.

Definition at line 83 of file MaxPoolLayer.h.

◆ fIndexTensor

template<typename Architecture_t>
Tensor_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fIndexTensor
private

Matrix of indices for the backward pass.

Definition at line 98 of file MaxPoolLayer.h.

◆ fNLocalViewPixels

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fNLocalViewPixels
protected

The number of pixels in one local image view.

Definition at line 88 of file MaxPoolLayer.h.

◆ fNLocalViews

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fNLocalViews
protected

The number of local views in one image.

Definition at line 89 of file MaxPoolLayer.h.

◆ fStrideCols

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fStrideCols
protected

The number of column pixels to slid the filter each step.

Definition at line 86 of file MaxPoolLayer.h.

◆ fStrideRows

template<typename Architecture_t>
size_t TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fStrideRows
protected

The number of row pixels to slid the filter each step.

Definition at line 85 of file MaxPoolLayer.h.

◆ fWorkspace

template<typename Architecture_t>
TWorkspace* TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::fWorkspace = nullptr
protected

Definition at line 95 of file MaxPoolLayer.h.


The documentation for this class was generated from the following file: