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 bigdl.dllib.keras.layers import LSTM
  >>> bidiretional = Bidirectional(LSTM(10, return_sequences=True), input_shape=(12, 16))
  creating: createZooKerasLSTM
  creating: createZooKerasBidirectional
class_docstr_tok: ["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","bigdl.dllib.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: BigDL/python/dllib/src/bigdl/dllib/keras/layers/wrappers.py
imports: import sys
  from bigdl.dllib.keras.engine 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)