code: def forward(self,  # pylint: disable=arguments-differ
                  text_field_input: Dict[str, torch.Tensor],
                  num_wrapping_dims: int = 0) -> torch.Tensor:
          
          raise NotImplementedError
docs: Parameters
          ----------
          text_field_input : ``Dict[str, torch.Tensor]``
              A dictionary that was the output of a call to ``TextField.as_tensor``.  Each tensor in
              here is assumed to have a shape roughly similar to ``(batch_size, sequence_length)``
              (perhaps with an extra trailing dimension for the characters in each token).
          num_wrapping_dims : ``int``, optional (default=0)
              If you have a ``ListField[TextField]`` that created the ``text_field_input``, you'll
              end up with tensors of shape ``(batch_size, wrapping_dim1, wrapping_dim2, ...,
              sequence_length)``.  This parameter tells us how many wrapping dimensions there are, so
              that we can correctly ``TimeDistribute`` the embedding of each named representation.