public class MPSCNNConvolution extends MPSCNNKernel
The MPSCNNConvolution specifies a convolution. The MPSCNNConvolution convolves the input image with a set of filters, each producing one feature map in the output image.
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
MPSCNNConvolution(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
_supportsSecureCoding()
This property must return YES on all classes that allow secure coding.
|
static boolean |
accessInstanceVariablesDirectly() |
long |
accumulatorPrecisionOption()
Precision of accumulator used in convolution.
|
static MPSCNNConvolution |
alloc() |
static MPSCNNConvolution |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument) |
long |
channelMultiplier()
Channel multiplier.
|
static NSArray<java.lang.String> |
classFallbacksForKeyedArchiver() |
static org.moe.natj.objc.Class |
classForKeyedUnarchiver() |
MPSCNNConvolutionDataSource |
dataSource()
[@property] dataSource
|
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
MPSCNNConvolutionWeightsAndBiasesState |
exportWeightsAndBiasesWithCommandBufferResultStateCanBeTemporary(MTLCommandBuffer commandBuffer,
boolean resultStateCanBeTemporary)
GPU side export.
|
MPSNNNeuronDescriptor |
fusedNeuronDescriptor()
Fused neuron descritor passed in convolution descriptor for fusion with convolution.
|
long |
groups()
[@property] groups
|
static long |
hash_static() |
MPSCNNConvolution |
init() |
MPSCNNConvolution |
initWithCoder(NSCoder aDecoder)
NS_DESIGNATED_INITIALIZER
|
MPSCNNConvolution |
initWithCoderDevice(NSCoder aDecoder,
java.lang.Object device)
NSSecureCoding compatability
|
MPSCNNConvolution |
initWithDevice(java.lang.Object device)
Standard init with default properties per filter type
|
MPSCNNConvolution |
initWithDeviceConvolutionDescriptorKernelWeightsBiasTermsFlags(MTLDevice device,
MPSCNNConvolutionDescriptor convolutionDescriptor,
org.moe.natj.general.ptr.ConstFloatPtr kernelWeights,
org.moe.natj.general.ptr.ConstFloatPtr biasTerms,
long flags)
Initializes a convolution kernel
WARNING: This API is depreated and will be removed in the future.
|
MPSCNNConvolution |
initWithDeviceWeights(MTLDevice device,
MPSCNNConvolutionDataSource weights)
Initializes a convolution kernel
|
long |
inputFeatureChannels()
[@property] inputFeatureChannels
|
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
MPSCNNNeuron |
neuron()
[@property] neuron
|
float |
neuronParameterA()
Parameter "a" for the neuron.
|
float |
neuronParameterB()
Parameter "b" for the neuron.
|
float |
neuronParameterC()
Parameter "c" for the neuron.
|
int |
neuronType()
The type of neuron to append to the convolution
|
static MPSCNNConvolution |
new_objc() |
long |
outputFeatureChannels()
[@property] outputFeatureChannels
|
void |
reloadWeightsAndBiasesFromDataSource()
CPU side reload.
|
void |
reloadWeightsAndBiasesWithCommandBufferState(MTLCommandBuffer commandBuffer,
MPSCNNConvolutionWeightsAndBiasesState state)
GPU side reload.
|
void |
reloadWeightsAndBiasesWithDataSource(MPSCNNConvolutionDataSource dataSource)
Deprecated.
|
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
MPSCNNConvolutionGradientState |
resultStateForSourceImageSourceStatesDestinationImage(MPSImage sourceImage,
NSArray<? extends MPSState> sourceStates,
MPSImage destinationImage)
Allocate a MPCNNConvolutionGradientSState to hold the results from a -encodeBatchToCommandBuffer...
|
void |
setAccumulatorPrecisionOption(long value)
Precision of accumulator used in convolution.
|
static void |
setVersion_static(long aVersion) |
long |
subPixelScaleFactor()
[@property] subPixelScaleFactor
|
static org.moe.natj.objc.Class |
superclass_static() |
static boolean |
supportsSecureCoding() |
MPSCNNConvolutionGradientState |
temporaryResultStateForCommandBufferSourceImageSourceStatesDestinationImage(MTLCommandBuffer commandBuffer,
MPSImage sourceImage,
NSArray<? extends MPSState> sourceStates,
MPSImage destinationImage)
Allocate a temporary MPSState (subclass) to hold the results from a -encodeBatchToCommandBuffer...
|
static long |
version_static() |
appendBatchBarrier, clipRect, destinationFeatureChannelOffset, destinationImageAllocator, destinationImageDescriptorForSourceImagesSourceStates, dilationRateX, dilationRateY, edgeMode, encodeToCommandBufferSourceImage, encodeToCommandBufferSourceImageDestinationImage, encodeToCommandBufferSourceImageDestinationStateDestinationImage, encodeToCommandBufferSourceImageDestinationStateDestinationStateIsTemporary, encodingStorageSizeForSourceImageSourceStatesDestinationImage, isBackwards, isResultStateReusedAcrossBatch, isStateModified, kernelHeight, kernelWidth, offset, padding, setClipRect, setDestinationFeatureChannelOffset, setDestinationImageAllocator, setEdgeMode, setOffset, setPadding, setSourceFeatureChannelMaxCount, setSourceFeatureChannelOffset, sourceFeatureChannelMaxCount, sourceFeatureChannelOffset, strideInPixelsX, strideInPixelsYcopyWithZone, copyWithZoneDevice, device, encodeWithCoder, label, options, setLabel, setOptionsaccessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKeypublic static boolean accessInstanceVariablesDirectly()
public static MPSCNNConvolution alloc()
public static MPSCNNConvolution allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public static long hash_static()
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public static MPSCNNConvolution new_objc()
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public static long version_static()
public long groups()
Number of groups input and output channels are divided into.
public MPSCNNConvolution init()
init in class MPSCNNKernelpublic MPSCNNConvolution initWithDevice(java.lang.Object device)
MPSCNNKernelinitWithDevice in class MPSCNNKerneldevice - The device that the filter will be used on. May not be NULL.public MPSCNNConvolution initWithDeviceConvolutionDescriptorKernelWeightsBiasTermsFlags(MTLDevice device, MPSCNNConvolutionDescriptor convolutionDescriptor, org.moe.natj.general.ptr.ConstFloatPtr kernelWeights, org.moe.natj.general.ptr.ConstFloatPtr biasTerms, long flags)
device - The MTLDevice on which this MPSCNNConvolution filter will be usedconvolutionDescriptor - A pointer to a MPSCNNConvolutionDescriptor.kernelWeights - A pointer to a weights array. Each entry is a float value. The number of entries is =
inputFeatureChannels * outputFeatureChannels * kernelHeight * kernelWidth
The layout of filter weight is so that it can be reinterpreted as 4D tensor (array)
weight[ outputChannels ][ kernelHeight ][ kernelWidth ][ inputChannels / groups ]
Weights are converted to half float (fp16) internally for best performance.biasTerms - A pointer to bias terms to be applied to the convolution output. Each entry is a float value.
The number of entries is = numberOfOutputFeatureMapsflags - Currently unused. Pass MPSCNNConvolutionFlagsNonepublic long inputFeatureChannels()
The number of feature channels per pixel in the input image.
public MPSCNNNeuron neuron()
MPSCNNNeuron filter to be applied as part of convolution. Can be nil in wich case no neuron activation fuction is applied.
public long outputFeatureChannels()
The number of feature channels per pixel in the output image.
public long channelMultiplier()
For convolution created with MPSCNNDepthWiseConvolutionDescriptor, it is the number of output feature channels for each input channel. See MPSCNNDepthWiseConvolutionDescriptor for more details. Default is 0 which means regular CNN convolution.
public MPSCNNConvolution initWithCoder(NSCoder aDecoder)
NSCodinginitWithCoder in interface NSCodinginitWithCoder in class MPSCNNKernelpublic MPSCNNConvolution initWithCoderDevice(NSCoder aDecoder, java.lang.Object device)
While the standard NSSecureCoding/NSCoding method -initWithCoder: should work, since the file can't know which device your data is allocated on, we have to guess and may guess incorrectly. To avoid that problem, use initWithCoder:device instead.
initWithCoderDevice in class MPSCNNKernelaDecoder - The NSCoder subclass with your serialized MPSKerneldevice - The MTLDevice on which to make the MPSKernelpublic MPSCNNConvolution initWithDeviceWeights(MTLDevice device, MPSCNNConvolutionDataSource weights)
device - The MTLDevice on which this MPSCNNConvolution filter will be usedweights - A pointer to a object that conforms to the MPSCNNConvolutionDataSource
protocol. The MPSCNNConvolutionDataSource protocol declares the methods that an
instance of MPSCNNConvolution uses to obtain the weights and bias terms
for the CNN convolution filter.public float neuronParameterA()
Please see class description for interpretation of a.
public float neuronParameterB()
Please see class description for interpretation of b.
public int neuronType()
Please see class description for a full list. Default is MPSCNNNeuronTypeNone.
public long subPixelScaleFactor()
Sub pixel scale factor which was passed in as part of MPSCNNConvolutionDescriptor when creating this MPSCNNConvolution object.
public static boolean supportsSecureCoding()
public boolean _supportsSecureCoding()
NSSecureCoding_supportsSecureCoding in interface NSSecureCoding_supportsSecureCoding in class MPSCNNKernelpublic long accumulatorPrecisionOption()
See MPSNeuralNetworkTypes.h for discussion. Default is MPSNNConvolutionAccumulatorPrecisionOptionFloat.
public MPSCNNConvolutionDataSource dataSource()
dataSource with which convolution object was created
public MPSCNNConvolutionWeightsAndBiasesState exportWeightsAndBiasesWithCommandBufferResultStateCanBeTemporary(MTLCommandBuffer commandBuffer, boolean resultStateCanBeTemporary)
public MPSNNNeuronDescriptor fusedNeuronDescriptor()
Please see class description for interpretation of c.
public float neuronParameterC()
Please see class description for interpretation of c.
public void reloadWeightsAndBiasesFromDataSource()
public void reloadWeightsAndBiasesWithCommandBufferState(MTLCommandBuffer commandBuffer, MPSCNNConvolutionWeightsAndBiasesState state)
commandBuffer - Metal command buffer on which application update kernel was enqueued consuming MPSCNNConvolutionGradientState's gradientForWeights and gradientForBiases buffers
and producing updateBuffer metal buffer.state - MPSCNNConvolutionWeightsAndBiasesState containing weights and biases buffers which have updated weights produced by application's update kernel.
The state readcount will be decremented.public void reloadWeightsAndBiasesWithDataSource(MPSCNNConvolutionDataSource dataSource)
public MPSCNNConvolutionGradientState resultStateForSourceImageSourceStatesDestinationImage(MPSImage sourceImage, NSArray<? extends MPSState> sourceStates, MPSImage destinationImage)
resultStateForSourceImageSourceStatesDestinationImage in class MPSCNNKernelsourceImage - The MPSImage consumed by the associated -encode call.sourceStates - The list of MPSStates consumed by the associated -encode call,
for a batch size of 1.destinationImage - The destination image for the encode callpublic void setAccumulatorPrecisionOption(long value)
See MPSNeuralNetworkTypes.h for discussion. Default is MPSNNConvolutionAccumulatorPrecisionOptionFloat.
public MPSCNNConvolutionGradientState temporaryResultStateForCommandBufferSourceImageSourceStatesDestinationImage(MTLCommandBuffer commandBuffer, MPSImage sourceImage, NSArray<? extends MPSState> sourceStates, MPSImage destinationImage)
MPSCNNKernelA graph may need to allocate storage up front before executing. This may be necessary to avoid using too much memory and to manage large batches. The function should allocate any MPSState objects that will be produced by an -encode call with the indicated sourceImages and sourceStates inputs. Though the states can be further adjusted in the ensuing -encode call, the states should be initialized with all important data and all MTLResource storage allocated. The data stored in the MTLResource need not be initialized, unless the ensuing -encode call expects it to be.
The MTLDevice used by the result is derived from the command buffer. The padding policy will be applied to the filter before this is called to give it the chance to configure any properties like MPSCNNKernel.offset.
CAUTION: The kernel must have all properties set to values that will ultimately be passed to the -encode call that writes to the state, before -resultStateForSourceImages:sourceStates:destinationImage: is called or behavior is undefined. Please note that -destinationImageDescriptorForSourceImages:sourceStates:destinationImage: will alter some of these properties automatically based on the padding policy. If you intend to call that to make the destination image, then you should call that before -resultStateForSourceImages:sourceStates:destinationImage:. This will ensure the properties used in the encode call and in the destination image creation match those used to configure the state.
The following order is recommended:
// Configure MPSCNNKernel properties first kernel.edgeMode = MPSImageEdgeModeZero; kernel.destinationFeatureChannelOffset = 128; // concatenation without the copy ...
// ALERT: will change MPSCNNKernel properties MPSImageDescriptor * d = [kernel destinationImageDescriptorForSourceImage: source sourceStates: states]; MPSTemporaryImage * dest = [MPSTemporaryImage temporaryImageWithCommandBuffer: cmdBuf imageDescriptor: d];
// Now that all properties are configured properly, we can make the result state // and call encode. MPSState * __nullable destState = [kernel temporaryResultStateForCommandBuffer: cmdBuf sourceImage: source sourceStates: states];
// This form of -encode will be declared by the MPSCNNKernel subclass [kernel encodeToCommandBuffer: cmdBuf sourceImage: source destinationState: destState destinationImage: dest ];
Default: returns nil
temporaryResultStateForCommandBufferSourceImageSourceStatesDestinationImage in class MPSCNNKernelcommandBuffer - The command buffer to allocate the temporary storage against
The state will only be valid on this command buffer.sourceImage - The MPSImage consumed by the associated -encode call.sourceStates - The list of MPSStates consumed by the associated -encode call,
for a batch size of 1.destinationImage - The destination image for the encode call