MPSLSTMDescriptor(3) MetalPerformanceShaders.framework MPSLSTMDescriptor(3)
NAME
MPSLSTMDescriptor
SYNOPSIS
#import <MPSRNNLayer.h>
Inherits MPSRNNDescriptor.
Class Methods
(nonnull instancetype) +
createLSTMDescriptorWithInputFeatureChannels:outputFeatureChannels:
Properties
BOOL memoryWeightsAreDiagonal
id< MPSCNNConvolutionDataSource > inputGateInputWeights
id< MPSCNNConvolutionDataSource > inputGateRecurrentWeights
id< MPSCNNConvolutionDataSource > inputGateMemoryWeights
id< MPSCNNConvolutionDataSource > forgetGateInputWeights
id< MPSCNNConvolutionDataSource > forgetGateRecurrentWeights
id< MPSCNNConvolutionDataSource > forgetGateMemoryWeights
id< MPSCNNConvolutionDataSource > outputGateInputWeights
id< MPSCNNConvolutionDataSource > outputGateRecurrentWeights
id< MPSCNNConvolutionDataSource > outputGateMemoryWeights
id< MPSCNNConvolutionDataSource > cellGateInputWeights
id< MPSCNNConvolutionDataSource > cellGateRecurrentWeights
id< MPSCNNConvolutionDataSource > cellGateMemoryWeights
MPSCNNNeuronType cellToOutputNeuronType
float cellToOutputNeuronParamA
float cellToOutputNeuronParamB
Detailed Description
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 MPSRNNImageInferenceLayer) or
matrix-vector/matrix multiplication (see 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.
Method Documentation
+ (nonnull instancetype) createLSTMDescriptorWithInputFeatureChannels:
(NSUInteger) inputFeatureChannels(NSUInteger) 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.
Property Documentation
- cellGateInputWeights [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
Contains weights 'Uc_ij' from the LSTM formula. If nil then assumed
zero weights. Defaults to nil.
- cellToOutputNeuronParamA [read], [write], [nonatomic], [assign]
Neuron parameter A for 'gh'. Defaults to 1.0f.
- cellToOutputNeuronParamB [read], [write], [nonatomic], [assign]
Neuron parameter B for 'gh'. Defaults to 1.0f.
- cellToOutputNeuronType [read], [write], [nonatomic], [assign]
Neuron type definition for 'gh', see MPSCNNNeuronType. Defaults to
MPSCNNNeuronTypeTanH.
- forgetGateInputWeights [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
Contains weights 'Uf_ij' from the LSTM formula. If nil then assumed
zero weights. Defaults to nil.
- inputGateInputWeights [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
Contains weights 'Ui_ij' from the LSTM formula. If nil then assumed
zero weights. Defaults to nil.
- memoryWeightsAreDiagonal [read], [write], [nonatomic], [assign]
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 [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
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 [read], [write], [nonatomic], [retain]
Contains weights 'Uo_ij' from the LSTM formula. If nil then assumed
zero weights. Defaults to nil.
Author
Generated automatically by Doxygen for
MetalPerformanceShaders.framework from the source code.
Version MetalPerformanceShaders-Thu2Jul 13 2017 MPSLSTMDescriptor(3)
Mac OS X 10.12.6 - Generated Mon Oct 30 18:44:49 CDT 2017