class_docstr: Similar to :class:`BottleneckBlock`, but with :paper:`deformable conv <deformconv>`
  in the 3x3 convolution.
class_docstr_tok: ["Similar","to",":","class",":","`","BottleneckBlock","`",",","but","with",":","paper",":","`","deformable","conv","<","deformconv",">","`","in","the","3x3","convolution","."]
code: def forward(self, x):
      out = self.conv1(x)
      out = F.relu_(out)
  
      if self.deform_modulated:
          offset_mask = self.conv2_offset(out)
          offset_x, offset_y, mask = torch.chunk(offset_mask, 3, dim=1)
          offset = torch.cat((offset_x, offset_y), dim=1)
          mask = mask.sigmoid()
          out = self.conv2(out, offset, mask)
      else:
          offset = self.conv2_offset(out)
          out = self.conv2(out, offset)
      out = F.relu_(out)
  
      out = self.conv3(out)
  
      if self.shortcut is not None:
          shortcut = self.shortcut(x)
      else:
          shortcut = x
  
      out += shortcut
      out = F.relu_(out)
      return out
  
imports: import numpy
  import fvcore.nn.weight_init
  import torch
  import torch.nn.functional
  from torch import nn
  from detectron2.layers import CNNBlockBase, Conv2d, DeformConv, ModulatedDeformConv, ShapeSpec, get_norm
  from .backbone import Backbone
  from .build import BACKBONE_REGISTRY
label_desc: Use image node_id 2 for calling the DeformBottleneckBlock obj's underlying member method code with example usage: obj.forward(x) and returns: out