class_docstr: Extra layers of SSD backbone to generate multi-scale feature maps.
  
  Args:
      in_channels (Sequence[int]): Number of input channels per scale.
      out_channels (Sequence[int]): Number of output channels per scale.
      level_strides (Sequence[int]): Stride of 3x3 conv per level.
      level_paddings (Sequence[int]): Padding size of 3x3 conv per level.
      l2_norm_scale (float|None): L2 normalization layer init scale.
          If None, not use L2 normalization on the first input feature.
      last_kernel_size (int): Kernel size of the last conv layer.
          Default: 3.
      use_depthwise (bool): Whether to use DepthwiseSeparableConv.
          Default: False.
      conv_cfg (dict): Config dict for convolution layer. Default: None.
      norm_cfg (dict): Dictionary to construct and config norm layer.
          Default: None.
      act_cfg (dict): Config dict for activation layer.
          Default: dict(type='ReLU').
      init_cfg (dict or list[dict], optional): Initialization config dict.
class_docstr_tok: ["Extra","layers","of","SSD","backbone","to","generate","multi-scale","feature","maps",".","Args",":","in_channels","(","Sequence","[","int","]",")",":","Number","of","input","channels","per","scale",".","out_channels","(","Sequence","[","int","]",")",":","Number","of","output","channels","per","scale",".","level_strides","(","Sequence","[","int","]",")",":","Stride","of","3x3","conv","per","level",".","level_paddings","(","Sequence","[","int","]",")",":","Padding","size","of","3x3","conv","per","level",".","l2_norm_scale","(","float|None",")",":","L2","normalization","layer","init","scale",".","If","None",",","not","use","L2","normalization","on","the","first","input","feature",".","last_kernel_size","(","int",")",":","Kernel","size","of","the","last","conv","layer",".","Default",":","3.","use_depthwise","(","bool",")",":","Whether","to","use","DepthwiseSeparableConv",".","Default",":","False",".","conv_cfg","(","dict",")",":","Config","dict","for","convolution","layer",".","Default",":","None",".","norm_cfg","(","dict",")",":","Dictionary","to","construct","and","config","norm","layer",".","Default",":","None",".","act_cfg","(","dict",")",":","Config","dict","for","activation","layer",".","Default",":","dict","(","type='ReLU","'",")",".","init_cfg","(","dict","or","list","[","dict","]",",","optional",")",":","Initialization","config","dict","."]
docstr: Forward function.
docstr_tok: ["Forward","function","."]
code: def forward(self, inputs):
      """Forward function."""
      outs = [feat for feat in inputs]
      if hasattr(self, "l2_norm"):
          outs[0] = self.l2_norm(outs[0])
  
      feat = outs[-1]
      for layer in self.extra_layers:
          feat = layer(feat)
          outs.append(feat)
      return tuple(outs)
  
file_path: mmdetection/mmdet/models/necks/ssd_neck.py
imports: import torch
  import torch.nn
  from mmcv.cnn import ConvModule, DepthwiseSeparableConvModule
  from mmengine.model import BaseModule
  from mmdet.registry import MODELS
label_desc: Use image node_id 2 for calling the SSDNeck obj's underlying member method code with example usage: obj.forward(inputs) and returns: tuple