class_docstr: The basic class representing a batch of interaction records.
  
  Note:
      While training, there is no strict rules for data in one Interaction object.
  
      While testing, it should be guaranteed that all interaction records of one single
      user will not appear in different Interaction object, and records of the same user
      should be continuous. Meanwhile, the positive cases of one user always need to occur
      **earlier** than this user's negative cases.
  
      A correct example:
          =======     =======     =======
          user_id     item_id     label
          =======     =======     =======
          1           2           1
          1           6           1
          1           3           1
          1           1           0
          2           3           1
          ...         ...         ...
          =======     =======     =======
  
      Some wrong examples for Interaction objects used in testing:
  
      1.
          =======     =======     =======     ============
          user_id     item_id     label
          =======     =======     =======     ============
          1           2           1
          1           6           0           # positive cases of one user always need to
  
                                              occur earlier than this user's negative cases
          1           3           1
          1           1           0
          2           3           1
          ...         ...         ...
          =======     =======     =======     ============
  
      2.
          =======     =======     =======     ========
          user_id     item_id     label
          =======     =======     =======     ========
          1           2           1
          1           6           1
          1           3           1
          2           3           1           # records of the same user should be continuous.
          1           1           0
          ...         ...         ...
          =======     =======     =======     ========
  
  Attributes:
      interaction (dict or pandas.DataFrame): keys are meaningful str (also can be called field name),
          and values are Torch Tensor of numpy Array with shape (batch_size, \*).
code: def __str__(self):
      info = [f"The batch_size of interaction: {self.length}"]
      for k in self.interaction:
          inter = self.interaction[k]
          temp_str = f"    {k}, {inter.shape}, {inter.device.type}, {inter.dtype}"
          info.append(temp_str)
      info.append("\n")
      return "\n".join(info)
  
imports: import numpy
  import pandas
  import torch
  import torch.nn.utils.rnn
label_desc: Use image node_id 9 for calling the Interaction obj's underlying member method code with example usage: obj.__str__() and returns: str