public class MPSGRUDescriptor extends MPSRNNDescriptor
The MPSGRUDescriptor specifies a GRU (Gated Recurrent Unit) block/layer descriptor. The RNN layer initialized with a MPSGRUDescriptor transforms the input data (image or matrix), and previous output with a set of filters, each producing one feature map in the output data according to the Gated unit formulae detailed below. The user may provide the GRU unit a single input or a sequence of inputs. The layer also supports p-norm gating (Detailed in: https://arxiv.org/abs/1608.03639 ).
Description of operation:
Let x_j be the input data (at time index t of sequence, j index containing quadruplet: batch index, x,y and feature index (x=y=0 for matrices)). Let h0_j be the recurrent input (previous output) data from previous time step (at time index t-1 of sequence). Let h_i be the proposed new output. Let h1_i be the output data produced at this time step.
Let Wz_ij, Uz_ij, be the input gate weights for input and recurrent input data respectively Let bi_i be the bias for the input gate
Let Wr_ij, Ur_ij be the recurrent gate weights for input and recurrent input data respectively Let br_i be the bias for the recurrent gate
Let Wh_ij, Uh_ij, Vh_ij, be the output gate weights for input, recurrent gate and input gate respectively Let bh_i be the bias for the output gate
Let gz(x), gr(x), gh(x) be the neuron activation function for the input, recurrent and output gates Let p > 0 be a scalar variable (typicall p >= 1.0) that defines the p-norm gating norm value.
Then the output of the Gated Recurrent Unit layer is computed as follows:
z_i = gz( Wz_ij * x_j + Uz_ij * h0_j + bz_i ) r_i = gr( Wr_ij * x_j + Ur_ij * h0_j + br_i ) c_i = Uh_ij * (r_j h0_j) + Vh_ij * (z_j h0_j) h_i = gh( Wh_ij * x_j + c_i + bh_i )
h1_i = ( 1 - z_i ^ p)^(1/p) h_i + z_i h0_i
The '*' stands for convolution (see @ref MPSRNNImageInferenceLayer) or matrix-vector/matrix multiplication (see @ref MPSRNNMatrixInferenceLayer). Summation is over index j (except for the batch index), but there is no summation over repeated index i - the output index. Note that for validity all intermediate images have to be of same size and all U and V matrices have to be square (ie. outputFeatureChannels == inputFeatureChannels in those). Also the bias terms are scalars wrt. spatial dimensions. The conventional GRU block is achieved by setting Vh = 0 (nil) and the so-called Minimal Gated Unit is achieved with Uh = 0. (The Minimal Gated Unit is detailed in: https://arxiv.org/abs/1603.09420 and there they call z_i the value of the forget gate).
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
MPSGRUDescriptor(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
accessInstanceVariablesDirectly() |
static MPSGRUDescriptor |
alloc() |
static MPSGRUDescriptor |
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 MPSGRUDescriptor |
createGRUDescriptorWithInputFeatureChannelsOutputFeatureChannels(long inputFeatureChannels,
long outputFeatureChannels)
Creates a GRU descriptor.
|
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
boolean |
flipOutputGates()
[@property] flipOutputGates
|
float |
gatePnormValue()
[@property] gatePnormValue
|
static long |
hash_static() |
MPSGRUDescriptor |
init() |
MPSCNNConvolutionDataSource |
inputGateInputWeights()
[@property] inputGateInputWeights
|
MPSCNNConvolutionDataSource |
inputGateRecurrentWeights()
[@property] inputGateRecurrentWeights
|
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) |
static MPSGRUDescriptor |
new_objc() |
MPSCNNConvolutionDataSource |
outputGateInputGateWeights()
[@property] outputGateInputGateWeights
|
MPSCNNConvolutionDataSource |
outputGateInputWeights()
[@property] outputGateInputWeights
|
MPSCNNConvolutionDataSource |
outputGateRecurrentWeights()
[@property] outputGateRecurrentWeights
|
MPSCNNConvolutionDataSource |
recurrentGateInputWeights()
[@property] recurrentGateInputWeights
|
MPSCNNConvolutionDataSource |
recurrentGateRecurrentWeights()
[@property] recurrentGateRecurrentWeights
|
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
void |
setFlipOutputGates(boolean value)
[@property] flipOutputGates
|
void |
setGatePnormValue(float value)
[@property] gatePnormValue
|
void |
setInputGateInputWeights(MPSCNNConvolutionDataSource value)
[@property] inputGateInputWeights
|
void |
setInputGateRecurrentWeights(MPSCNNConvolutionDataSource value)
[@property] inputGateRecurrentWeights
|
void |
setOutputGateInputGateWeights(MPSCNNConvolutionDataSource value)
[@property] outputGateInputGateWeights
|
void |
setOutputGateInputWeights(MPSCNNConvolutionDataSource value)
[@property] outputGateInputWeights
|
void |
setOutputGateRecurrentWeights(MPSCNNConvolutionDataSource value)
[@property] outputGateRecurrentWeights
|
void |
setRecurrentGateInputWeights(MPSCNNConvolutionDataSource value)
[@property] recurrentGateInputWeights
|
void |
setRecurrentGateRecurrentWeights(MPSCNNConvolutionDataSource value)
[@property] recurrentGateRecurrentWeights
|
static void |
setVersion_static(long aVersion) |
static org.moe.natj.objc.Class |
superclass_static() |
static long |
version_static() |
inputFeatureChannels, layerSequenceDirection, outputFeatureChannels, setInputFeatureChannels, setLayerSequenceDirection, setOutputFeatureChannels, setUseFloat32Weights, setUseLayerInputUnitTransformMode, useFloat32Weights, useLayerInputUnitTransformModeaccessibilityActivate, 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 MPSGRUDescriptor alloc()
public static MPSGRUDescriptor 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 MPSGRUDescriptor createGRUDescriptorWithInputFeatureChannelsOutputFeatureChannels(long inputFeatureChannels, long outputFeatureChannels)
inputFeatureChannels - The number of feature channels in the input image/matrix. Must be >= 1.outputFeatureChannels - The number of feature channels in the output image/matrix. Must be >= 1.public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public boolean flipOutputGates()
If YES then the GRU-block output formula is changed to: h1_i = ( 1 - z_i ^ p)^(1/p) h0_i + z_i h_i. Defaults to NO.
public float gatePnormValue()
The p-norm gating norm value as specified by the GRU formulae. Defaults to 1.0f.
public static long hash_static()
public MPSGRUDescriptor init()
init in class MPSRNNDescriptorpublic MPSCNNConvolutionDataSource inputGateInputWeights()
Contains weights 'Wz_ij', bias 'bz_i' and neuron 'gz' from the GRU formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
public MPSCNNConvolutionDataSource inputGateRecurrentWeights()
Contains weights 'Uz_ij' from the GRU formula. If nil then assumed zero weights. Defaults to nil.
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 MPSGRUDescriptor new_objc()
public MPSCNNConvolutionDataSource outputGateInputGateWeights()
Contains weights 'Vh_ij' - can be used to implement the "Minimally Gated Unit". If nil then assumed zero weights. Defaults to nil.
public MPSCNNConvolutionDataSource outputGateInputWeights()
Contains weights 'Wh_ij', bias 'bh_i' and neuron 'gh' from the GRU formula. If nil then assumed zero weights, bias and no neuron (identity mapping).Defaults to nil.
public MPSCNNConvolutionDataSource outputGateRecurrentWeights()
Contains weights 'Uh_ij' from the GRU formula. If nil then assumed zero weights. Defaults to nil.
public MPSCNNConvolutionDataSource recurrentGateInputWeights()
Contains weights 'Wr_ij', bias 'br_i' and neuron 'gr' from the GRU formula. If nil then assumed zero weights, bias and no neuron (identity mapping).Defaults to nil.
public MPSCNNConvolutionDataSource recurrentGateRecurrentWeights()
Contains weights 'Ur_ij' from the GRU formula. If nil then assumed zero weights.Defaults to nil.
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public void setFlipOutputGates(boolean value)
If YES then the GRU-block output formula is changed to: h1_i = ( 1 - z_i ^ p)^(1/p) h0_i + z_i h_i. Defaults to NO.
public void setGatePnormValue(float value)
The p-norm gating norm value as specified by the GRU formulae. Defaults to 1.0f.
public void setInputGateInputWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Wz_ij', bias 'bz_i' and neuron 'gz' from the GRU formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
public void setInputGateRecurrentWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Uz_ij' from the GRU formula. If nil then assumed zero weights. Defaults to nil.
public void setOutputGateInputGateWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Vh_ij' - can be used to implement the "Minimally Gated Unit". If nil then assumed zero weights. Defaults to nil.
public void setOutputGateInputWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Wh_ij', bias 'bh_i' and neuron 'gh' from the GRU formula. If nil then assumed zero weights, bias and no neuron (identity mapping).Defaults to nil.
public void setOutputGateRecurrentWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Uh_ij' from the GRU formula. If nil then assumed zero weights. Defaults to nil.
public void setRecurrentGateInputWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Wr_ij', bias 'br_i' and neuron 'gr' from the GRU formula. If nil then assumed zero weights, bias and no neuron (identity mapping).Defaults to nil.
public void setRecurrentGateRecurrentWeights(MPSCNNConvolutionDataSource value)
Contains weights 'Ur_ij' from the GRU formula. If nil then assumed zero weights.Defaults to nil.
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public static long version_static()