class_docstr: FDSA is similar with the GRU4RecF implemented in RecBole, which uses two different Transformer encoders to
  encode items and features respectively and concatenates the two subparts' outputs as the final output.
class_docstr_tok: ["FDSA","is","similar","with","the","GRU4RecF","implemented","in","RecBole",",","which","uses","two","different","Transformer","encoders","to","encode","items","and","features","respectively","and","concatenates","the","two","subparts","'","outputs","as","the","final","output","."]
code: def predict(self, interaction):
      item_seq = interaction[self.ITEM_SEQ]
      item_seq_len = interaction[self.ITEM_SEQ_LEN]
      test_item = interaction[self.ITEM_ID]
      seq_output = self.forward(item_seq, item_seq_len)
      test_item_emb = self.item_embedding(test_item)
      scores = torch.mul(seq_output, test_item_emb).sum(dim=1)  # [B]
      return scores
  
file_path: RecBole/recbole/model/sequential_recommender/fdsa.py
imports: import torch
  from torch import nn
  from recbole.model.abstract_recommender import SequentialRecommender
  from recbole.model.layers import TransformerEncoder, FeatureSeqEmbLayer, VanillaAttention
  from recbole.model.loss import BPRLoss
label_desc: Use image node_id 5 for calling the FDSA obj's underlying member method code with example usage: obj.predict(interaction) and returns: scores