code: def forward(self, x):
      num_branch = (
          self.num_branch
          if self.training or self.test_branch_idx == -1
          else 1
      )
      if not isinstance(x, list):
          x = [x] * num_branch
      out = [self.conv1(b) for b in x]
      out = [F.relu_(b) for b in out]
  
      out = self.conv2(out)
      out = [F.relu_(b) for b in out]
  
      out = [self.conv3(b) for b in out]
  
      if self.shortcut is not None:
          shortcut = [self.shortcut(b) for b in x]
      else:
          shortcut = x
  
      out = [
          out_b + shortcut_b for out_b, shortcut_b in zip(out, shortcut)
      ]
      out = [F.relu_(b) for b in out]
      if self.concat_output:
          out = torch.cat(out)
      return out
  
file_path: detectron2/projects/TridentNet/tridentnet/trident_backbone.py
imports: import fvcore.nn.weight_init
  import torch
  import torch.nn.functional
  from detectron2.layers import Conv2d, FrozenBatchNorm2d, get_norm
  from detectron2.modeling import BACKBONE_REGISTRY, ResNet, ResNetBlockBase
  from detectron2.modeling.backbone.resnet import BasicStem, BottleneckBlock, DeformBottleneckBlock
  from .trident_conv import TridentConv
label_desc: Use image node_id 2 for calling the TridentBottleneckBlock obj's underlying member method code with example usage: obj.forward(x) and returns: out