class_docstr: Function Caller for NN evaluations. 
class_docstr_tok: ["Function","Caller","for","NN","evaluations","."]
docstr: Evaluate the function here. This method overrides eval_at_fidel_single
  from dragonfly.exd.experiment_caller.py but we need information in qinfo
  to carry out the NN evaluation.
docstr_tok: ["Evaluate","the","function","here",".","This","method","overrides","eval_at_fidel_single","from","dragonfly.exd.experiment_caller.py","but","we","need","information","in","qinfo","to","carry","out","the","NN","evaluation","."]
code: def eval_at_fidel_single(self, fidel, point, qinfo, noisy=False):
      """Evaluate the function here. This method overrides eval_at_fidel_single
      from dragonfly.exd.experiment_caller.py but we need information in qinfo
      to carry out the NN evaluation.
      """
      # Dragonfly stores them in a different format to the configuration specifed.
      # First convert them back to the "raw" format.
      raw_fidel = self.get_raw_fidel_from_processed(fidel)
      raw_point = self.get_raw_domain_point_from_processed(point)
      # Obtain true value
      true_val = self._func_wrapper(raw_fidel, raw_point, qinfo)
      cost_at_fidel = self._raw_fidel_cost(raw_fidel)
      # Prep qinfo
      qinfo.fidel = fidel
      qinfo.point = point
      qinfo.cost_at_fidel = cost_at_fidel
      val, qinfo = self._eval_single_common_wrap_up(
          true_val, qinfo, noisy, cost_at_fidel
      )
      return val, qinfo
  
file_path: dragonfly/examples/nas/nn_function_caller.py
imports: from copy import deepcopy
  import numpy
  from time import sleep
  from dragonfly.exd.experiment_caller import CPFunctionCaller
  from dragonfly.exd.exd_core import EVAL_ERROR_CODE
  from dragonfly.utils.reporters import get_reporter
label_desc: Use image node_id 5 for calling the NNFunctionCaller obj's underlying member method code with example usage: obj.eval_at_fidel_single(fidel, point, qinfo, noisy) and returns: val,  qinfo