class_docstr: TODO
code: def __init__(
      self,
      model_config: AttrDict,
      in_channels: int,
      dims: List[int],
      use_bn: bool = False,
      use_relu: bool = False,
  ):
      super().__init__()
      # '''
      self.channel_bn = nn.BatchNorm2d(
          in_channels,
          eps=model_config.HEAD.BATCHNORM_EPS,
          momentum=model_config.HEAD.BATCHNORM_MOMENTUM,
      )
      # '''
      # self.channel_bn = nn.Identity()
      layers = MLP.create_layers(
          model_config, dims, use_bn=use_bn, use_relu=use_relu
      )
      self.clf = nn.Sequential(*layers)
  
file_path: vissl/vissl/models/heads/mlp_pooled.py
imports: from typing import List
  import torch
  import torch.nn
  from vissl.config import AttrDict
  from vissl.losses.cross_entropy_multiple_output_single_target import EnsembleOutput
  from vissl.models.heads import register_model_head
  from vissl.models.heads.mlp import MLP
label_desc: Use image node_id 1 to create a new LinearEvalPooledMLP object from inherited base classes: nn with example: obj = LinearEvalPooledMLP(model_config, in_channels, dims, use_bn, use_relu)