code: def forward(self, inputs, begin_state): # pylint: disable=arguments-differ
          
          encoded = self.embedding(inputs)
          length = inputs.shape[0]
          batch_size = inputs.shape[1]
          encoded, state = self.encoder.unroll(length, encoded, begin_state,
                                               layout='TNC', merge_outputs=True)
          encoded = encoded.reshape((-1, self._projection_size))
          out = self.decoder(encoded)
          out = out.reshape((length, batch_size, -1))
          return out, state
docs: Implement forward computation.
  
          Parameters
          -----------
          inputs : NDArray
              input tensor with shape `(sequence_length, batch_size)`
              when `layout` is "TNC".
          begin_state : list
              initial recurrent state tensor with length equals to num_layers*2.
              For each layer the two initial states have shape `(batch_size, num_hidden)`
              and `(batch_size, num_projection)`
  
          Returns
          --------
          out : NDArray
              output tensor with shape `(sequence_length, batch_size, vocab_size)`
                when `layout` is "TNC".
          out_states : list
              output recurrent state tensor with length equals to num_layers*2.
              For each layer the two initial states have shape `(batch_size, num_hidden)`
              and `(batch_size, num_projection)`