public class MPSNNOptimizerStochasticGradientDescent extends MPSNNOptimizer
The MPSNNOptimizerStochasticGradientDescent performs a gradient descent with an optional momentum Update RMSProp is also known as root mean square propagation.
useNesterov == NO: m[t] = momentumScale * m[t-1] + learningRate * g variable = variable - m[t]
useNesterov == YES: m[t] = momentumScale * m[t-1] + g variable = variable - (learningRate * (g + m[t] * momentumScale))
where, g is gradient of error wrt variable m[t] is momentum of gradients it is a state we keep updating every update iteration
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
MPSNNOptimizerStochasticGradientDescent(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() |
static MPSNNOptimizerStochasticGradientDescent |
alloc() |
static MPSNNOptimizerStochasticGradientDescent |
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) |
static NSArray<java.lang.String> |
classFallbacksForKeyedArchiver() |
static org.moe.natj.objc.Class |
classForKeyedUnarchiver() |
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
void |
encodeToCommandBufferBatchNormalizationGradientStateBatchNormalizationSourceStateInputMomentumVectorsResultState(MTLCommandBuffer commandBuffer,
MPSCNNBatchNormalizationState batchNormalizationGradientState,
MPSCNNBatchNormalizationState batchNormalizationSourceState,
NSArray<? extends MPSVector> inputMomentumVectors,
MPSCNNNormalizationGammaAndBetaState resultState)
Encode an MPSNNOptimizerStochasticGradientDescent object to a command buffer to perform out of place update
|
void |
encodeToCommandBufferBatchNormalizationStateInputMomentumVectorsResultState(MTLCommandBuffer commandBuffer,
MPSCNNBatchNormalizationState batchNormalizationState,
NSArray<? extends MPSVector> inputMomentumVectors,
MPSCNNNormalizationGammaAndBetaState resultState)
Encode an MPSNNOptimizerStochasticGradientDescent object to a command buffer to perform out of place update
|
void |
encodeToCommandBufferConvolutionGradientStateConvolutionSourceStateInputMomentumVectorsResultState(MTLCommandBuffer commandBuffer,
MPSCNNConvolutionGradientState convolutionGradientState,
MPSCNNConvolutionWeightsAndBiasesState convolutionSourceState,
NSArray<? extends MPSVector> inputMomentumVectors,
MPSCNNConvolutionWeightsAndBiasesState resultState)
Encode an MPSNNOptimizerStochasticGradientDescent object to a command buffer to perform out of place update
|
void |
encodeToCommandBufferInputGradientMatrixInputValuesMatrixInputMomentumMatrixResultValuesMatrix(MTLCommandBuffer commandBuffer,
MPSMatrix inputGradientMatrix,
MPSMatrix inputValuesMatrix,
MPSMatrix inputMomentumMatrix,
MPSMatrix resultValuesMatrix) |
void |
encodeToCommandBufferInputGradientVectorInputValuesVectorInputMomentumVectorResultValuesVector(MTLCommandBuffer commandBuffer,
MPSVector inputGradientVector,
MPSVector inputValuesVector,
MPSVector inputMomentumVector,
MPSVector resultValuesVector)
Encode an MPSNNOptimizerStochasticGradientDescent object to a command buffer to perform out of place update
|
static long |
hash_static() |
MPSNNOptimizerStochasticGradientDescent |
init() |
MPSNNOptimizerStochasticGradientDescent |
initWithCoder(NSCoder aDecoder)
NS_DESIGNATED_INITIALIZER
|
MPSNNOptimizerStochasticGradientDescent |
initWithCoderDevice(NSCoder aDecoder,
java.lang.Object device)
NSSecureCoding compatability
|
MPSNNOptimizerStochasticGradientDescent |
initWithDevice(java.lang.Object device)
Standard init with default properties per filter type
|
MPSNNOptimizerStochasticGradientDescent |
initWithDeviceLearningRate(MTLDevice device,
float learningRate)
Convenience initialization for the momentum update
|
MPSNNOptimizerStochasticGradientDescent |
initWithDeviceMomentumScaleUseNesterovMomentumOptimizerDescriptor(MTLDevice device,
float momentumScale,
boolean useNesterovMomentum,
MPSNNOptimizerDescriptor optimizerDescriptor)
Full initialization for the momentum update
|
MPSNNOptimizerStochasticGradientDescent |
initWithDeviceMomentumScaleUseNestrovMomentumOptimizerDescriptor(MTLDevice device,
float momentumScale,
boolean useNestrovMomentum,
MPSNNOptimizerDescriptor optimizerDescriptor) |
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) |
float |
momentumScale()
[@property] momentumScale
|
static MPSNNOptimizerStochasticGradientDescent |
new_objc() |
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
static void |
setVersion_static(long aVersion) |
static org.moe.natj.objc.Class |
superclass_static() |
static boolean |
supportsSecureCoding() |
boolean |
useNesterovMomentum()
[@property] useNesterovMomentum
|
boolean |
useNestrovMomentum() |
static long |
version_static() |
applyGradientClipping, gradientClipMax, gradientClipMin, gradientRescale, learningRate, regularizationScale, regularizationType, setApplyGradientClipping, setLearningRatecopyWithZone, 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, willChangeValuesAtIndexesForKeyprotected MPSNNOptimizerStochasticGradientDescent(org.moe.natj.general.Pointer peer)
public static boolean accessInstanceVariablesDirectly()
public static MPSNNOptimizerStochasticGradientDescent alloc()
public static MPSNNOptimizerStochasticGradientDescent 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 void encodeToCommandBufferBatchNormalizationGradientStateBatchNormalizationSourceStateInputMomentumVectorsResultState(MTLCommandBuffer commandBuffer, MPSCNNBatchNormalizationState batchNormalizationGradientState, MPSCNNBatchNormalizationState batchNormalizationSourceState, NSArray<? extends MPSVector> inputMomentumVectors, MPSCNNNormalizationGammaAndBetaState resultState)
The following operations would be applied
useNesterov == NO: m[t] = momentumScale * m[t-1] + learningRate * g variable = variable - m[t]
useNesterov == YES: m[t] = momentumScale * m[t-1] + g variable = variable - (learningRate * (g + m[t] * momentumScale))
inputMomentumVector == nil variable = variable - (learningRate * g)
where, g is gradient of error wrt variable m[t] is momentum of gradients it is a state we keep updating every update iteration
commandBuffer - A valid MTLCommandBuffer to receive the encoded kernel.batchNormalizationGradientState - A valid MPSCNNBatchNormalizationState object which specifies the input state with gradients for this update.batchNormalizationSourceState - A valid MPSCNNBatchNormalizationState object which specifies the input state with original gamma/beta for this update.inputMomentumVectors - An array MPSVector object which specifies the gradient momentum vectors which will
be updated and overwritten. The index 0 corresponds to gamma, index 1 corresponds to beta, array can be of
size 1 in which case beta won't be updatedresultState - A valid MPSCNNNormalizationGammaAndBetaState object which specifies the resultValues state which will
be updated and overwritten.public void encodeToCommandBufferBatchNormalizationStateInputMomentumVectorsResultState(MTLCommandBuffer commandBuffer, MPSCNNBatchNormalizationState batchNormalizationState, NSArray<? extends MPSVector> inputMomentumVectors, MPSCNNNormalizationGammaAndBetaState resultState)
The following operations would be applied
useNesterov == NO: m[t] = momentumScale * m[t-1] + learningRate * g variable = variable - m[t]
useNesterov == YES: m[t] = momentumScale * m[t-1] + g variable = variable - (learningRate * (g + m[t] * momentumScale))
inputMomentumVector == nil variable = variable - (learningRate * g)
where, g is gradient of error wrt variable m[t] is momentum of gradients it is a state we keep updating every update iteration
commandBuffer - A valid MTLCommandBuffer to receive the encoded kernel.batchNormalizationState - A valid MPSCNNBatchNormalizationState object which specifies the input state with gradients and original gamma/beta for this update.inputMomentumVectors - An array MPSVector object which specifies the gradient momentum vectors which will
be updated and overwritten. The index 0 corresponds to gamma, index 1 corresponds to beta, array can be of
size 1 in which case beta won't be updatedresultState - A valid MPSCNNNormalizationGammaAndBetaState object which specifies the resultValues state which will
be updated and overwritten.public void encodeToCommandBufferConvolutionGradientStateConvolutionSourceStateInputMomentumVectorsResultState(MTLCommandBuffer commandBuffer, MPSCNNConvolutionGradientState convolutionGradientState, MPSCNNConvolutionWeightsAndBiasesState convolutionSourceState, NSArray<? extends MPSVector> inputMomentumVectors, MPSCNNConvolutionWeightsAndBiasesState resultState)
The following operations would be applied
useNesterov == NO: m[t] = momentumScale * m[t-1] + learningRate * g variable = variable - m[t]
useNesterov == YES: m[t] = momentumScale * m[t-1] + g variable = variable - (learningRate * (g + m[t] * momentumScale))
inputMomentumVector == nil variable = variable - (learningRate * g)
where, g is gradient of error wrt variable m[t] is momentum of gradients it is a state we keep updating every update iteration
commandBuffer - A valid MTLCommandBuffer to receive the encoded kernel.convolutionGradientState - A valid MPSCNNConvolutionGradientState object which specifies the input state with gradients for this update.convolutionSourceState - A valid MPSCNNConvolutionWeightsAndBiasesState object which specifies the input state with values to be updated.inputMomentumVectors - An array MPSVector object which specifies the gradient momentum vectors which will
be updated and overwritten. The index 0 corresponds to weights, index 1 corresponds to biases, array can be of
size 1 in which case biases won't be updatedresultState - A valid MPSCNNConvolutionWeightsAndBiasesState object which specifies the resultValues state which will
be updated and overwritten.public void encodeToCommandBufferInputGradientMatrixInputValuesMatrixInputMomentumMatrixResultValuesMatrix(MTLCommandBuffer commandBuffer, MPSMatrix inputGradientMatrix, MPSMatrix inputValuesMatrix, MPSMatrix inputMomentumMatrix, MPSMatrix resultValuesMatrix)
public void encodeToCommandBufferInputGradientVectorInputValuesVectorInputMomentumVectorResultValuesVector(MTLCommandBuffer commandBuffer, MPSVector inputGradientVector, MPSVector inputValuesVector, MPSVector inputMomentumVector, MPSVector resultValuesVector)
The following operations would be applied
useNesterov == NO: m[t] = momentumScale * m[t-1] + learningRate * g variable = variable - m[t]
useNesterov == YES: m[t] = momentumScale * m[t-1] + g variable = variable - (learningRate * (g + m[t] * momentumScale))
inputMomentumVector == nil variable = variable - (learningRate * g)
where, g is gradient of error wrt variable m[t] is momentum of gradients it is a state we keep updating every update iteration
commandBuffer - A valid MTLCommandBuffer to receive the encoded kernel.inputGradientVector - A valid MPSVector object which specifies the input vector of gradients for this update.inputValuesVector - A valid MPSVector object which specifies the input vector of values to be updated.inputMomentumVector - A valid MPSVector object which specifies the gradient momentum vector which will
be updated and overwritten.resultValuesVector - A valid MPSVector object which specifies the resultValues vector which will
be updated and overwritten.public static long hash_static()
public MPSNNOptimizerStochasticGradientDescent init()
init in class MPSNNOptimizerpublic MPSNNOptimizerStochasticGradientDescent initWithCoder(NSCoder aDecoder)
NSCodinginitWithCoder in interface NSCodinginitWithCoder in class MPSNNOptimizerpublic MPSNNOptimizerStochasticGradientDescent initWithCoderDevice(NSCoder aDecoder, java.lang.Object device)
MPSKernelWhile 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 MPSNNOptimizeraDecoder - The NSCoder subclass with your serialized MPSKerneldevice - The MTLDevice on which to make the MPSKernelpublic MPSNNOptimizerStochasticGradientDescent initWithDevice(java.lang.Object device)
MPSKernelinitWithDevice in class MPSNNOptimizerdevice - The device that the filter will be used on. May not be NULL.public MPSNNOptimizerStochasticGradientDescent initWithDeviceLearningRate(MTLDevice device, float learningRate)
device - The device on which the kernel will execute.learningRate - The learningRate which will be appliedpublic MPSNNOptimizerStochasticGradientDescent initWithDeviceMomentumScaleUseNestrovMomentumOptimizerDescriptor(MTLDevice device, float momentumScale, boolean useNestrovMomentum, MPSNNOptimizerDescriptor optimizerDescriptor)
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 float momentumScale()
The momentumScale at which we update momentum for values array
Default value is 0.0
public static MPSNNOptimizerStochasticGradientDescent 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 boolean supportsSecureCoding()
public boolean _supportsSecureCoding()
NSSecureCoding_supportsSecureCoding in interface NSSecureCoding_supportsSecureCoding in class MPSNNOptimizerpublic boolean useNestrovMomentum()
public static long version_static()
public MPSNNOptimizerStochasticGradientDescent initWithDeviceMomentumScaleUseNesterovMomentumOptimizerDescriptor(MTLDevice device, float momentumScale, boolean useNesterovMomentum, MPSNNOptimizerDescriptor optimizerDescriptor)
device - The device on which the kernel will execute.momentumScale - The momentumScale to update momentum for values arrayuseNesterovMomentum - Use the Nesterov style momentum updateoptimizerDescriptor - The optimizerDescriptor which will have a bunch of properties to be appliedpublic boolean useNesterovMomentum()
Nesterov momentum is considered an improvement on the usual momentum update
Default value is NO [@note] Maps to old useNestrovMomentum property