class_docstr: ConvUpsample performs 2x upsampling after Conv.
  
  There are several `ConvModule` layers. In the first few layers, upsampling
  will be applied after each layer of convolution. The number of upsampling
  must be no more than the number of ConvModule layers.
  
  Args:
      in_channels (int): Number of channels in the input feature map.
      inner_channels (int): Number of channels produced by the convolution.
      num_layers (int): Number of convolution layers.
      num_upsample (int | optional): Number of upsampling layer. Must be no
          more than num_layers. Upsampling will be applied after the first
          ``num_upsample`` layers of convolution. Default: ``num_layers``.
      conv_cfg (dict): Config dict for convolution layer. Default: None,
          which means using conv2d.
      norm_cfg (dict): Config dict for normalization layer. Default: None.
      init_cfg (dict): Config dict for initialization. Default: None.
      kwargs (key word augments): Other augments used in ConvModule.
class_docstr_tok: ["ConvUpsample","performs","2x","upsampling","after","Conv",".","There","are","several","`","ConvModule","`","layers",".","In","the","first","few","layers",",","upsampling","will","be","applied","after","each","layer","of","convolution",".","The","number","of","upsampling","must","be","no","more","than","the","number","of","ConvModule","layers",".","Args",":","in_channels","(","int",")",":","Number","of","channels","in","the","input","feature","map",".","inner_channels","(","int",")",":","Number","of","channels","produced","by","the","convolution",".","num_layers","(","int",")",":","Number","of","convolution","layers",".","num_upsample","(","int","|","optional",")",":","Number","of","upsampling","layer",".","Must","be","no","more","than","num_layers",".","Upsampling","will","be","applied","after","the","first","``","num_upsample","``","layers","of","convolution",".","Default",":","``","num_layers","``",".","conv_cfg","(","dict",")",":","Config","dict","for","convolution","layer",".","Default",":","None",",","which","means","using","conv2d",".","norm_cfg","(","dict",")",":","Config","dict","for","normalization","layer",".","Default",":","None",".","init_cfg","(","dict",")",":","Config","dict","for","initialization",".","Default",":","None",".","kwargs","(","key","word","augments",")",":","Other","augments","used","in","ConvModule","."]
code: def forward(self, x):
      num_upsample = self.num_upsample
      for i in range(self.num_layers):
          x = self.conv[i](x)
          if num_upsample > 0:
              num_upsample -= 1
              x = F.interpolate(
                  x,
                  scale_factor=2,
                  mode="bilinear",
                  align_corners=False,
              )
      return x
  
imports: import torch.nn.functional
  from mmcv.cnn import ConvModule
  from mmengine.model import BaseModule, ModuleList
label_desc: Use image node_id 2 for calling the ConvUpsample obj's underlying member method code with example usage: obj.forward(x) and returns: x