class_docstr: SSE-PT Model
  
  :Citation:
  
  Wu L., Li S., Hsieh C-J., Sharpnack J., SSE-PT: Sequential Recommendation
  Via Personalized Transformer, RecSys, 2020.
  TF 1.x codebase: https://github.com/SSE-PT/SSE-PT
  TF 2.x codebase (SASREc): https://github.com/nnkkmto/SASRec-tf2
docstr: Model initialization.
  
  Args:
      item_num (int): Number of items in the dataset.
      seq_max_len (int): Maximum number of items in user history.
      num_blocks (int): Number of Transformer blocks to be used.
      embedding_dim (int): Item embedding dimension.
      attention_dim (int): Transformer attention dimension.
      conv_dims (list): List of the dimensions of the Feedforward layer.
      dropout_rate (float): Dropout rate.
      l2_reg (float): Coefficient of the L2 regularization.
      num_neg_test (int): Number of negative examples used in testing.
      user_num (int): Number of users in the dataset.
      user_embedding_dim (int): User embedding dimension.
      item_embedding_dim (int): Item embedding dimension.
docstr_tok: ["Model","initialization",".","Args",":","item_num","(","int",")",":","Number","of","items","in","the","dataset",".","seq_max_len","(","int",")",":","Maximum","number","of","items","in","user","history",".","num_blocks","(","int",")",":","Number","of","Transformer","blocks","to","be","used",".","embedding_dim","(","int",")",":","Item","embedding","dimension",".","attention_dim","(","int",")",":","Transformer","attention","dimension",".","conv_dims","(","list",")",":","List","of","the","dimensions","of","the","Feedforward","layer",".","dropout_rate","(","float",")",":","Dropout","rate",".","l2_reg","(","float",")",":","Coefficient","of","the","L2","regularization",".","num_neg_test","(","int",")",":","Number","of","negative","examples","used","in","testing",".","user_num","(","int",")",":","Number","of","users","in","the","dataset",".","user_embedding_dim","(","int",")",":","User","embedding","dimension",".","item_embedding_dim","(","int",")",":","Item","embedding","dimension","."]
code: def __init__(self, **kwargs):
      """Model initialization.
  
      Args:
          item_num (int): Number of items in the dataset.
          seq_max_len (int): Maximum number of items in user history.
          num_blocks (int): Number of Transformer blocks to be used.
          embedding_dim (int): Item embedding dimension.
          attention_dim (int): Transformer attention dimension.
          conv_dims (list): List of the dimensions of the Feedforward layer.
          dropout_rate (float): Dropout rate.
          l2_reg (float): Coefficient of the L2 regularization.
          num_neg_test (int): Number of negative examples used in testing.
          user_num (int): Number of users in the dataset.
          user_embedding_dim (int): User embedding dimension.
          item_embedding_dim (int): Item embedding dimension.
      """
      super().__init__(**kwargs)
  
      self.user_num = kwargs.get("user_num", None)  # New
      self.conv_dims = kwargs.get("conv_dims", [200, 200])  # modified
      self.user_embedding_dim = kwargs.get(
          "user_embedding_dim", self.embedding_dim
      )  # extra
      self.item_embedding_dim = kwargs.get(
          "item_embedding_dim", self.embedding_dim
      )
      self.hidden_units = (
          self.item_embedding_dim + self.user_embedding_dim
      )
  
      # New, user embedding
      self.user_embedding_layer = tf.keras.layers.Embedding(
          input_dim=self.user_num + 1,
          output_dim=self.user_embedding_dim,
          name="user_embeddings",
          mask_zero=True,
          input_length=1,
          embeddings_regularizer=tf.keras.regularizers.L2(self.l2_reg),
      )
      self.positional_embedding_layer = tf.keras.layers.Embedding(
          self.seq_max_len,
          self.user_embedding_dim
          + self.item_embedding_dim,  # difference
          name="positional_embeddings",
          mask_zero=False,
          embeddings_regularizer=tf.keras.regularizers.L2(self.l2_reg),
      )
      self.dropout_layer = tf.keras.layers.Dropout(self.dropout_rate)
      self.encoder = Encoder(
          self.num_blocks,
          self.seq_max_len,
          self.hidden_units,
          self.hidden_units,
          self.attention_num_heads,
          self.conv_dims,
          self.dropout_rate,
      )
      self.mask_layer = tf.keras.layers.Masking(mask_value=0)
      self.layer_normalization = LayerNormalization(
          self.seq_max_len, self.hidden_units, 1e-08
      )
  
file_path: recommenders/recommenders/models/sasrec/ssept.py
imports: import tensorflow
  from recommenders.models.sasrec.model import SASREC, Encoder, LayerNormalization
label_desc: Use image node_id 1 to create a new SSEPT object from inherited base classes: SASREC with example: obj = SSEPT()