class_docstr: NFM replace the fm part as a mlp to model the feature interaction.
class_docstr_tok: ["NFM","replace","the","fm","part","as","a","mlp","to","model","the","feature","interaction","."]
code: def forward(self, interaction):
      nfm_all_embeddings = self.concat_embed_input_fields(
          interaction
      )  # [batch_size, num_field, embed_dim]
      bn_nfm_all_embeddings = self.bn(self.fm(nfm_all_embeddings))
  
      output = self.predict_layer(
          self.mlp_layers(bn_nfm_all_embeddings)
      ) + self.first_order_linear(interaction)
      return output.squeeze(-1)
  
file_path: RecBole/recbole/model/context_aware_recommender/nfm.py
imports: import torch.nn
  from torch.nn.init import xavier_normal_, constant_
  from recbole.model.abstract_recommender import ContextRecommender
  from recbole.model.layers import BaseFactorizationMachine, MLPLayers
label_desc: Use image node_id 3 for calling the NFM obj's underlying member method code with example usage: obj.forward(interaction) and returns: output