code: def _infer_shape(ctx, input, weight):
      n = input.size(0)
      channels_out = weight.size(0)
      height, width = input.shape[2:4]
      kernel_h, kernel_w = weight.shape[2:4]
      height_out = (
          height + 2 * ctx.padding - (ctx.dilation * (kernel_h - 1) + 1)
      ) // ctx.stride + 1
      width_out = (
          width + 2 * ctx.padding - (ctx.dilation * (kernel_w - 1) + 1)
      ) // ctx.stride + 1
      return n, channels_out, height_out, width_out
  
file_path: EasyOCR/easyocr/DBNet/assets/ops/dcn/functions/deform_conv.py
imports: import os
  import torch
  import warnings
  from torch.autograd import Function
  from torch.nn.modules.utils import _pair
  from torch.utils import cpp_extension
label_desc: Use image node_id 3 for calling the ModulatedDeformConvFunction obj's underlying member method code with example usage: obj._infer_shape(ctx, input, weight) and returns: n,  channels_out,  height_out,  width_out