class_docstr: CNN model of ISC.
  
  Args:
      backbone (`nn.Module`):
          Backbone module.
      fc_dim (`int=256`):
          Feature dimension of the fc layer.
      p (`float=3.0`):
          Power used in pooling for training.
      eval_p (`float=4.0`):
          Power used in pooling for evaluation.
code: def __init__(self, backbone, fc_dim=256, p=3.0, eval_p=4.0):
      super().__init__()
  
      self.backbone = backbone
      backbone_dim = [x.shape[0] for x in self.backbone.parameters()][
          -1
      ]
      if hasattr(self.backbone, "feature_info"):
          assert (
              backbone_dim
              == self.backbone.feature_info.info[-1]["num_chs"]
          )
      self.fc = nn.Linear(backbone_dim, fc_dim, bias=False)
      self.bn = nn.BatchNorm1d(fc_dim)
      self._init_params()
      self.p = p
      self.eval_p = eval_p
  
imports: import torch.cuda
  from torch import nn
label_desc: Use image node_id 1 to create a new ISCNet object from inherited base classes: nn with example: obj = ISCNet(backbone, fc_dim, p, eval_p)