class_docstr: GCSAN captures rich local dependencies via graph neural network,
   and learns long-range dependencies by applying the self-attention mechanism.
  
  Note:
  
      In the original paper, the attention mechanism in the self-attention layer is a single head,
      for the reusability of the project code, we use a unified transformer component.
      According to the experimental results, we only applied regularization to embedding.
class_docstr_tok: ["GCSAN","captures","rich","local","dependencies","via","graph","neural","network",",","and","learns","long-range","dependencies","by","applying","the","self-attention","mechanism",".","Note",":","In","the","original","paper",",","the","attention","mechanism","in","the","self-attention","layer","is","a","single","head",",","for","the","reusability","of","the","project","code",",","we","use","a","unified","transformer","component",".","According","to","the","experimental","results",",","we","only","applied","regularization","to","embedding","."]
code: def full_sort_predict(self, interaction):
      item_seq = interaction[self.ITEM_SEQ]
      item_seq_len = interaction[self.ITEM_SEQ_LEN]
      seq_output = self.forward(item_seq, item_seq_len)
      test_items_emb = self.item_embedding.weight
      scores = torch.matmul(
          seq_output, test_items_emb.transpose(0, 1)
      )  # [B, n_items]
      return scores
  
imports: import math
  import numpy
  import torch
  from torch import nn
  from torch.nn import Parameter
  from torch.nn import functional
  from recbole.model.abstract_recommender import SequentialRecommender
  from recbole.model.layers import TransformerEncoder
  from recbole.model.loss import EmbLoss, BPRLoss
label_desc: Use image node_id 7 for calling the GCSAN obj's underlying member method code with example usage: obj.full_sort_predict(interaction) and returns: scores