class_docstr: CenterPivot 4D conv
  
  Args:
      in_channels (`int`):
          Number of input channels.
      out_channels (`int`):
          Number of output channels.
      kernel_size (`list or tuple`):
          Numbers for kernel size.
      stride (`list or tuple`):
          Numbers for stride.
      padding (`list or tuple`):
          Numbers for padding.
      bias (`bool`):
          Whether to add bias for conv layer.
code: def prune_out2(self, ct):
      bsz, ch, ha, wa, hb, wb = ct.size()
      idxh = torch.arange(
          start=0, end=ha, step=self.stride[:2][0], device=ct.device
      )
      idxw = torch.arange(
          start=0, end=wa, step=self.stride[:2][1], device=ct.device
      )
      self.len_h = len(idxh)
      self.len_w = len(idxw)
      self.idx = (
          idxw.repeat(self.len_h, 1)
          + idxh.repeat(self.len_w, 1).t() * wa
      ).view(-1)
      self.idx_initialized_2 = True
      ct_pruned = (
          ct.view(bsz, ch, -1, hb, wb)
          .permute(0, 1, 3, 4, 2)
          .index_select(4, self.idx)
          .permute(0, 1, 4, 2, 3)
          .view(bsz, ch, self.len_h, self.len_w, hb, wb)
      )
  
      return ct_pruned
  
imports: import torch
  from torch import nn
label_desc: Use image node_id 3 for calling the CenterPivotConv4d obj's underlying member method code with example usage: obj.prune_out2(ct) and returns: ct_pruned