manpagez: man pages & more
man MPSCNNConvolutionDescriptor(3)
Home | html | info | man
MPSCNNConvolutionDescriptor(3)




NAME

       MPSCNNConvolutionDescriptor


SYNOPSIS

       #import <MPSCNNConvolution.h>

       Inherits NSObject, <NSSecureCoding>, and <NSCopying>.

       Inherited by MPSCNNDepthWiseConvolutionDescriptor, and
       MPSCNNSubPixelConvolutionDescriptor.

   Instance Methods
       (void) - encodeWithCoder:
       (nullable instancetype) - initWithCoder:
       (void) -
           setBatchNormalizationParametersForInferenceWithMean:variance:gamma:beta:epsilon:
       (void) - setNeuronType:parameterA:parameterB:
       (MPSCNNNeuronType) - neuronType
       (float) - neuronParameterA
       (float) - neuronParameterB
       (void) - setNeuronPReLUParametersA:

   Class Methods
       (nonnull instancetype) +
           cnnConvolutionDescriptorWithKernelWidth:kernelHeight:inputFeatureChannels:outputFeatureChannels:neuronFilter:
       (nonnull instancetype) +
           cnnConvolutionDescriptorWithKernelWidth:kernelHeight:inputFeatureChannels:outputFeatureChannels:

   Properties
       NSUInteger kernelWidth
       NSUInteger kernelHeight
       NSUInteger inputFeatureChannels
       NSUInteger outputFeatureChannels
       NSUInteger strideInPixelsX
       NSUInteger strideInPixelsY
       NSUInteger groups
       NSUInteger dilationRateX
       NSUInteger dilationRateY
       const MPSCNNNeuron *__nullable neuron
       const MPSCNNNeuron *__nullable BOOL supportsSecureCoding


Detailed Description

       This depends on Metal.framework  The MPSCNNConvolutionDescriptor
       specifies a convolution descriptor


Method Documentation

   + (nonnull instancetype) cnnConvolutionDescriptorWithKernelWidth:
       (NSUInteger) kernelWidth(NSUInteger) kernelHeight(NSUInteger)
       inputFeatureChannels(NSUInteger) outputFeatureChannels
       Creates a convolution descriptor.

       Parameters:
           kernelWidth The width of the filter window. Must be > 0. Large
           values will take a long time.
           kernelHeight The height of the filter window. Must be > 0. Large
           values will take a long time.
           inputFeatureChannels The number of feature channels in the input
           image. Must be >= 1.
           outputFeatureChannels The number of feature channels in the output
           image. Must be >= 1.

       Returns:
           A valid MPSCNNConvolutionDescriptor object or nil, if failure.



   + (nonnull instancetype) cnnConvolutionDescriptorWithKernelWidth:
       (NSUInteger) kernelWidth(NSUInteger) kernelHeight(NSUInteger)
       inputFeatureChannels(NSUInteger) outputFeatureChannels(const
       MPSCNNNeuron *__nullable) neuronFilter
       This method is deprecated. Please use neuronType, neuronParameterA and
       neuronParameterB properites to fuse neuron with convolution.

       Parameters:
           kernelWidth The width of the filter window. Must be > 0. Large
           values will take a long time.
           kernelHeight The height of the filter window. Must be > 0. Large
           values will take a long time.
           inputFeatureChannels The number of feature channels in the input
           image. Must be >= 1.
           outputFeatureChannels The number of feature channels in the output
           image. Must be >= 1.
           neuronFilter An optional neuron filter that can be applied to the
           output of convolution.

       Returns:
           A valid MPSCNNConvolutionDescriptor object or nil, if failure.



   - (void) encodeWithCoder: (NSCoder *__nonnull) aCoder
       <NSSecureCoding> support

   - (nullable instancetype) initWithCoder: (NSCoder *__nonnull) aDecoder
       <NSSecureCoding> support

   - (float) neuronParameterA
       Getter funtion for neuronType set using
       setNeuronType:parameterA:parameterB method

   - (float) neuronParameterB
       Getter funtion for neuronType set using
       setNeuronType:parameterA:parameterB method

   - (MPSCNNNeuronType) neuronType
       Getter funtion for neuronType set using
       setNeuronType:parameterA:parameterB method

   - (void) setBatchNormalizationParametersForInferenceWithMean: (const float
       *__nonnull) mean(const float *__nonnull) variance(const float
       *__nullable) gamma(const float *__nullable) beta(const float) epsilon
       Adds batch normalization for inference, it copies all the float arrays
       provided, expecting outputFeatureChannels elements in each.

       This method will be used to pass in batch normalization parameters to
       the convolution during the init call. For inference we modify weights
       and bias going in convolution or Fully Connected layer to combine and
       optimize the layers.


               w: weights for a corresponding output feature channel
               b: bias for a corresponding output feature channel
               W: batch normalized weights for a corresponding output feature channel
               B: batch normalized bias for a corresponding output feature channel


               I = gamma / sqrt(variance + epsilon), J = beta - ( I * mean )

               W = w * I
               B = b * I + J

               Every convolution has (OutputFeatureChannel * kernelWidth * kernelHeight * InputFeatureChannel) weights

               I, J are calculated, for every output feature channel separately to get the corresponding weights and bias
               Thus, I, J are calculated and then used for every (kernelWidth * kernelHeight * InputFeatureChannel)
               weights, and this is done OutputFeatureChannel number of times for each output channel.

               thus, internally, batch normalized weights are computed as:

               W[no][i][j][ni] = w[no][i][j][ni] * I[no]

               no: index into outputFeatureChannel
               i : index into kernel Height
               j : index into kernel Width
               ni: index into inputFeatureChannel

               One usually doesn't see a bias term and batch normalization together as batch normalization potentially cancels
               out the bias term after training, but in MPS if the user provides it, batch normalization will use the above
               formula to incorporate it, if user does not have bias terms then put a float array of zeroes in the convolution
               init for bias terms of each output feature channel.


               this comes from:
               https://arxiv.org/pdf/1502.03167v3.pdf


       Parameters:
           mean Pointer to an array of floats of mean for each output feature
           channel
           variance Pointer to an array of floats of variance for each output
           feature channel
           gamma Pointer to an array of floats of gamma for each output
           feature channel
           beta Pointer to an array of floats of beta for each output feature
           channel
           epsilon A small float value used to have numerical stability in the
           code



   - (void) setNeuronToPReLUWithParametersA: (NSData *__nonnull) A
       Add per-channel neuron parameters A for PReLu neuron activation
       functions.

       This method can be used to set per-channel neuron parameters A for
       PReLU neuron functions that dictate unique value of this parameter for
       each output feature channel If convolution preceeds this kind of neuron
       / activation function, setting these parameters here has the
       performance advantage of merging the neuron with convolution,
       eliminating a pass. If the neuron function is f(v,a,b), it will apply

          OutputImage(x,y,i) = f( ConvolutionResult(x,y,i), A[i], B[i] ) where i in [0,outputFeatureChannels-1]



       See https://arxiv.org/pdf/1502.01852.pdf for details.

       All other neuron types, where parameter A and parameter B are shared
       across channels must be set using
       setNeuronOfType:parameterA:parameterB. Its an error to call this
       function on any neuronType other than MPSCNNNeuronTypePReLU.

       If batch normalization parameters are set, batch normalization will
       preceed neuron application i.e. output of convolution is first batch
       normalized followed by neuron activation. This function automatically
       sets neuronType to MPSCNNNeuronTypePReLU.

       Parameters:
           A Array containing per-channel float values for neuron parameter A.
           Number of entries must be equal to outputFeatureChannels.



   - (void) setNeuronType: (MPSCNNNeuronType) neuronType(float)
       parameterA(float) parameterB
       Adds a neuron activation function to convolution descriptor.

       This mathod can be used to add a neuron activation funtion of given
       type with associated scalar parameters A and B that are shared across
       all output channels. Neuron activation fucntion is applied to output of
       convolution. This is a per-pixel operation that is fused with
       convolution kernel itself for best performance. Note that this method
       can only be used to fuse neuron of kind for which parameters A and B
       are shared across all channels of convoution output. It is an error to
       call this method for neuron activation functions like
       MPSCNNNeuronTypePReLU, which require per-channel parameter values. For
       those kind of neuron activation functions, use appropriate setter
       functions.

       Parameters:
           neuronType type of neuron activation function. For full list see
           MPSCNNNeuronType.h
           parameterA parameterA of neuron activation that is shared across
           all channels of convolution output.
           parameterB parameterB of neuron activation that is shared across
           all channels of convolution output.




Property Documentation

   - dilationRateX [read],  [write],  [nonatomic],  [assign]
       dilationRateX property can be used to implement dilated convolution as
       described in https://arxiv.org/pdf/1511.07122v3.pdf to aggregate global
       information in dense prediction problems. Default value is 1. When set
       to value > 1, original kernel width, kW is dilated to

         kW_Dilated = (kW-1)*dilationRateX + 1



       by inserting d-1 zeros between consecutive entries in each row of the
       original kernel. The kernel is centered based on kW_Dilated.

   - dilationRateY [read],  [write],  [nonatomic],  [assign]
       dilationRateY property can be used to implement dilated convolution as
       described in https://arxiv.org/pdf/1511.07122v3.pdf to aggregate global
       information in dense prediction problems. Default value is 1. When set
       to value > 1, original kernel height, kH is dilated to

         kH_Dilated = (kH-1)*dilationRateY + 1



       by inserting d-1 rows of zeros between consecutive row of the original
       kernel. The kernel is centered based on kH_Dilated.

   - groups [read],  [write],  [nonatomic],  [assign]
       Number of groups input and output channels are divided into. The
       default value is 1. Groups lets you reduce the parameterization. If
       groups is set to n, input is divided into n groups with
       inputFeatureChannels/n channels in each group. Similarly output is
       divided into n groups with outputFeatureChannels/n channels in each
       group. ith group in input is only connected to ith group in output so
       number of weights (parameters) needed is reduced by factor of n. Both
       inputFeatureChannels and outputFeatureChannels must be divisible by n
       and number of channels in each group must be multiple of 4.

   - inputFeatureChannels [read],  [write],  [nonatomic],  [assign]
       The number of feature channels per pixel in the input image.

   - kernelHeight [read],  [write],  [nonatomic],  [assign]
       The height of the filter window. The default value is 3. Any positive
       non-zero value is valid, including even values. The position of the top
       edge of the filter window is given by offset.y - (kernelHeight>>1)

   - kernelWidth [read],  [write],  [nonatomic],  [assign]
       The width of the filter window. The default value is 3. Any positive
       non-zero value is valid, including even values. The position of the
       left edge of the filter window is given by offset.x - (kernelWidth>>1)

   - neuron [read],  [write],  [nonatomic],  [retain]
       MPSCNNNeuron filter to be applied as part of convolution. This is
       applied after BatchNormalization in the end. Default is nil. This is
       deprecated. You dont need to create MPSCNNNeuron object to fuse with
       convolution. Use neuron properties in this descriptor.

   - outputFeatureChannels [read],  [write],  [nonatomic],  [assign]
       The number of feature channels per pixel in the output image.

   - strideInPixelsX [read],  [write],  [nonatomic],  [assign]
       The output stride (downsampling factor) in the x dimension. The default
       value is 1.

   - strideInPixelsY [read],  [write],  [nonatomic],  [assign]
       The output stride (downsampling factor) in the y dimension. The default
       value is 1.

   - (const MPSCNNNeuron* __nullable BOOL) supportsSecureCoding [read],
       [nonatomic],  [assign]
       <NSSecureCoding> support



Author

       Generated automatically by Doxygen for
       MetalPerformanceShaders.framework from the source code.





Version MetalPerformanceShaders-Thu2Jul 13 2017 MPSCNNConvolutionDescriptor(3)


Mac OS X 10.13.1 - Generated Mon Nov 6 16:23:49 CST 2017
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.