class_docstr: A helper model so we can manange models more easily. It contains net def
  and parameter storages. You can add an Operator yourself, e.g.
  
      model = model_helper.ModelHelper(name="train_net")
      # init your weight and bias as w and b
      w = model.param_init_net.XavierFill(...)
      b = model.param_init_net.ConstantFill(...)
      fc1 = model.FC([input, w, b], output, **kwargs)
  
  or you can use helper functions in brew module without manually
  defining parameter initializations and operators.
  
      model = model_helper.ModelHelper(name="train_net")
      fc1 = brew.fc(model, input, output, dim_in, dim_out, **kwargs)
docstr: Returns a map for param => grad.
  If params is not specified, all parameters will be considered.
code: def GetOptimizationParamInfo(self, params=None):
      """
      Returns a map for param => grad.
      If params is not specified, all parameters will be considered.
      """
      if not self.gradient_ops_added:
          raise RuntimeError("Need to call AddGradientOperators first")
  
      param_to_grad = self.param_to_grad
      if params:
          param_to_grad = self.get_param_to_grad(params)
  
      return [
          self.get_param_info(param)
          for param, grad in param_to_grad.items()
          if (
              not self.skip_sparse_optim
              or not isinstance(grad, core.GradientSlice)
          )
      ]
  
imports: from caffe2.python import core, scope, workspace
  from caffe2.python.helpers.db_input import db_input
  from caffe2.python.modeling import parameter_info
  from caffe2.python.modeling.parameter_sharing import parameter_sharing_context
  from caffe2.python.optimizer_context import OptimizerContext, DEFAULT_OPTIM
  from caffe2.python.regularizer_context import RegularizerContext
  from itertools import chain
  import logging
label_desc: Use image node_id 19 for calling the ModelHelper obj's underlying member method code with example usage: obj.GetOptimizationParamInfo(params) and returns: unknown