class_docstr: Base SSLModel Configuration
  Args:
      encoder_config (Optional[ModelConfig]): The config of the encoder to be used for the
              model. Should be one of the model configs defined in PyTorch Tabular
  
      decoder_config (Optional[ModelConfig]): The config of decoder to be used for the model.
              Should be one of the model configs defined in PyTorch Tabular. Defaults to nn.Identity
  
      embedding_dims (Optional[List]): The dimensions of the embedding for each categorical column as a
              list of tuples (cardinality, embedding_dim). If left empty, will infer using the cardinality of
              the categorical column using the rule min(50, (x + 1) // 2)
  
      embedding_dropout (float): Dropout to be applied to the Categorical Embedding. Defaults to 0.1
  
      batch_norm_continuous_input (bool): If True, we will normalize the continuous layer by passing it
              through a BatchNorm layer.
  
      virtual_batch_size (Optional[int]): If not None, all BatchNorms will be converted to GhostBatchNorm's
              with the specified virtual batch size. Defaults to None
  
      learning_rate (float): The learning rate of the model. Defaults to 1e-3
  
      seed (int): The seed for reproducibility. Defaults to 42
class_docstr_tok: ["Base","SSLModel","Configuration","Args",":","encoder_config","(","Optional","[","ModelConfig","]",")",":","The","config","of","the","encoder","to","be","used","for","the","model",".","Should","be","one","of","the","model","configs","defined","in","PyTorch","Tabular","decoder_config","(","Optional","[","ModelConfig","]",")",":","The","config","of","decoder","to","be","used","for","the","model",".","Should","be","one","of","the","model","configs","defined","in","PyTorch","Tabular",".","Defaults","to","nn.Identity","embedding_dims","(","Optional","[","List","]",")",":","The","dimensions","of","the","embedding","for","each","categorical","column","as","a","list","of","tuples","(","cardinality",",","embedding_dim",")",".","If","left","empty",",","will","infer","using","the","cardinality","of","the","categorical","column","using","the","rule","min","(","50",",","(","x","+","1",")","\/\/","2",")","embedding_dropout","(","float",")",":","Dropout","to","be","applied","to","the","Categorical","Embedding",".","Defaults","to","0.1","batch_norm_continuous_input","(","bool",")",":","If","True",",","we","will","normalize","the","continuous","layer","by","passing","it","through","a","BatchNorm","layer",".","virtual_batch_size","(","Optional","[","int","]",")",":","If","not","None",",","all","BatchNorms","will","be","converted","to","GhostBatchNorm's","with","the","specified","virtual","batch","size",".","Defaults","to","None","learning_rate","(","float",")",":","The","learning","rate","of","the","model",".","Defaults","to","1e-3","seed","(","int",")",":","The","seed","for","reproducibility",".","Defaults","to","42"]
code: def __post_init__(self):
      assert self.task == "ssl", f"task should be ssl, got {self.task}"
      # For Custom models, setting these values for compatibility
      if not hasattr(self, "_config_name"):
          self._config_name = type(self).__name__
      if not hasattr(self, "_model_name"):
          self._model_name = re.sub(
              "[Cc]onfig", "Model", self._config_name
          )
      _validate_choices(self)
  
imports: import os
  import re
  from dataclasses import MISSING, dataclass, field
  from typing import Any, Dict, Iterable, List, Optional
  from omegaconf import OmegaConf
  from pytorch_tabular.models.common import heads
  from pytorch_tabular.utils import get_logger
label_desc: Use image node_id 1 for calling the SSLModelConfig obj's underlying member method code with example usage: obj.__post_init__() without return types