class_docstr: The main class for modelTuner
  
  Attributes:
      method: the optimization method. Currently only 'gradient_descent'
              is supported.
      loss:   the optimization loss function. Currently only 'mse' (one-day
              ahead prediction) is supported.
code: def find_gradient(self, discounts, DLM):
      if self.current_mse is None:
          self.current_mse = DLM._getMSE()
  
      gradient = array([0.0] * len(discounts))
  
      for i in range(len(discounts)):
          discounts_err = discounts
          discounts_err[i] = self.cutoff(discounts_err[i] + self.err)
  
          DLM._setDiscounts(discounts_err)
          DLM.fitForwardFilter()
          gradient[i] = (DLM._getMSE() - self.current_mse) / self.err
  
      return gradient
  
file_path: pydlm/pydlm/tuner/dlmTuner.py
imports: from copy import deepcopy
  from numpy import array
  import logging
label_desc: Use image node_id 4 for calling the modelTuner obj's underlying member method code with example usage: obj.find_gradient(discounts, DLM) and returns: gradient