class_docstr: Bidirectional wrapper for RNNs.
  Bidirectional currently requires RNNs to return the full sequence, i.e. return_sequences = True.
  
  When you use this layer as the first layer of a model, you need to provide the argument
  input_shape (a shape tuple, does not include the batch dimension).
  Example of creating a bidirectional LSTM:
  Bidirectiona(LSTM(12, return_sequences=True), merge_mode="sum", input_shape=(32, 32))
  
  # Arguments
  layer: An instance of a recurrent layer.
  merge_mode: Mode by which outputs of the forward and backward RNNs will be combined.
              Must be one of: 'sum', 'mul', 'concat', 'ave'. Default is 'concat'.
  input_shape: A shape tuple, not including batch.
  name: String to set the name of the wrapper.
        If not specified, its name will by default to be a generated string.
  
  >>> from zoo.pipeline.api.keras.layers import LSTM
  >>> bidiretional = Bidirectional(LSTM(10, return_sequences=True), input_shape=(12, 16))
  creating: createZooKerasLSTM
  creating: createZooKerasBidirectional
code: def __init__(
      self, layer, merge_mode="concat", input_shape=None, **kwargs
  ):
      super(Bidirectional, self).__init__(
          None,
          layer,
          merge_mode,
          list(input_shape) if input_shape else None,
          **kwargs,
      )
  
file_path: analytics-zoo/pyzoo/zoo/pipeline/api/keras/layers/wrappers.py
imports: import sys
  from ..engine.topology import ZooKerasLayer
label_desc: Use image node_id 1 to create a new Bidirectional object from inherited base classes: ZooKerasLayer with example: obj = Bidirectional(layer, merge_mode, input_shape)