code: def forward(self, inputs, states=None): # pylint: disable=arguments-differ
          
          batch_size = inputs.shape[self._batch_axis]
          skip_states = states is None
          if skip_states:
              states = self.cell.begin_state(batch_size, ctx=inputs.context)
          if isinstance(states, ndarray.NDArray):
              states = [states]
          for state, info in zip(states, self.cell.state_info(batch_size)):
              if state.shape != info['shape']:
                  raise ValueError(
                      'Invalid recurrent state shape. Expecting %s, got %s.'%(
                          str(info['shape']), str(state.shape)))
          states = sum(zip(*((j for j in i) for i in states)), ())
          outputs, states = self.cell.unroll(
              inputs.shape[self._axis], inputs, states,
              layout=self._layout, merge_outputs=True)
  
          if skip_states:
              return outputs
          return outputs, states
docs: Defines the forward computation. Arguments can be either
          :py:class:`NDArray` or :py:class:`Symbol`.