Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mpscnnpoolingmaxgradient(3) [mojave man page]

MPSCNNPoolingMaxGradient(3)				 MetalPerformanceShaders.framework			       MPSCNNPoolingMaxGradient(3)

NAME
MPSCNNPoolingMaxGradient SYNOPSIS
#import <MPSCNNPooling.h> Inherits MPSCNNPoolingGradient. Instance Methods (nonnull instancetype) - initWithDevice:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY: (nullable instancetype) - initWithCoder:device: Additional Inherited Members Detailed Description This depends on Metal.framework Specifies the filter for computing the gradient of the max pooling filter. The operation backpropagates a gradient vector using chain rule. Dilated Max pooling forward pass is defined as: out(x) = max_{dx in Window(x)} in(s*x+D*dx), where the pooling window definition 'Window(x)' follows MPSCNNPooling specification, 's' is the pixel stride and in() is the source input image and D is the dilation factor. For MPSCNNPoolingMaxGradient the dilationRate 'D' is one. NOTE: For even-sized pooling windows with dilation rate greater than one the effective pooling window is centered around s*x with non-even windows leaning towards top-left corner. For example if kernel width = 2, dilation rate = 3, then the pooling considers positions '-2' and '+1' relative to the pooling window center 's*x'. Hence the partial derivative of the output value wrt. to the input value needed in the gradient backpropagation in MPSCNNPoolingGradient is: d out(x)/d in(y) = delta_{x_m, y}, where delta_{x,y} is the Kronecker delta symbol (see MPSCNNPoolingAverageGradient) and x_m is the index of the maximum value in the corresponding pooling window. In practice this means that the gradient value for the destination image at pixel 'x' is the sum over these contributions coming from all pooling windows that contribute to the max pooling computation in the forward pass, multiplied by the input gradient value in the source area of the corresponding pooling window. If there are multiple maximal values within a single pooling window one of them is picked for the gradient and this decision is implementation specific, which means that it can vary between different architectures and even between different filter parameters. Note: The gradient max pooling needs the secondary input image in order to compute the indices of maximal values for each pooling window, but this means redundant computations. Later we may add encode calls to MPSCNNPoolingMax that produce a state that contains the coordinates of the maximal values to be consumed by the gradient filters. Method Documentation - (nullable instancetype) initWithCoder: (NSCoder *__nonnull) aDecoder(nonnull id< MTLDevice >) device NSSecureCoding compatability See MPSKernel::initWithCoder. Parameters: aDecoder The NSCoder subclass with your serialized MPSCNNPoolingMaxGradient device The MTLDevice on which to make the MPSCNNPoolingMaxGradient Returns: A new MPSCNNPoolingMaxGradient object, or nil if failure. Reimplemented from MPSCNNPoolingGradient. - (nonnull instancetype) initWithDevice: (nonnull id< MTLDevice >) device(NSUInteger) kernelWidth(NSUInteger) kernelHeight(NSUInteger) strideInPixelsX(NSUInteger) strideInPixelsY Initialize a gradient max pooling filter Parameters: device The device the filter will run on kernelWidth The width of the kernel. Can be an odd or even value. kernelHeight The height of the kernel. Can be an odd or even value. strideInPixelsX The input stride (upsampling factor) in the x dimension. strideInPixelsY The input stride (upsampling factor) in the y dimension. Returns: A valid MPSCNNPoolingGradient object or nil, if failure. Reimplemented from MPSCNNPoolingGradient. Author Generated automatically by Doxygen for MetalPerformanceShaders.framework from the source code. Version MetalPerformanceShaders-100 Thu Feb 8 2018 MPSCNNPoolingMaxGradient(3)
Man Page