code: def build_slate_ranking_network(
      self,
      state_dim,
      candidate_dim,
      _candidate_size=None,
      _slate_size=None,
  ) -> ModelBase:
      # pointwise MLP
      input_dim = state_dim + candidate_dim
      output_dim = 1
      layers = [input_dim, *self.hidden_layers, output_dim]
      activations = [
          *self.activations,
          # identity, but we'll add our own final layer
          "linear",
      ]
      mlp = FullyConnectedNetwork(
          layers=layers,
          activations=activations,
          use_batch_norm=self.use_batch_norm,
          min_std=self.min_std,
          dropout_ratio=self.dropout_ratio,
          use_layer_norm=self.use_layer_norm,
          normalize_output=self.normalize_output,
          orthogonal_init=self.orthogonal_init,
      )
      mlp = nn.Sequential(
          *[
              mlp,
              self.final_layer.get(),
          ]
      )
      return MLPScorer(mlp=mlp, has_user_feat=self.has_user_feat)
  
imports: from dataclasses import asdict
  from typing import List, Optional
  import torch
  import torch.nn
  from reagent.core.dataclasses import dataclass, field
  from reagent.core.parameters import param_hash
  from reagent.models.base import ModelBase
  from reagent.models.fully_connected_network import FullyConnectedNetwork
  from reagent.models.mlp_scorer import MLPScorer
  from reagent.net_builder.slate_ranking_net_builder import SlateRankingNetBuilder
label_desc: Use image node_id 1 for calling the SlateRankingScorer obj's underlying member method code with example usage: obj.build_slate_ranking_network(state_dim, candidate_dim, _candidate_size, _slate_size) and returns: MLPScorer