code: def hybrid_forward(self, F, x):
      x = self.conv(x)
      if self.use_bn:
          x = self.bn(x)
      x = self.relu(x)
      if self.radix > 1:
          splited = F.reshape(
              x.expand_dims(1), (0, self.radix, self.channels, 0, 0)
          )
          gap = F.sum(splited, axis=1)
      else:
          gap = x
      gap = F.contrib.AdaptiveAvgPooling2D(gap, 1)
      gap = self.fc1(gap)
      if self.use_bn:
          gap = self.bn1(gap)
      atten = self.relu1(gap)
      if self.drop:
          atten = self.drop(atten)
      atten = (
          self.fc2(atten)
          .reshape((0, self.cardinality, self.radix, -1))
          .swapaxes(1, 2)
      )
      if self.radix > 1:
          atten = F.softmax(atten, axis=1).reshape(
              (0, self.radix, -1, 1, 1)
          )
      else:
          atten = F.sigmoid(atten).reshape((0, -1, 1, 1))
      if self.radix > 1:
          outs = F.broadcast_mul(atten, splited)
          out = F.sum(outs, axis=1)
      else:
          out = F.broadcast_mul(atten, x)
      return out
  
imports: from mxnet.gluon import nn
  from mxnet.gluon.nn import Conv2D, HybridBlock, BatchNorm, Activation
label_desc: Use image node_id 2 for calling the SplitAttentionConv obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: out