Class MPSNNDefaultPadding

  • All Implemented Interfaces:
    NSCoding, NSSecureCoding, MPSNNPadding, NSObject

    public class MPSNNDefaultPadding
    extends NSObject
    implements MPSNNPadding
    This class provides some pre-rolled padding policies for common tasks You are, of course, welcome to write your own class that conforms to The MPSNNPadding protocol and use that instead.
    • Constructor Detail

      • MPSNNDefaultPadding

        protected MPSNNDefaultPadding​(org.moe.natj.general.Pointer peer)
    • Method Detail

      • accessInstanceVariablesDirectly

        public static boolean accessInstanceVariablesDirectly()
      • allocWithZone

        public static java.lang.Object allocWithZone​(org.moe.natj.general.ptr.VoidPtr zone)
      • automaticallyNotifiesObserversForKey

        public static boolean automaticallyNotifiesObserversForKey​(java.lang.String key)
      • cancelPreviousPerformRequestsWithTarget

        public static void cancelPreviousPerformRequestsWithTarget​(java.lang.Object aTarget)
      • cancelPreviousPerformRequestsWithTargetSelectorObject

        public static void cancelPreviousPerformRequestsWithTargetSelectorObject​(java.lang.Object aTarget,
                                                                                 org.moe.natj.objc.SEL aSelector,
                                                                                 java.lang.Object anArgument)
      • classFallbacksForKeyedArchiver

        public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
      • classForKeyedUnarchiver

        public static org.moe.natj.objc.Class classForKeyedUnarchiver()
      • debugDescription_static

        public static java.lang.String debugDescription_static()
      • description_static

        public static java.lang.String description_static()
      • destinationImageDescriptorForSourceImagesSourceStatesForKernelSuggestedDescriptor

        public MPSImageDescriptor destinationImageDescriptorForSourceImagesSourceStatesForKernelSuggestedDescriptor​(NSArray<? extends MPSImage> sourceImages,
                                                                                                                    NSArray<? extends MPSState> sourceStates,
                                                                                                                    MPSKernel kernel,
                                                                                                                    MPSImageDescriptor inDescriptor)
        Description copied from interface: MPSNNPadding
        Determine padding and sizing of result images A MPSNNPaddingMethod must both return a valid MPSImageDescriptor and set the MPSKernel.offset to the correct value. This is a required feature if the MPSNNPaddingMethodCustom bit is set in the paddingMethod. Some code that may prove helpful: [@code] const int centeringPolicy = 0; // When kernelSize is even: 0 pad bottom right. 1 pad top left. Centers the kernel for even sized kernels. typedef enum Style{ StyleValidOnly = -1, StyleSame = 0, StyleFull = 1 }Style; // Typical destination size in one dimension for forward filters (most filters) static int DestSize( int sourceSize, int stride, int filterWindowSize, Style style ){ sourceSize += style * (filterWindowSize - 1); // adjust how many pixels we are allowed to read return (sourceSize + stride - 1) / stride; // sourceSize / stride, round up } // Typical destination size in one dimension for reverse filters (e.g. convolution transpose) static int DestSizeReverse( int sourceSize, int stride, int filterWindowSize, Style style ){ return (sourceSize-1) * stride + // center tap for the last N-1 results. Take stride into account 1 + // center tap for the first result style * (filterWindowSize-1); // add or subtract (or ignore) the filter extent } // Find the MPSOffset in one dimension static int Offset( int sourceSize, int stride, int filterWindowSize, Style style ){ // The correction needed to adjust from position of left edge to center per MPSOffset definition int correction = filterWindowSize / 2; // exit if all we want is to start consuming pixels at the left edge of the image. if( 0 ) return correction; // Center the area consumed in the source image: // Calculate the size of the destination image int destSize = DestSize( sourceSize, stride, filterWindowSize, style ); // use DestSizeReverse here instead as appropriate // calculate extent of pixels we need to read in source to populate the destination int readSize = (destSize-1) * stride + filterWindowSize; // calculate number of missing pixels in source int extraSize = readSize - sourceSize; // number of missing pixels on left side int leftExtraPixels = (extraSize + centeringPolicy) / 2; // account for the fact that the offset is based on the center pixel, not the left edge return correction - leftExtraPixels; } [@endcode]
        Specified by:
        destinationImageDescriptorForSourceImagesSourceStatesForKernelSuggestedDescriptor in interface MPSNNPadding
        Parameters:
        sourceImages - The list of source images to be used
        sourceStates - The list of source states to be used
        kernel - The MPSKernel the padding method will be applied to. Set the kernel.offset
        inDescriptor - MPS will prepare a starting guess based on the padding policy (exclusive of MPSNNPaddingMethodCustom) set for the object. You should adjust the offset and image size accordingly. It is on an autoreleasepool.
        Returns:
        The MPSImageDescriptor to use to make a MPSImage to capture the results from the filter. The MPSImageDescriptor is assumed to be on an autoreleasepool. Your method must also set the kernel.offset property.
      • hash_static

        public static long hash_static()
      • instanceMethodSignatureForSelector

        public static NSMethodSignature instanceMethodSignatureForSelector​(org.moe.natj.objc.SEL aSelector)
      • instancesRespondToSelector

        public static boolean instancesRespondToSelector​(org.moe.natj.objc.SEL aSelector)
      • isSubclassOfClass

        public static boolean isSubclassOfClass​(org.moe.natj.objc.Class aClass)
      • keyPathsForValuesAffectingValueForKey

        public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey​(java.lang.String key)
      • label

        public java.lang.String label()
        Description copied from interface: MPSNNPadding
        FIXME: to be made @required
        Specified by:
        label in interface MPSNNPadding
      • new_objc

        public static java.lang.Object new_objc()
      • paddingForTensorflowAveragePooling

        public static MPSNNDefaultPadding paddingForTensorflowAveragePooling()
        same size centering mode
      • paddingMethod

        public long paddingMethod()
        Description copied from interface: MPSNNPadding
        Get the preferred padding method for the node
        Specified by:
        paddingMethod in interface MPSNNPadding
      • paddingWithMethod

        public static MPSNNDefaultPadding paddingWithMethod​(long method)
        Fetch a well known object that implements a non-custom padding method For custom padding methods, you will need to implement an object that conforms to the full MPSNNPadding protocol, including NSSecureCoding.
        Parameters:
        method - A MPSNNPaddingMethod
        Returns:
        An object that implements for use with MPSNNGraphNodes.
      • resolveClassMethod

        public static boolean resolveClassMethod​(org.moe.natj.objc.SEL sel)
      • resolveInstanceMethod

        public static boolean resolveInstanceMethod​(org.moe.natj.objc.SEL sel)
      • setVersion_static

        public static void setVersion_static​(long aVersion)
      • superclass_static

        public static org.moe.natj.objc.Class superclass_static()
      • supportsSecureCoding

        public static boolean supportsSecureCoding()
      • _supportsSecureCoding

        public boolean _supportsSecureCoding()
        Description copied from interface: NSSecureCoding
        This property must return YES on all classes that allow secure coding. Subclasses of classes that adopt NSSecureCoding and override initWithCoder: must also override this method and return YES. The Secure Coding Guide should be consulted when writing methods that decode data.
        Specified by:
        _supportsSecureCoding in interface NSSecureCoding
      • version_static

        public static long version_static()
      • inverse

        public java.lang.Object inverse()
        Description copied from interface: MPSNNPadding
        Make a "inverted" padding policy suitable for a training gradient pass.
        Specified by:
        inverse in interface MPSNNPadding
      • paddingForTensorflowAveragePoolingValidOnly

        public static MPSNNDefaultPadding paddingForTensorflowAveragePoolingValidOnly()
        Typical pooling padding policy for valid only mode