class_docstr: Use neural networks as an alternative to GPs to model distributions over functions in bayesian optimization.
  
  Parameters
  ----------
  optimize : maximize | minimize, default = maximize
      If 'maximize', the tuner will target to maximize metrics. If 'minimize', the tuner will target to minimize metrics.
  sample_size : int, default = 1000
      Number of samples to select in each iteration. The best one will be picked from the samples as the next trial.
  trials_per_update : int, default = 20
      Number of trials to collect before updating the model.
  num_epochs_per_training : int, default = 500
      Number of epochs to train DNGO model.
code: def _update_model(self):
      _logger.info("Updating model on %d samples", len(self.x))
      x_arr = []
      for x in self.x:
          x_arr.append([x[k] for k in sorted(x.keys())])
      try:
          self.model.train(
              np.array(x_arr), np.array(self.y), do_optimize=True
          )
      except np.linalg.LinAlgError as e:
          warnings.warn(
              f"numpy linalg error encountered in DNGO model training: {e}"
          )
      self._model_initialized = True
  
imports: import logging
  import warnings
  import numpy
  import torch
  from pybnn import DNGO
  from torch.distributions import Normal
  import nni.parameter_expressions
  from nni import ClassArgsValidator
  from nni.common.hpo_utils import validate_search_space
  from nni.tuner import Tuner
label_desc: Use image node_id 6 for calling the DNGOTuner obj's underlying member method code with example usage: obj._update_model() without return types