class_docstr: Metadata to be used for serializaing a net.
  
  parameters, inputs, outputs could be either BlobReference or blob's names
  
  predict_net can be either core.Net, NetDef, PlanDef or object
  
  Override the named tuple to provide optional name parameter.
  name will be used to identify multiple prediction nets.
  
  net_type is the type field in caffe2 NetDef - can be 'simple', 'dag', etc.
  
  num_workers specifies for net type 'dag' how many threads should run ops
  
  trainer_prefix specifies the type of trainer.
  
  extra_init_net gets appended to pred_init_net, useful for thread local init
  
  global_init_net gets appended to global_init_net, useful for global init
  on a shared across threads parameter workspace
  (in a case of multi-threaded inference)
code: def __new__(
      cls,
      predict_net,
      parameters,
      inputs,
      outputs,
      shapes=None,
      name="",
      extra_init_net=None,
      global_init_net=None,
      net_type=None,
      num_workers=None,
      trainer_prefix=None,
  ):
      inputs = [str(i) for i in inputs]
      outputs = [str(o) for o in outputs]
      assert len(set(inputs)) == len(
          inputs
      ), "All inputs to the predictor should be unique"
      parameters = [str(p) for p in parameters]
      assert set(parameters).isdisjoint(inputs), (
          "Parameters and inputs are required to be disjoint. "
          "Intersection: {}".format(
              set(parameters).intersection(inputs)
          )
      )
      assert set(parameters).isdisjoint(outputs), (
          "Parameters and outputs are required to be disjoint. "
          "Intersection: {}".format(
              set(parameters).intersection(outputs)
          )
      )
      shapes = shapes or {}
  
      if predict_net is not None:
          if isinstance(predict_net, (core.Net, core.Plan)):
              predict_net = predict_net.Proto()
  
          assert isinstance(
              predict_net, (caffe2_pb2.NetDef, caffe2_pb2.PlanDef)
          )
      return super(PredictorExportMeta, cls).__new__(
          cls,
          predict_net,
          parameters,
          inputs,
          outputs,
          shapes,
          name,
          extra_init_net,
          global_init_net,
          net_type,
          num_workers,
          trainer_prefix,
      )
  
imports: from caffe2.proto import caffe2_pb2
  from caffe2.proto import metanet_pb2
  from caffe2.python import workspace, core, scope
  from caffe2.python.predictor_constants import predictor_constants
  import caffe2.python.predictor.serde
  import caffe2.python.predictor.predictor_py_utils
  import collections
label_desc: Use image node_id 1 for calling the PredictorExportMeta obj's underlying member method code with example usage: obj.__new__(cls, predict_net, parameters, inputs, outputs, shapes, name, extra_init_net, global_init_net, net_type, num_workers, trainer_prefix) and returns: super