code: def train(self, x):
      tensor_map = ndarray_map_to_tensor_map(x)
      train_request = TrainRequest(
          clientuuid=self.client_uuid,
          data=tensor_map,
          algorithm=self.aggregator,
      )
  
      response = self.nn_stub.train(train_request)
      if response.code == 1:
          invalidInputError(False, response.response)
      return response
  
file_path: BigDL/python/ppml/src/bigdl/ppml/fl/nn/nn_client.py
imports: from bigdl.ppml.utils.safepickle import SafePickle
  from bigdl.ppml.fl.nn.fl_client import FLClient
  from bigdl.ppml.fl.nn.generated.nn_service_pb2 import TrainRequest, PredictRequest, UploadMetaRequest
  from bigdl.ppml.fl.nn.generated.nn_service_pb2_grpc import *
  from bigdl.ppml.fl.nn.utils import ndarray_map_to_tensor_map
  import threading
  from bigdl.dllib.utils.log4Error import invalidInputError, invalidOperationError
  from bigdl.ppml.fl.nn.utils import ClassAndArgsWrapper
label_desc: Use image node_id 2 for calling the NNClient obj's underlying member method code with example usage: obj.train(x) and returns: response