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.
  The pre-trained backbone models from Caffe2 only contain "weight" and "bias",
  which are computed from the original four parameters of BN.
  The affine transform `x * weight + bias` will perform the equivalent
  computation of `(x - running_mean) / sqrt(running_var) * weight + bias`.
  When loading a backbone model from Caffe2, "running_mean" and "running_var"
  will be left unchanged as identity transformation.
  Other pre-trained backbone models may contain all 4 parameters.
  The forward is implemented by `F.batch_norm(..., training=False)`.
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",".","The","pre-trained","backbone","models","from","Caffe2","only","contain","``","weight","''","and","``","bias","''",",","which","are","computed","from","the","original","four","parameters","of","BN",".","The","affine","transform","`","x","*","weight","+","bias","`","will","perform","the","equivalent","computation","of","`","(","x","-","running_mean",")","\/","sqrt","(","running_var",")","*","weight","+","bias","`",".","When","loading","a","backbone","model","from","Caffe2",",","``","running_mean","''","and","``","running_var","''","will","be","left","unchanged","as","identity","transformation",".","Other","pre-trained","backbone","models","may","contain","all","4","parameters",".","The","forward","is","implemented","by","`","F.batch_norm","(","...",",","training=False",")","`","."]
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)
          return x * scale + bias
      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,
          )
  
imports: import logging
  import torch
  import torch.distributed
  from torch import nn
  from torch.autograd.function import Function
  from torch.nn import functional
  from torch.nn import BatchNorm2d
  from ..utils.comm import get_world_size
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