Welcome to our Support Center

Bidirectional

Description

Setup and add the bidirectional layer into the model during the definition graph step. Type : polymorphic.

 

Input parameters

 

Graph in : model architecture.

parameters : layer parameters.

layer : rnn layer instance (RNN, GRU, LSTM, SimpleRNN).
merge_mode : enum, mode by which outputs of the forward and backward RNNs will be combined.
Default value “concat”.
backward_layer : rnn layer instance, (RNN, GRU, LSTM, SimpleRNN).
 training? : boolean, whether the layer is in training mode (can store data for backward).
Default value “True”.
 store? : boolean, whether the layer stores the last iteration gradient (accessible via the “get_gradients” function).
Default value “False”.
 update? : boolean, whether the layer’s variables should be updated during backward. Equivalent to freeze the layer.
Default value “True”.
 lda_coeff : float, defines the coefficient by which the loss derivative will be multiplied before being sent to the previous layer (since during the backward run we go backwards).
Default value “1”.

in/out param :

input_shape : integer array, shape (not including the batch axis). NB : To be used only if it is the first layer of the model.
 output_behavior : enum, setup if the layer is an output layer.
Default “Not Output”​​.

name (optional) : string, name of the layer.

 

Output parameters

 

Graph out : model architecture.

Dimension

Input shape

3D tensor with shape (batch_size, timesteps, features).

 

Output shape

If return_sequences = ‘True’ && merge_mode = ‘concat’ : 3D tensor with shape (batch_size, timesteps, 2*units).
If return_sequences = ‘True’ && merge_mode =! ‘concat’ : 3D tensor with shape (batch_size, timesteps, units).

If return_sequences = ‘False’ && merge_mode = ‘concat’ : 2D tensor with shape (batch_size, 2*units).
If return_sequences = ‘False’ && merge_mode =! ‘concat’ : 2D tensor with shape (batch_size, units).

Example

All these exemples are snippets PNG, you can drop these Snippet onto the block diagram and get the depicted code added to your VI (Do not forget to install HAIBAL library to run it).

Bidirectional layer

1 – Generate a set of data

We generate an array of data of type single and shape [batch_size = 10, timesteps = 7, features = 5].

2 – Define graph

First, we define the first layer of the graph which is an Input layer (explicit input layer method). This layer is setup as an input array shaped [timesteps = 7, features = 5].
Then we add to the graph the Bidirectional layer.

3 – Run graph

We call the forward method and retrieve the result with the “Prediction 2D” method.
This method returns two variables, the first one is the layer information (cluster composed of the layer name, the graph index and the shape of the output layer) and the second one is the prediction with a shape of [batch_size, 2*units].
The output dimension depends on the parameters “return-sequences” and merge_mode, refer to the chapter “Dimension” of this documentation.

 

Bidirectional layer, batch and dimension

1 – Generate a set of data

We generate an array of data of type single and shape [number of batch = 9, batch_size = 10, timesteps = 7, features = 5].

2 – Define graph

First, we define the first layer of the graph which is an Input layer (explicit input layer method). This layer is setup as an input array shaped [timesteps = 7, features = 5].
Then we add to the graph the Bidirectional layer.

3 – Run graph

We call the forward method and retrieve the result with the “Prediction 2D” method.
This method returns two variables, the first one is the layer information (cluster composed of the layer name, the graph index and the shape of the output layer) and the second one is the prediction with a shape of [batch_size, 2*units].
The output dimension depends on the parameters “return-sequences” and merge_mode, refer to the chapter “Dimension” of this documentation.

 

Table of Contents