class_docstr: ENMF is an efficient non-sampling model for general recommendation.
  In order to run non-sampling model, please set the neg_sampling parameter as None .
class_docstr_tok: ["ENMF","is","an","efficient","non-sampling","model","for","general","recommendation",".","In","order","to","run","non-sampling","model",",","please","set","the","neg_sampling","parameter","as","None","."]
code: def forward(self, user):
      user_embedding = self.user_embedding(
          user
      )  # shape:[B, embedding_size]
      user_embedding = self.dropout(
          user_embedding
      )  # shape:[B, embedding_size]
  
      user_inter = self.history_item_matrix[user]  # shape :[B, max_len]
      item_embedding = self.item_embedding(
          user_inter
      )  # shape: [B, max_len, embedding_size]
      score = torch.mul(
          user_embedding.unsqueeze(1), item_embedding
      )  # shape: [B, max_len, embedding_size]
      score = self.H_i(score)  # shape: [B,max_len,1]
      score = score.squeeze(-1)  # shape:[B,max_len]
  
      return score
  
file_path: RecBole/recbole/model/general_recommender/enmf.py
imports: import torch
  import torch.nn
  from recbole.model.init import xavier_normal_initialization
  from recbole.utils import InputType
  from recbole.model.abstract_recommender import GeneralRecommender
label_desc: Use image node_id 3 for calling the ENMF obj's underlying member method code with example usage: obj.forward(user) and returns: score