class_docstr: A trainable interface for a simple, generic encoder + decoder model
  
  # Arguments
  encoder: an encoder object
  decoder: a decoder object
  input_shape: shape of encoder input, for variable length, please use -1 as seq len
  output_shape: shape of decoder input, for variable length, please use -1 as seq len
  bridge: connect encoder and decoder
  generator: Feeding decoder output to generator to generate final result, `None` is supported
  
  >>> encoder = RNNEncoder.initialize("LSTM", 1, 4)
  creating: createZooKerasLSTM
  creating: createZooKerasRNNEncoder
  >>> decoder = RNNDecoder.initialize("LSTM", 1, 4)
  creating: createZooKerasLSTM
  creating: createZooKerasRNNDecoder
  >>> bridge = Bridge.initialize("dense", 4)
  creating: createZooKerasBridge
  >>> seq2seq = Seq2seq(encoder, decoder, [2, 4], [2, 4], bridge)
  creating: createZooKerasInput
  creating: createZooKerasInput
  creating: createZooKerasSelectTable
  creating: createZooKerasModel
  creating: createZooSeq2seq
code: def build_model(self):
      encoder_input = Input(
          name="encoder_input", shape=self.input_shape
      )
      decoder_input = Input(
          name="decoder_input", shape=self.output_shape
      )
      encoder_output = self.encoder(encoder_input)
  
      encoder_final_states = SelectTable(1)(encoder_output)
      decoder_init_states = (
          self.bridge(encoder_final_states)
          if self.bridge
          else encoder_final_states
      )
  
      decoder_output = self.decoder(
          [decoder_input, decoder_init_states]
      )
  
      output = (
          self.generator(decoder_output)
          if self.generator
          else decoder_output
      )
  
      return Model([encoder_input, decoder_input], output)
  
imports: from bigdl.nn.layer import Layer
  from zoo.pipeline.api.keras.layers import *
  from zoo.models.common import ZooModel
  from zoo.common.utils import callZooFunc
  from zoo.pipeline.api.keras.engine import ZooKerasLayer
  from zoo.pipeline.api.keras.models import Model
label_desc: Use image node_id 2 for calling the Seq2seq obj's underlying member method code with example usage: obj.build_model() and returns: Model