code: def forward(self, data_batch, is_train=None):
      # g,x = self.get_params()
      # print('{fc7_weight[0][0]}', self._iter, g['fc7_0_weight'].asnumpy()[0][0])
      # print('{pre_fc1_weight[0][0]}', self._iter, g['pre_fc1_weight'].asnumpy()[0][0])
  
      assert self.binded and self.params_initialized
      self._curr_module.forward(data_batch, is_train=is_train)
      if is_train:
          self._iter += 1
          fc1, label = self._curr_module.get_outputs(
              merge_multi_context=True
          )
          global_fc1 = fc1
          self.global_label = label.as_in_context(self._ctx_cpu)
  
          for i, _module in enumerate(self._arcface_modules):
              _label = self.global_label - self._ctx_class_start[i]
              db_global_fc1 = io.DataBatch([global_fc1], [_label])
              _module.forward(db_global_fc1)
  
imports: import logging
  import copy
  import time
  import os
  import mxnet
  import numpy
  from mxnet import context
  from mxnet.initializer import Uniform
  from mxnet.module.base_module import BaseModule
  from mxnet.module.module import Module
  from mxnet import metric
  from mxnet.model import BatchEndParam
  from mxnet import io
  import mxnet.ndarray
  from config import config
label_desc: Use image node_id 15 for calling the ParallModule obj's underlying member method code with example usage: obj.forward(data_batch, is_train) without return types