code: def __init__(self, config, dataset):
      super(SINE, self).__init__(config, dataset)
  
      # load dataset info
      self.n_users = dataset.user_num
      self.n_items = dataset.item_num
  
      # load parameters info
      self.device = config["device"]
      self.embedding_size = config["embedding_size"]
      self.loss_type = config["loss_type"]
      self.layer_norm_eps = config["layer_norm_eps"]
  
      if self.loss_type == "BPR":
          self.loss_fct = BPRLoss()
      elif self.loss_type == "CE":
          self.loss_fct = nn.CrossEntropyLoss()
      elif self.loss_type == "NLL":
          self.loss_fct = nn.NLLLoss()
      else:
          raise NotImplementedError(
              "Make sure 'loss_type' in ['BPR', 'CE', 'NLL']!"
          )
  
      self.D = config["embedding_size"]
      self.L = config["prototype_size"]  # 500 for movie-len dataset
      self.k = config["interest_size"]  # 4 for movie-len dataset
      self.tau = config["tau_ratio"]  # 0.1 in paper
      self.reg_loss_ratio = config["reg_loss_ratio"]  # 0.1 in paper
  
      self.initializer_range = 0.01
  
      self.w1 = self._init_weight((self.D, self.D))
      self.w2 = self._init_weight(self.D)
      self.w3 = self._init_weight((self.D, self.D))
      self.w4 = self._init_weight(self.D)
  
      self.C = nn.Embedding(self.L, self.D)
  
      self.w_k_1 = self._init_weight((self.k, self.D, self.D))
      self.w_k_2 = self._init_weight((self.k, self.D))
      self.item_embedding = nn.Embedding(
          self.n_items, self.D, padding_idx=0
      )
      self.ln2 = nn.LayerNorm(
          self.embedding_size, eps=self.layer_norm_eps
      )
      self.ln4 = nn.LayerNorm(
          self.embedding_size, eps=self.layer_norm_eps
      )
  
      # parameters initialization
      self.apply(self._init_weights)
  
file_path: RecBole/recbole/model/sequential_recommender/sine.py
imports: import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn.init import xavier_normal_
  from recbole.model.abstract_recommender import SequentialRecommender
  from recbole.model.loss import BPRLoss
  from recbole.utils import InputType
label_desc: Use image node_id 1 to create a new SINE object from inherited base classes: SequentialRecommender with example: obj = SINE(config, dataset)