class_docstr: BatchNorm2d where the batch statistics and the affine parameters are
  fixed.
  
  It contains non-trainable buffers called
  "weight" and "bias", "running_mean", "running_var",
  initialized to perform identity transformation.
  Args:
     num_features (int):  :math:`C` from an expected input of size
          :math:`(N, C, H, W)`.
     eps (float): a value added to the denominator for numerical stability.
          Default: 1e-5
class_docstr_tok: ["BatchNorm2d","where","the","batch","statistics","and","the","affine","parameters","are","fixed",".","It","contains","non-trainable","buffers","called","''","weight","''","and","``","bias","''",",","``","running_mean","''",",","``","running_var","''",",","initialized","to","perform","identity","transformation",".","Args",":","num_features","(","int",")",":",":","math",":","`","C","`","from","an","expected","input","of","size",":","math",":","`","(","N",",","C",",","H",",","W",")","`",".","eps","(","float",")",":","a","value","added","to","the","denominator","for","numerical","stability",".","Default",":","1e-5"]
code: def forward(self, x):
      if x.requires_grad:
          # When gradients are needed, F.batch_norm will use extra memory
          # because its backward op computes gradients for weight/bias
          # as well.
          scale = self.weight * (self.running_var + self.eps).rsqrt()
          bias = self.bias - self.running_mean * scale
          scale = scale.reshape(1, -1, 1, 1)
          bias = bias.reshape(1, -1, 1, 1)
          out_dtype = x.dtype  # may be half
          return x * scale.to(out_dtype) + bias.to(out_dtype)
      else:
          # When gradients are not needed, F.batch_norm is a single fused op
          # and provide more optimization opportunities.
          return F.batch_norm(
              x,
              self.running_mean,
              self.running_var,
              self.weight,
              self.bias,
              training=False,
              eps=self.eps,
          )
  
file_path: mmdetection/mmdet/models/layers/brick_wrappers.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from mmcv.cnn.bricks.wrappers import NewEmptyTensorOp, obsolete_torch_version
  from mmdet.registry import MODELS
label_desc: Use image node_id 2 for calling the FrozenBatchNorm2d obj's underlying member method code with example usage: obj.forward(x) and returns: unknown, F