code: def forward(self, input_):
      batch, input_c, max_i, max_j = input_.shape
      x = self.conv(input_)
      x = self.padd(x)
  
      # It works only k=3.
      # TODO : Make beautiful
      a = [
          (0, max_i, 0, max_j),
          (0, max_i, 1, max_j + 1),
          (0, max_i, 2, max_j + 2),
          (1, max_i + 1, 0, max_j),
          (1, max_i + 1, 1, max_j + 1),
          (1, max_i + 1, 2, max_j + 2),
          (2, max_i + 2, 0, max_j),
          (2, max_i + 2, 1, max_j + 1),
          (2, max_i + 2, 2, max_j + 2),
      ]
  
      R = torch.zeros([batch, input_c, self.k2, max_i * max_j]).cuda()
      for dap_c in range(input_c):
          for c, (s_i, e_i, s_j, e_j) in enumerate(a):
              R[:, dap_c, c] = (
                  x[:, c, s_i:e_i, s_j:e_j].contiguous().view(batch, -1)
              )
  
      R = torch.mean(R, 2).reshape(batch, input_c, max_i, max_j)
      return R
  
imports: import torch
  import torch.nn
label_desc: Use image node_id 2 for calling the DAP obj's underlying member method code with example usage: obj.forward(input_) and returns: R