AIfES 2  2.0.0
ailayer_maxpool2d Struct Reference

General layer structure. More...

#include <ailayer_maxpool2d.h>

Data Fields

ailayer_t base
 Inherited field members from general ailayer struct.
 
uint16_t result_shape [4]
 The shape of the result.
 
Layer configuration

Required configuration parameters for the layer

These fields have to be configured by the user before calling the initializer function.

uint16_t pool_size [2]
 Size of the pooling kernel ( \( [H_{pool}, W_{pool}] \)).
 
uint16_t stride [2]
 The stride in the direction of height and width ( \( [S_{h}, S_{w}] \)).
 
uint16_t padding [2]
 The (symmetric) minus infinity padding in the direction of height and width ( \( [P_{h}, P_{w}], \; 0 \leq P_h < H_{pool}, 0 \leq P_w < W_{pool} \)).
 
int8_t channel_axis
 Index of the channel axis (1 for channels first and -1 or 3 for channels last).
 
Training parameters

Data fields required for the training of the layer

uint32_t * max_locations
 Pointer to memory section where the indices of the maximum values per pooling window are stored.
 
void * optimem [2]
 Memory field used by the optimizer for training.
 
Math functions

Required data type specific math functions

void(* maxpool2d_fwd )(const aitensor_t *input, const uint16_t pool_size[2], const uint16_t stride[2], const uint16_t padding[2], int8_t channel_axis, void *work_space, uint32_t *max_locations, aitensor_t *output)
 Required math function: 2D Max-Pooling. More...
 
void(* maxpool2d_bwd )(const aitensor_t *delta_out, const uint16_t pool_size[2], const uint16_t stride[2], const uint16_t padding[2], int8_t channel_axis, void *work_space, const uint32_t *max_locations, aitensor_t *delta_in)
 Required math function: Gradients of 2D Max-Pooling with respect to the input. More...
 

Detailed Description

General layer structure.

Field Documentation

◆ maxpool2d_bwd

void(* maxpool2d_bwd) (const aitensor_t *delta_out, const uint16_t pool_size[2], const uint16_t stride[2], const uint16_t padding[2], int8_t channel_axis, void *work_space, const uint32_t *max_locations, aitensor_t *delta_in)

Required math function: Gradients of 2D Max-Pooling with respect to the input.

Requires a math function that calculates the gradients with respect to the input \( delta_{in} = \mathrm{d} L / \mathrm{d} x_{in} \).

This is done by simply copying the output gradient to the position in the input gradients depicted by max_locations.
An element of max_locations consist of the concatenated 16-bit indices for height and width in the pooling window.

Parameters
delta_outGradients backpropagated from the following layer with dimension \( [N,C,H_{out},W_{out}] \) (channels first) or \( [N,H_{out},W_{out},C] \) (channels last)
pool_sizeThe size of the pooling window (height and width)
strideThe stride in the direction of height and width.
paddingThe (symmetric) minus infinity padding in the direction of height and width
channel_axisIndex of the channel axis (1 for channels first and -1 or 3 for channels last).
workspacePointer to a work space buffer for intermediate results.
max_locationsPointer to memory section where the indices of the maximum values per pooling window are stored.
delta_inResulting input gradients for backpropagation to the previous layer \( [N,C,H_{in},W_{in}] \) (channels first) or \( [N,H_{in},W_{in},C] \) (channels last)

◆ maxpool2d_fwd

void(* maxpool2d_fwd) (const aitensor_t *input, const uint16_t pool_size[2], const uint16_t stride[2], const uint16_t padding[2], int8_t channel_axis, void *work_space, uint32_t *max_locations, aitensor_t *output)

Required math function: 2D Max-Pooling.

Requires a math function that extracts the maximum from a kernel window.

For training (max_locations != 0), the index of the max-value in the kernel window must be stored in max_locations.
An element of max_locations simply consist of the concatenated 16-bit indices for height and width in the pooling window.

Parameters
inputInput data with dimension \( [N,C,H_{in},W_{in}] \) (channels first) or \( [N,H_{in},W_{in},C] \) (channels last)
pool_sizeThe size of the pooling window (height and width)
strideThe stride in the direction of height and width.
paddingThe (symmetric) minus infinity padding in the direction of height and width
channel_axisIndex of the channel axis (1 for channels first and -1 or 3 for channels last).
workspacePointer to a work space buffer for intermediate results.
max_locationsPointer to memory section where the indices of the maximum values per pooling window are stored.
outputOutput after max-pooling with dimension \( [N,C,H_{out},W_{out}] \) (channels first) or \( [N,H_{out},W_{out},C] \) (channels last)

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