class_docstr: HRM can well capture both sequential behavior and users’ general taste by involving transaction and
  user representations in prediction.
  
  HRM user max- & average- pooling as a good helper.
code: def forward(self, seq_item, user, seq_item_len):
      # seq_item=self.inverse_seq_item(seq_item)
      seq_item = self.inverse_seq_item(seq_item, seq_item_len)
  
      seq_item_embedding = self.item_embedding(seq_item)
      # batch_size * seq_len * embedding_size
  
      high_order_item_embedding = seq_item_embedding[
          :, -self.high_order :, :
      ]
      # batch_size * high_order * embedding_size
  
      user_embedding = self.dropout(self.user_embedding(user))
      # batch_size * embedding_size
  
      # layer 1
      if self.pooling_type_layer_1 == "max":
          high_order_item_embedding = torch.max(
              high_order_item_embedding, dim=1
          ).values
          # batch_size * embedding_size
      else:
          for idx, len in enumerate(seq_item_len):
              if len > self.high_order:
                  seq_item_len[idx] = self.high_order
          high_order_item_embedding = torch.sum(
              seq_item_embedding, dim=1
          )
          high_order_item_embedding = torch.div(
              high_order_item_embedding,
              seq_item_len.unsqueeze(1).float(),
          )
          # batch_size * embedding_size
      hybrid_user_embedding = self.dropout(
          torch.cat(
              [
                  user_embedding.unsqueeze(dim=1),
                  high_order_item_embedding.unsqueeze(dim=1),
              ],
              dim=1,
          )
      )
      # batch_size * 2_mul_embedding_size
  
      # layer 2
      if self.pooling_type_layer_2 == "max":
          hybrid_user_embedding = torch.max(
              hybrid_user_embedding, dim=1
          ).values
          # batch_size * embedding_size
      else:
          hybrid_user_embedding = torch.mean(
              hybrid_user_embedding, dim=1
          )
          # batch_size * embedding_size
  
      return hybrid_user_embedding
  
file_path: RecBole/recbole/model/sequential_recommender/hrm.py
imports: import torch
  import torch.nn
  from torch.nn.init import xavier_normal_
  from recbole.model.abstract_recommender import SequentialRecommender
  from recbole.model.loss import BPRLoss
label_desc: Use image node_id 4 for calling the HRM obj's underlying member method code with example usage: obj.forward(seq_item, user, seq_item_len) and returns: hybrid_user_embedding