class_docstr: Deconvolutional ResNet.
  
  Parameters
  ----------
  base_network : str
      Name of the base feature extraction network.
  deconv_filters : list of int
      Number of filters for deconv layers.
  deconv_kernels : list of int
      Kernel sizes for deconv layers.
  pretrained_base : bool
      Whether load pretrained base network.
  norm_layer : mxnet.gluon.nn.HybridBlock
      Type of Norm layers, can be BatchNorm, SyncBatchNorm, GroupNorm, etc.
  norm_kwargs : dict
      Additional kwargs for `norm_layer`.
  use_dcnv2 : bool
      If true, will use DCNv2 layers in upsampling blocks
docstr: Make deconv layers using the configs
docstr_tok: ["Make","deconv","layers","using","the","configs"]
code: def _make_deconv_layer(self, num_filters, num_kernels):
      # pylint: disable=unused-variable
      """Make deconv layers using the configs"""
      assert len(num_kernels) == len(
          num_filters
      ), "Deconv filters and kernels number mismatch: {} vs. {}".format(
          len(num_filters), len(num_kernels)
      )
  
      layers = nn.HybridSequential("deconv_")
      with warnings.catch_warnings(record=True) as w:
          warnings.simplefilter("always")
          self.base_network.initialize()
      in_planes = self.base_network(
          mx.nd.zeros((1, 3, 256, 256))
      ).shape[1]
      for planes, k in zip(num_filters, num_kernels):
          kernel, padding, output_padding = self._get_deconv_cfg(k)
          if self._use_dcnv2:
              assert hasattr(
                  contrib.cnn, "ModulatedDeformableConvolution"
              ), "No ModulatedDeformableConvolution found in mxnet, consider upgrade..."
              layers.add(
                  contrib.cnn.ModulatedDeformableConvolution(
                      planes,
                      kernel_size=3,
                      strides=1,
                      padding=1,
                      dilation=1,
                      num_deformable_group=1,
                      in_channels=in_planes,
                  )
              )
          else:
              layers.add(
                  nn.Conv2D(
                      channels=planes,
                      kernel_size=3,
                      strides=1,
                      padding=1,
                      in_channels=in_planes,
                  )
              )
          layers.add(
              self._norm_layer(momentum=0.9, **self._norm_kwargs)
          )
          layers.add(nn.Activation("relu"))
          layers.add(
              nn.Conv2DTranspose(
                  channels=planes,
                  kernel_size=kernel,
                  strides=2,
                  padding=padding,
                  output_padding=output_padding,
                  use_bias=False,
                  in_channels=planes,
                  weight_initializer=BilinearUpSample(),
              )
          )
          layers.add(
              self._norm_layer(momentum=0.9, **self._norm_kwargs)
          )
          layers.add(nn.Activation("relu"))
          in_planes = planes
  
      return layers
  
imports: from __future__ import absolute_import
  import warnings
  import math
  import mxnet
  from mxnet.context import cpu
  from mxnet.gluon import nn
  from mxnet.gluon import contrib
  from ..model_zoo import get_model
label_desc: Use image node_id 3 for calling the DeconvResnet obj's underlying member method code with example usage: obj._make_deconv_layer(num_filters, num_kernels) and returns: layers