code: def gradients_X(self, dL_dK, X, X2, target):
          
          self._K_computations(X, X2)
          arg = self._K_poly_arg
          if X2 is None:
              target += 2*self.weight_variance*self.degree*self.variance*(((X[None,:, :])) *(arg**(self.degree-1))[:, :, None]*dL_dK[:, :, None]).sum(1)
          else:
              target += self.weight_variance*self.degree*self.variance*(((X2[None,:, :])) *(arg**(self.degree-1))[:, :, None]*dL_dK[:, :, None]).sum(1)
docs: Derivative of the covariance matrix with respect to X