class_docstr: Hierarchical latent variable model based on a diffusion model.
  
  Args:
      model: The model to use for the denoising (should be in eval mode).
      diffusion: The diffusion to sample from.
      use_log_variance: Whether to use the (clipped) log variance.
      clip_denoised: If True, clip the denoised signal.
      device: The device to use.
          Defaults to the device of the first model parameter.
class_docstr_tok: ["Hierarchical","latent","variable","model","based","on","a","diffusion","model",".","Args",":","model",":","The","model","to","use","for","the","denoising","(","should","be","in","eval","mode",")",".","diffusion",":","The","diffusion","to","sample","from",".","use_log_variance",":","Whether","to","use","the","(","clipped",")","log","variance",".","clip_denoised",":","If","True",",","clip","the","denoised","signal",".","device",":","The","device","to","use",".","Defaults","to","the","device","of","the","first","model","parameter","."]
code: def _gaussian_params(
      self,
      mean: torch.Tensor,
      variance: torch.Tensor,
      log_variance: torch.Tensor,
  ) -> GaussianParams:
      if self.use_log_variance:
          stdd = torch.exp(0.5 * log_variance)
      else:
          stdd = torch.sqrt(variance)
      return GaussianParams(
          mean=mean.cpu().numpy(),
          stdd=stdd.cpu().numpy(),
      )
  
imports: from abc import ABC, abstractmethod
  from typing import List, NamedTuple, Optional, Tuple, Union, overload
  import craystack
  import numpy
  import torch
  from craystack import codecs
  from craystack.bb_ans import BBANS
  from improved_diffusion.gaussian_diffusion import GaussianDiffusion
label_desc: Use image node_id 2 for calling the DiffusionModel obj's underlying member method code with example usage: obj._gaussian_params(mean, variance, log_variance) and returns: GaussianParams