class_docstr: FNN which also called DNN is a basic version of CTR model that use mlp from field features to predict score.
  
  Note:
      Based on the experiments in the paper above, This implementation incorporate
      Dropout instead of L2 normalization to relieve over-fitting.
      Our implementation of FNN is a basic version without pretrain support.
      If you want to pretrain the feature embedding as the original paper,
      we suggest you to construct a advanced FNN model and train it in two-stage
      process with our FM model.
class_docstr_tok: ["FNN","which","also","called","DNN","is","a","basic","version","of","CTR","model","that","use","mlp","from","field","features","to","predict","score",".","Note",":","Based","on","the","experiments","in","the","paper","above",",","This","implementation","incorporate","Dropout","instead","of","L2","normalization","to","relieve","over-fitting",".","Our","implementation","of","FNN","is","a","basic","version","without","pretrain","support",".","If","you","want","to","pretrain","the","feature","embedding","as","the","original","paper",",","we","suggest","you","to","construct","a","advanced","FNN","model","and","train","it","in","two-stage","process","with","our","FM","model","."]
code: def forward(self, interaction):
      fnn_all_embeddings = self.concat_embed_input_fields(
          interaction
      )  # [batch_size, num_field, embed_dim]
      batch_size = fnn_all_embeddings.shape[0]
  
      output = self.predict_layer(
          self.mlp_layers(fnn_all_embeddings.view(batch_size, -1))
      )
      return output.squeeze(-1)
  
file_path: RecBole/recbole/model/context_aware_recommender/fnn.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 MLPLayers
label_desc: Use image node_id 3 for calling the FNN obj's underlying member method code with example usage: obj.forward(interaction) and returns: output