code: def __init__(
      self, in_planes, out_planes, num_features, init_weight=True
  ):
      super(ScaleChannelSpatialAttention, self).__init__()
      self.channel_wise = nn.Sequential(
          nn.AdaptiveAvgPool2d(1),
          nn.Conv2d(in_planes, out_planes, 1, bias=False),
          # nn.BatchNorm2d(out_planes),
          nn.ReLU(),
          nn.Conv2d(out_planes, in_planes, 1, bias=False),
      )
      self.spatial_wise = nn.Sequential(
          # Nx1xHxW
          nn.Conv2d(1, 1, 3, bias=False, padding=1),
          nn.ReLU(),
          nn.Conv2d(1, 1, 1, bias=False),
          nn.Sigmoid(),
      )
      self.attention_wise = nn.Sequential(
          nn.Conv2d(in_planes, num_features, 1, bias=False),
          nn.Sigmoid(),
      )
      if init_weight:
          self._initialize_weights()
  
imports: import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new ScaleChannelSpatialAttention object from inherited base classes: nn with example: obj = ScaleChannelSpatialAttention(in_planes, out_planes, num_features, init_weight)