code: def x_theta(self, x, t, embd, guidance_scale=None):
      # data prediction model
      alpha_t, sigma_t, _ = self.get_coeffs(t)
      timestep = int(max(0, t) * self.num_train_timesteps)
      with torch.inference_mode():
          noise = self.denoiser(
              x if guidance_scale is None else torch.cat([x] * 2),
              timestep,
              embd,
          ).sample
          if guidance_scale is not None:
              noise_pred_uncond, noise_pred_text = noise.chunk(2)
              noise = noise_pred_uncond + guidance_scale * (
                  noise_pred_text - noise_pred_uncond
              )
          x_pred = (
              x - sigma_t * noise
          ) / alpha_t  # Parameterization: noise prediction and data prediction
          # print(t, timestep, x_pred.max(), noise.max(), sigma_t, alpha_t)
          return x_pred
  
file_path: diffusion-for-beginners/samplers/dpm_solver_plus_plus.py
imports: import torch
  import numpy
  import utils
label_desc: Use image node_id 2 for calling the DPMPlusPlusSampler obj's underlying member method code with example usage: obj.x_theta(x, t, embd, guidance_scale) and returns: x_pred