* Enable SequenceFusion, TensorIteratorToSequence, GRUCellFusion transformation in MOC, the transformations have been deleted from plugin pipelines * clean-up: delete augru transformation header * Temporary disabled TensorIterator IR reader tests * temporary disable tests, it's not TI issue, usqueeze doesn't have reference impl for fp64 and bf16 * Update ConvertTensorItearatorToSequence transformations: add Unsqueeze to pattern * Codestyle * Specify negative values for LSTM/GRU/RNN Sequence ops * fix conflicts with master branch * Insert ShapeOf subgraph in ConvertSequencesToTensorIterator transformation in case of dynamic input shape * codestyle * fix conflict with master branch * fix onednn version * Update low latency v2 to support GRU/RNN/LSTM Sequence ops, fix accuracy issue * fix tensor names * fix tensor name issue on gna * fix transformation tests, fix copying rt_info in the transformation * fix warning, enable bf16, f64 ti tests * codestyle * fix functional tests * EliminateDuplicateTIInputs transformation, fix copy_with_new_inputs method of TI op * move EliminateDuplicateTIInputs transformation * codestyle
5.3 KiB
LSTMSequence
Versioned name: LSTMSequence-1
Category: Sequence processing
Short description: LSTMSequence operation represents a series of LSTM cells. Each cell is implemented as LSTMCell operation.
Detailed description
A single cell in the sequence is implemented in the same way as in LSTMCell operation. LSTMSequence represents a sequence of LSTM cells. The sequence can be connected differently depending on direction attribute that specifies the direction of traversing of input data along sequence dimension or specifies whether it should be a bidirectional sequence. The most of the attributes are in sync with the specification of ONNX LSTM operator defined LSTMCell.
Attributes
-
hidden_size
- Description: hidden_size specifies hidden state size.
- Range of values: a positive integer
- Type:
int - Required: yes
-
activations
- Description: activations specifies activation functions for gates, there are three gates, so three activation functions should be specified as a value for this attributes
- Range of values: any combination of relu, sigmoid, tanh
- Type: a list of strings
- Default value: sigmoid,tanh,tanh
- Required: no
-
activations_alpha, activations_beta
- Description: activations_alpha, activations_beta attributes of functions; applicability and meaning of these attributes depends on chosen activation functions
- Range of values: a list of floating-point numbers
- Type:
float[] - Default value: None
- Required: no
-
clip
- Description: clip specifies bound values [-C, C] for tensor clipping. Clipping is performed before activations.
- Range of values: a positive floating-point number
- Type:
float - Default value: infinity that means that the clipping is not applied
- Required: no
-
direction
- Description: Specify if the RNN is forward, reverse, or bidirectional. If it is one of forward or reverse then
num_directions = 1, if it is bidirectional, thennum_directions = 2. Thisnum_directionsvalue specifies input/output shape requirements. - Range of values: forward, reverse, bidirectional
- Type:
string - Required: yes
- Description: Specify if the RNN is forward, reverse, or bidirectional. If it is one of forward or reverse then
Inputs
-
1:
X- 3D tensor of type T1[batch_size, seq_length, input_size], input data. It differs from LSTMCell 1st input only by additional axis with sizeseq_length. Required. -
2:
initial_hidden_state- 3D tensor of type T1[batch_size, num_directions, hidden_size], input hidden state data. Required. -
3:
initial_cell_state- 3D tensor of type T1[batch_size, num_directions, hidden_size], input cell state data. Required. -
4:
sequence_lengths- 1D tensor of type T2[batch_size], specifies real sequence lengths for each batch element. In case of negative values in this input, the operation behavior is undefined. Required. -
5:
W- 3D tensor of type T1[num_directions, 4 * hidden_size, input_size], the weights for matrix multiplication, gate order: fico. Required. -
6:
R- 3D tensor of type T1[num_directions, 4 * hidden_size, hidden_size], the recurrence weights for matrix multiplication, gate order: fico. Required. -
7:
B- 2D tensor of type T1[num_directions, 4 * hidden_size], the sum of biases (weights and recurrence weights). Required.
Outputs
-
1:
Y– 3D tensor of type T1[batch_size, num_directions, seq_len, hidden_size], concatenation of all the intermediate output values of the hidden. -
2:
Ho- 3D tensor of type T1[batch_size, num_directions, hidden_size], the last output value of hidden state. -
3:
Co- 3D tensor of type T1[batch_size, num_directions, hidden_size], the last output value of cell state.
Types
- T1: any supported floating-point type.
- T2: any supported integer type.
Example
<layer ... type="LSTMSequence" ...>
<data hidden_size="128"/>
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
<dim>16</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>1</dim>
<dim>128</dim>
</port>
<port id="2">
<dim>1</dim>
<dim>1</dim>
<dim>128</dim>
</port>
<port id="3">
<dim>1</dim>
</port>
<port id="4">
<dim>1</dim>
<dim>512</dim>
<dim>16</dim>
</port>
<port id="5">
<dim>1</dim>
<dim>512</dim>
<dim>128</dim>
</port>
<port id="6">
<dim>1</dim>
<dim>512</dim>
</port>
</input>
<output>
<port id="7">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
<dim>128</dim>
</port>
<port id="8">
<dim>1</dim>
<dim>1</dim>
<dim>128</dim>
</port>
<port id="9">
<dim>1</dim>
<dim>1</dim>
<dim>128</dim>
</port>
</output>
</layer>