class_docstr: Forward and backward function of geometric mean of two sigmoid
  functions.
  
  This implementation with analytical gradient function substitutes
  the autograd function of (x.sigmoid() * y.sigmoid()).sqrt(). The
  original implementation incurs none during gradient backprapagation
  if both x and y are very small values.
class_docstr_tok: ["Forward","and","backward","function","of","geometric","mean","of","two","sigmoid","functions",".","This","implementation","with","analytical","gradient","function","substitutes","the","autograd","function","of","(","x.sigmoid","(",")","*","y.sigmoid","(",")",")",".sqrt","(",")",".","The","original","implementation","incurs","none","during","gradient","backprapagation","if","both","x","and","y","are","very","small","values","."]
code: def backward(ctx, grad_output):
      x_sigmoid, y_sigmoid, z = ctx.saved_tensors
      grad_x = grad_output * z * (1 - x_sigmoid) / 2
      grad_y = grad_output * z * (1 - y_sigmoid) / 2
      return grad_x, grad_y
  
imports: from functools import partial
  from typing import List, Optional, Sequence, Tuple, Union
  import numpy
  import torch
  from mmengine.structures import InstanceData
  from mmengine.utils import digit_version
  from six.moves import map, zip
  from torch import Tensor
  from torch.autograd import Function
  from torch.nn import functional
  from mmdet.structures import SampleList
  from mmdet.structures.bbox import BaseBoxes, get_box_type, stack_boxes
  from mmdet.structures.mask import BitmapMasks, PolygonMasks
  from mmdet.utils import OptInstanceList
label_desc: Use image node_id 2 for calling the SigmoidGeometricMean obj's underlying member method code with example usage: obj.backward(ctx, grad_output) and returns: grad_x,  grad_y