class_docstr: DSSM respectively expresses user and item as low dimensional vectors with mlp layers,
  and uses cosine distance to calculate the distance between the two semantic vectors.
code: def __init__(self, config, dataset):
      super(DSSM, self).__init__(config, dataset)
  
      # load parameters info
      self.mlp_hidden_size = config["mlp_hidden_size"]
      self.dropout_prob = config["dropout_prob"]
  
      self.user_feature_num = (
          self.user_token_field_num
          + self.user_float_field_num
          + self.user_token_seq_field_num
      )
      self.item_feature_num = (
          self.item_token_field_num
          + self.item_float_field_num
          + self.item_token_seq_field_num
      )
      user_size_list = [
          self.embedding_size * self.user_feature_num
      ] + self.mlp_hidden_size
      item_size_list = [
          self.embedding_size * self.item_feature_num
      ] + self.mlp_hidden_size
  
      # define layers and loss
      self.user_mlp_layers = MLPLayers(
          user_size_list, self.dropout_prob, activation="tanh", bn=True
      )
      self.item_mlp_layers = MLPLayers(
          item_size_list, self.dropout_prob, activation="tanh", bn=True
      )
  
      self.loss = nn.BCEWithLogitsLoss()
      self.sigmoid = nn.Sigmoid()
  
      # parameters initialization
      self.apply(self._init_weights)
  
file_path: RecBole/recbole/model/context_aware_recommender/dssm.py
imports: import torch
  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 1 to create a new DSSM object from inherited base classes: ContextRecommender with example: obj = DSSM(config, dataset)