Class MPSCNNConvolutionWeightsAndBiasesState

  • All Implemented Interfaces:
    NSObject

    public class MPSCNNConvolutionWeightsAndBiasesState
    extends MPSState
    MPSCNNConvolutionWeightsAndBiasesState The MPSCNNConvolutionWeightsAndBiasesState is returned by exportWeightsAndBiasesWithCommandBuffer: method on MPSCNNConvolution object. This is mainly used for GPU side weights/biases update process. During training, application can keep a copy of weights, velocity, momentum MTLBuffers in its data source, update the weights (in-place or out of place) with gradients obtained from MPSCNNConvolutionGradientState and call [MPSCNNConvolution reloadWeightsAndBiasesWithCommandBuffer] with resulting updated MTLBuffer. If application does not want to keep a copy of weights/biases, it can call [MPSCNNConvolution exportWeightsAndBiasesWithCommandBuffer:] to get the current weights from convolution itself, do the updated and call reloadWithCommandBuffer. API-Since: 11.3
    • Constructor Detail

      • MPSCNNConvolutionWeightsAndBiasesState

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

      • accessInstanceVariablesDirectly

        public static boolean accessInstanceVariablesDirectly()
      • automaticallyNotifiesObserversForKey

        public static boolean automaticallyNotifiesObserversForKey​(@NotNull
                                                                   @NotNull java.lang.String key)
      • biases

        @Nullable
        public @Nullable MTLBuffer biases()
        [@property] biases A buffer that contains the biases. Each value is float and there are ouputFeatureChannels values.
      • biasesOffset

        public long biasesOffset()
        [@property] biasesOffset Offset at which weights start in biases buffer Default value is 0.
      • cancelPreviousPerformRequestsWithTarget

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

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

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

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

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

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

        public static long hash_static()
      • initWithDeviceCnnConvolutionDescriptor

        public MPSCNNConvolutionWeightsAndBiasesState initWithDeviceCnnConvolutionDescriptor​(@NotNull
                                                                                             @NotNull MTLDevice device,
                                                                                             @NotNull
                                                                                             @NotNull MPSCNNConvolutionDescriptor descriptor)
        Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided convolution descriptor Create weights and biases buffers of appropriate size
      • initWithDeviceResourceList

        public MPSCNNConvolutionWeightsAndBiasesState initWithDeviceResourceList​(@NotNull
                                                                                 @NotNull MTLDevice device,
                                                                                 @NotNull
                                                                                 @NotNull MPSStateResourceList resourceList)
        Description copied from class: MPSState
        Initialize a non-temporary state to hold a number of textures and buffers The allocation of each resource will be deferred until it is needed. This occurs when -resource or -resourceAtIndex: is called.
        Overrides:
        initWithDeviceResourceList in class MPSState
        resourceList - The list of resources to create. API-Since: 11.3
      • initWithResources

        public MPSCNNConvolutionWeightsAndBiasesState initWithResources​(@Nullable
                                                                        @Nullable NSArray<?> resources)
        Description copied from class: MPSState
        Create a state object with a list of MTLResources Because MPS prefers deferred allocation of resources your application should use -initWithTextures:bufferSizes:bufferCount: whenever possible. This method is useful for cases when the MTLResources must be initialized by the CPU.
        Overrides:
        initWithResources in class MPSState
      • initWithWeightsBiases

        public MPSCNNConvolutionWeightsAndBiasesState initWithWeightsBiases​(@NotNull
                                                                            @NotNull MTLBuffer weights,
                                                                            @Nullable
                                                                            @Nullable MTLBuffer biases)
        Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided weights and biases buffers. This is the convinience API when buffers of exact size i.e. [weights length] = inputFeatureChannels*kernelWidth*kernelHeight*channelMultiplier*sizeof(float) // for depthwise convolution outputFeatureChannels*kernelWidth*kernelHeight*(inputChannels/groups)*sizeof(float) // for regular otherwise and [biases length] = outputFeatureChannels*sizeof(float)
      • initWithWeightsWeightsOffsetBiasesBiasesOffsetCnnConvolutionDescriptor

        public MPSCNNConvolutionWeightsAndBiasesState initWithWeightsWeightsOffsetBiasesBiasesOffsetCnnConvolutionDescriptor​(@NotNull
                                                                                                                             @NotNull MTLBuffer weights,
                                                                                                                             long weightsOffset,
                                                                                                                             @Nullable
                                                                                                                             @Nullable MTLBuffer biases,
                                                                                                                             long biasesOffset,
                                                                                                                             @NotNull
                                                                                                                             @NotNull MPSCNNConvolutionDescriptor descriptor)
        Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided weights and biases buffers. It gives finer allocation control to application e.g. application can pass same buffer for weights and biases with appropriate offsets. Or offset into some larger buffer from application managed heap etc. Number of weights and biases or the length of weights and biases buffer this object owns (will read or write to), starting at offset is determined by MPSCNNConvolutionDescriptor passed in. weightsLength = inputFeatureChannels*kernelWidth*kernelHeight*channelMultiplier*sizeof(float) // for depthwise convolution outputFeatureChannels*kernelWidth*kernelHeight*(inputChannels/groups)*sizeof(float) // for regular otherwise biasesLength = outputFeatureChannels*sizeof(float) Thus filters operating on this object will read or write to NSRange(weightsOffset, weightsLength) of weights buffer and NSRange(biasesOffset, biasesLength) of biases buffer. Thus sizes of buffers provided must be such that weightsOffset + weightsLength <= [weights length] and biasesOffset + biasesLength <= [biases length] Offsets must of sizeof(float) aligned i.e. multiple of 4. API-Since: 13.0
      • 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

        @NotNull
        public static @NotNull NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey​(@NotNull
                                                                                             @NotNull java.lang.String key)
      • 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()
      • temporaryCNNConvolutionWeightsAndBiasesStateWithCommandBufferCnnConvolutionDescriptor

        @NotNull
        public static @NotNull MPSCNNConvolutionWeightsAndBiasesState temporaryCNNConvolutionWeightsAndBiasesStateWithCommandBufferCnnConvolutionDescriptor​(@NotNull
                                                                                                                                                            @NotNull MTLCommandBuffer commandBuffer,
                                                                                                                                                            @NotNull
                                                                                                                                                            @NotNull MPSCNNConvolutionDescriptor descriptor)
        Create and initialize temporary MPSCNNConvolutionWeightsAndBiasesState with application provided convolution descriptor Create weights and biases buffers of appropriate size from command buffer cache.
      • version_static

        public static long version_static()
      • weights

        @NotNull
        public @NotNull MTLBuffer weights()
        [@property] weights A buffer that contains the weights. Each value in the buffer is a float. The layout of the weights with respect to the weights is the same as the weights layout provided by data source i.e. it can be interpreted as 4D array weights[outputFeatureChannels][kernelHeight][kernelWidth][inputFeatureChannels/groups] for regular convolution. For depthwise convolution weights[outputFeatureChannels][kernelHeight][kernelWidth] as we currently only support channel multiplier of 1.
      • weightsOffset

        public long weightsOffset()
        [@property] weightsOffset Offset at which weights start in weights buffer Default value is 0.
      • useStoredAccessor

        @Deprecated
        public static boolean useStoredAccessor()
        Deprecated.