class_docstr: Aggregate the context features according to the initial
  predicted probability distribution.
  Employ the soft-weighted method to aggregate the context.
code: def forward(self, feats, probs):
      batch_size, c, h, w = (
          probs.size(0),
          probs.size(1),
          probs.size(2),
          probs.size(3),
      )
      probs = probs.view(batch_size, c, -1)
      feats = feats.view(batch_size, feats.size(1), -1)
      feats = feats.permute(0, 2, 1)  # batch x hw x c
      probs = F.softmax(self.scale * probs, dim=2)  # batch x k x hw
      ocr_context = (
          torch.matmul(probs, feats).permute(0, 2, 1).unsqueeze(3)
      )  # batch x k x c
      return ocr_context
  
imports: import os
  import logging
  import numpy
  import torch
  import torch.nn
  import torch._utils
  import torch.nn.functional
  from .bn_helper import BatchNorm2d, BatchNorm2d_class, relu_inplace
label_desc: Use image node_id 2 for calling the SpatialGather_Module obj's underlying member method code with example usage: obj.forward(feats, probs) and returns: ocr_context