class_docstr: vanilla stacked layer Seq2Seq model.
  
  Parameters
  ----------
  decoder_seq_length: int
      The length of your target sequence
  cell_enc : TensorFlow cell function
      The RNN function cell for your encoder stack, e.g tf.keras.layers.GRUCell
  cell_dec : TensorFlow cell function
      The RNN function cell for your decoder stack, e.g. tf.keras.layers.GRUCell
  n_layer : int
      The number of your RNN layers for both encoder and decoder block
  embedding_layer : tl.Layer
      A embedding layer, e.g. tl.layers.Embedding(vocabulary_size=voc_size, embedding_size=emb_dim)
  name : str
      The model name
  
  Examples
  ---------
  Classify stacked-layer Seq2Seq model, see `chatbot <https://github.com/tensorlayer/seq2seq-chatbot>`__
  
  Returns
  -------
      static stacked-layer Seq2Seq model.
class_docstr_tok: ["vanilla","stacked","layer","Seq2Seq","model",".","Parameters","--","--","--","--","--","decoder_seq_length",":","int","The","length","of","your","target","sequence","cell_enc",":","TensorFlow","cell","function","The","RNN","function","cell","for","your","encoder","stack",",","e.g","tf.keras.layers.GRUCell","cell_dec",":","TensorFlow","cell","function","The","RNN","function","cell","for","your","decoder","stack",",","e.g",".","tf.keras.layers.GRUCell","n_layer",":","int","The","number","of","your","RNN","layers","for","both","encoder","and","decoder","block","embedding_layer",":","tl.Layer","A","embedding","layer",",","e.g",".","tl.layers.Embedding","(","vocabulary_size=voc_size",",","embedding_size=emb_dim",")","name",":","str","The","model","name","Examples","--","--","--","--","-","Classify","stacked-layer","Seq2Seq","model",",","see","`","chatbot","<","https",":","\/\/github.com\/tensorlayer\/seq2seq-chatbot",">","`","__","Returns","--","--","--","-","static","stacked-layer","Seq2Seq","model","."]
code: def forward(
      self,
      inputs,
      seq_length=20,
      start_token=None,
      return_state=False,
      top_n=None,
  ):
      state = [None for i in range(self.n_layer)]
      if self.is_train:
          encoding = inputs[0]
          enc_output = self.embedding_layer(encoding)
  
          for i in range(self.n_layer):
              enc_output, state[i] = self.enc_layers[i](
                  enc_output, return_state=True
              )
  
          decoding = inputs[1]
          dec_output = self.embedding_layer(decoding)
  
          for i in range(self.n_layer):
              dec_output, state[i] = self.dec_layers[i](
                  dec_output, initial_state=state[i], return_state=True
              )
  
          dec_output = self.reshape_layer(dec_output)
          denser_output = self.dense_layer(dec_output)
          output = self.reshape_layer_after(denser_output)
      else:
          encoding = inputs
          output, state = self.inference(
              encoding, seq_length, start_token, top_n
          )
  
      if return_state:
          return output, state
      else:
          return output
  
file_path: TensorLayer/tensorlayer/models/seq2seq.py
imports: import numpy
  import tensorflow
  import tensorlayer
  from tensorlayer.layers import Dense, Dropout, Input
  from tensorlayer.layers.core import Layer
  from tensorlayer.models import Model
label_desc: Use image node_id 3 for calling the Seq2seq obj's underlying member method code with example usage: obj.forward(inputs, seq_length, start_token, return_state, top_n) and returns: output,  state, output