Class MPSLSTMDescriptor

  • All Implemented Interfaces:
    NSObject

    public class MPSLSTMDescriptor
    extends MPSRNNDescriptor
    MPSLSTMDescriptor [@dependency] This depends on Metal.framework The MPSLSTMDescriptor specifies a LSTM block/layer descriptor. The RNN layer initialized with a MPSLSTMDescriptor transforms the input data (image or matrix), the memory cell data and previous output with a set of filters, each producing one feature map in the output data and memory cell, according to the LSTM formulae detailed below. The user may provide the LSTM unit a single input or a sequence of inputs. 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 h1_i be the output data produced at this time step. Let c0_j be the previous memory cell data (at time index t-1 of sequence). Let c1_i be the new memory cell data (at time index t-1 of sequence). Let Wi_ij, Ui_ij, Vi_ij, be the input gate weights for input, recurrent input and memory cell (peephole) data respectively Let bi_i be the bias for the input gate Let Wf_ij, Uf_ij, Vf_ij, be the forget gate weights for input, recurrent input and memory cell data respectively Let bf_i be the bias for the forget gate Let Wo_ij, Uo_ij, Vo_ij, be the output gate weights for input, recurrent input and memory cell data respectively Let bo_i be the bias for the output gate Let Wc_ij, Uc_ij, Vc_ij, be the memory cell gate weights for input, recurrent input and memory cell data respectively Let bc_i be the bias for the memory cell gate Let gi(x), gf(x), go(x), gc(x) be neuron activation function for the input, forget, output gate and memory cell gate Let gh(x) be the activation function applied to result memory cell data Then the new memory cell data c1_j and output image h1_i are computed as follows: I_i = gi( Wi_ij * x_j + Ui_ij * h0_j + Vi_ij * c0_j + bi_i ) F_i = gf( Wf_ij * x_j + Uf_ij * h0_j + Vf_ij * c0_j + bf_i ) C_i = gc( Wc_ij * x_j + Uc_ij * h0_j + Vc_ij * c0_j + bc_i ) c1_i = F_i c0_i + I_i C_i O_i = go( Wo_ij * x_j + Uo_ij * h0_j + Vo_ij * c1_j + bo_i ) h1_i = O_i gh( c1_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. API-Since: 11.0
    • Constructor Detail

      • MPSLSTMDescriptor

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

      • accessInstanceVariablesDirectly

        public static boolean accessInstanceVariablesDirectly()
      • allocWithZone

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

        public static boolean automaticallyNotifiesObserversForKey​(@NotNull
                                                                   @NotNull java.lang.String key)
      • 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)
      • cellGateInputWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource cellGateInputWeights()
        [@property] cellGateInputWeights Contains weights 'Wc_ij', bias 'bc_i' and neuron 'gc' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
      • cellGateMemoryWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource cellGateMemoryWeights()
        [@property] cellGateMemoryWeights Contains weights 'Vc_ij' - the 'peephole' weights - from the LSTM formula. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • cellGateRecurrentWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource cellGateRecurrentWeights()
        [@property] cellGateRecurrentWeights Contains weights 'Uc_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • cellToOutputNeuronParamA

        public float cellToOutputNeuronParamA()
        [@property] cellToOutputNeuronParamA Neuron parameter A for 'gh'. Defaults to 1.0f.
      • cellToOutputNeuronParamB

        public float cellToOutputNeuronParamB()
        [@property] cellToOutputNeuronParamB Neuron parameter B for 'gh'. Defaults to 1.0f.
      • cellToOutputNeuronType

        public int cellToOutputNeuronType()
        [@property] cellToOutputNeuronType Neuron type definition for 'gh', see @ref MPSCNNNeuronType. Defaults to MPSCNNNeuronTypeTanH.
      • classFallbacksForKeyedArchiver

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

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

        @NotNull
        public static @NotNull MPSLSTMDescriptor createLSTMDescriptorWithInputFeatureChannelsOutputFeatureChannels​(long inputFeatureChannels,
                                                                                                                   long outputFeatureChannels)
        Creates a LSTM descriptor.
        Parameters:
        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.
        Returns:
        A valid MPSNNLSTMDescriptor object or nil, if failure. API-Since: 11.0
      • debugDescription_static

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

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

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource forgetGateInputWeights()
        [@property] forgetGateInputWeights Contains weights 'Wf_ij', bias 'bf_i' and neuron 'gf' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping).Defaults to nil.
      • forgetGateMemoryWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource forgetGateMemoryWeights()
        [@property] forgetGateMemoryWeights Contains weights 'Vf_ij' - the 'peephole' weights - from the LSTM formula. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • forgetGateRecurrentWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource forgetGateRecurrentWeights()
        [@property] forgetGateRecurrentWeights Contains weights 'Uf_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • hash_static

        public static long hash_static()
      • inputGateInputWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource inputGateInputWeights()
        [@property] inputGateInputWeights Contains weights 'Wi_ij', bias 'bi_i' and neuron 'gi' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
      • inputGateMemoryWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource inputGateMemoryWeights()
        [@property] inputGateMemoryWeights Contains weights 'Vi_ij' - the 'peephole' weights - from the LSTM formula. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • inputGateRecurrentWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource inputGateRecurrentWeights()
        [@property] inputGateRecurrentWeights Contains weights 'Ui_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • 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)
      • memoryWeightsAreDiagonal

        public boolean memoryWeightsAreDiagonal()
        [@property] memoryWeightsAreDiagonal If YES, then the 'peephole' weight matrices will be diagonal matrices represented as vectors of length the number of features in memory cells, that will be multiplied pointwise with the peephole matrix or image in order to achieve the diagonal (nonmixing) update. Defaults to NO.
      • outputGateInputWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource outputGateInputWeights()
        [@property] outputGateInputWeights Contains weights 'Wo_ij', bias 'bo_i' and neuron 'go' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
      • outputGateMemoryWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource outputGateMemoryWeights()
        [@property] outputGateMemoryWeights Contains weights 'Vo_ij' - the 'peephole' weights - from the LSTM. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • outputGateRecurrentWeights

        @Nullable
        public @Nullable MPSCNNConvolutionDataSource outputGateRecurrentWeights()
        [@property] outputGateRecurrentWeights Contains weights 'Uo_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • resolveClassMethod

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

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

        public void setCellGateInputWeights​(@Nullable
                                            @Nullable MPSCNNConvolutionDataSource value)
        [@property] cellGateInputWeights Contains weights 'Wc_ij', bias 'bc_i' and neuron 'gc' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
      • setCellGateMemoryWeights

        public void setCellGateMemoryWeights​(@Nullable
                                             @Nullable MPSCNNConvolutionDataSource value)
        [@property] cellGateMemoryWeights Contains weights 'Vc_ij' - the 'peephole' weights - from the LSTM formula. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • setCellGateRecurrentWeights

        public void setCellGateRecurrentWeights​(@Nullable
                                                @Nullable MPSCNNConvolutionDataSource value)
        [@property] cellGateRecurrentWeights Contains weights 'Uc_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • setCellToOutputNeuronParamA

        public void setCellToOutputNeuronParamA​(float value)
        [@property] cellToOutputNeuronParamA Neuron parameter A for 'gh'. Defaults to 1.0f.
      • setCellToOutputNeuronParamB

        public void setCellToOutputNeuronParamB​(float value)
        [@property] cellToOutputNeuronParamB Neuron parameter B for 'gh'. Defaults to 1.0f.
      • setCellToOutputNeuronType

        public void setCellToOutputNeuronType​(int value)
        [@property] cellToOutputNeuronType Neuron type definition for 'gh', see @ref MPSCNNNeuronType. Defaults to MPSCNNNeuronTypeTanH.
      • setForgetGateInputWeights

        public void setForgetGateInputWeights​(@Nullable
                                              @Nullable MPSCNNConvolutionDataSource value)
        [@property] forgetGateInputWeights Contains weights 'Wf_ij', bias 'bf_i' and neuron 'gf' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping).Defaults to nil.
      • setForgetGateMemoryWeights

        public void setForgetGateMemoryWeights​(@Nullable
                                               @Nullable MPSCNNConvolutionDataSource value)
        [@property] forgetGateMemoryWeights Contains weights 'Vf_ij' - the 'peephole' weights - from the LSTM formula. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • setForgetGateRecurrentWeights

        public void setForgetGateRecurrentWeights​(@Nullable
                                                  @Nullable MPSCNNConvolutionDataSource value)
        [@property] forgetGateRecurrentWeights Contains weights 'Uf_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • setInputGateInputWeights

        public void setInputGateInputWeights​(@Nullable
                                             @Nullable MPSCNNConvolutionDataSource value)
        [@property] inputGateInputWeights Contains weights 'Wi_ij', bias 'bi_i' and neuron 'gi' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
      • setInputGateMemoryWeights

        public void setInputGateMemoryWeights​(@Nullable
                                              @Nullable MPSCNNConvolutionDataSource value)
        [@property] inputGateMemoryWeights Contains weights 'Vi_ij' - the 'peephole' weights - from the LSTM formula. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • setInputGateRecurrentWeights

        public void setInputGateRecurrentWeights​(@Nullable
                                                 @Nullable MPSCNNConvolutionDataSource value)
        [@property] inputGateRecurrentWeights Contains weights 'Ui_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • setMemoryWeightsAreDiagonal

        public void setMemoryWeightsAreDiagonal​(boolean value)
        [@property] memoryWeightsAreDiagonal If YES, then the 'peephole' weight matrices will be diagonal matrices represented as vectors of length the number of features in memory cells, that will be multiplied pointwise with the peephole matrix or image in order to achieve the diagonal (nonmixing) update. Defaults to NO.
      • setOutputGateInputWeights

        public void setOutputGateInputWeights​(@Nullable
                                              @Nullable MPSCNNConvolutionDataSource value)
        [@property] outputGateInputWeights Contains weights 'Wo_ij', bias 'bo_i' and neuron 'go' from the LSTM formula. If nil then assumed zero weights, bias and no neuron (identity mapping). Defaults to nil.
      • setOutputGateMemoryWeights

        public void setOutputGateMemoryWeights​(@Nullable
                                               @Nullable MPSCNNConvolutionDataSource value)
        [@property] outputGateMemoryWeights Contains weights 'Vo_ij' - the 'peephole' weights - from the LSTM. if YES == memoryWeightsAreDiagonal, then the number of weights used is the number of features in the memory cell image/matrix. If nil then assumed zero weights. Defaults to nil.
      • setOutputGateRecurrentWeights

        public void setOutputGateRecurrentWeights​(@Nullable
                                                  @Nullable MPSCNNConvolutionDataSource value)
        [@property] outputGateRecurrentWeights Contains weights 'Uo_ij' from the LSTM formula. If nil then assumed zero weights. Defaults to nil.
      • setVersion_static

        public static void setVersion_static​(long aVersion)
      • superclass_static

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

        public static long version_static()
      • cellToOutputNeuronParamC

        public float cellToOutputNeuronParamC()
        [@property] cellToOutputNeuronParamC Neuron parameter C for 'gh'. Defaults to 1.0f.
      • setCellToOutputNeuronParamC

        public void setCellToOutputNeuronParamC​(float value)
        [@property] cellToOutputNeuronParamC Neuron parameter C for 'gh'. Defaults to 1.0f.
      • useStoredAccessor

        @Deprecated
        public static boolean useStoredAccessor()
        Deprecated.