class_docstr: The user choice model for SlateQ.
  
  This class implements a multinomial logit model for predicting user clicks.
  
  Under this model, the click probability of a document is proportional to:
  
  .. math::
      \exp(   ext{beta} *     ext{doc_user_affinity} +        ext{score_no_click})
class_docstr_tok: ["The","user","choice","model","for","SlateQ",".","This","class","implements","a","multinomial","logit","model","for","predicting","user","clicks",".","Under","this","model",",","the","click","probability","of","a","document","is","proportional","to",":","..","math",":",":","\\exp","(","ext","{","beta","}","*","ext","{","doc_user_affinity","}","+","ext","{","score_no_click","}",")"]
docstr: Initializes a UserChoiceModel instance.
docstr_tok: ["Initializes","a","UserChoiceModel","instance","."]
code: def __init__(self):
      """Initializes a UserChoiceModel instance."""
      super().__init__()
      self.beta = nn.Parameter(torch.tensor(0.0, dtype=torch.float))
      self.score_no_click = nn.Parameter(
          torch.tensor(0.0, dtype=torch.float)
      )
  
file_path: ray/rllib_contrib/slate_q/src/rllib_slate_q/slate_q/slateq_torch_model.py
imports: from typing import List, Sequence
  import gymnasium
  from ray.rllib.models.torch.misc import SlimFC
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.utils.framework import try_import_torch
  from ray.rllib.utils.typing import ModelConfigDict, TensorType
label_desc: Use image node_id 1 to create a new UserChoiceModel object from inherited base classes: nn with example: obj = UserChoiceModel()