class_docstr: ## Bi-variate Gaussian mixture
  
  The mixture is represented by $\Pi$ and
  $\mathcal{N}(\mu_{x}, \mu_{y}, \sigma_{x}, \sigma_{y}, 
  ho_{xy})$.
  This class adjusts temperatures and creates the categorical and Gaussian
  distributions from the parameters.
class_docstr_tok: ["#","#","Bi-variate","Gaussian","mixture","The","mixture","is","represented","by","$","\\Pi","$","and","$","\\mathcal","{","N","}","(","\\mu_","{","x","}",",","\\mu_","{","y","}",",","\\sigma_","{","x","}",",","\\sigma_","{","y","}",",","ho_","{","xy","}",")","$",".","This","class","adjusts","temperatures","and","creates","the","categorical","and","Gaussian","distributions","from","the","parameters","."]
docstr: Adjust by temperature $ au$
docstr_tok: ["Adjust","by","temperature","$","au","$"]
code: def set_temperature(self, temperature: float):
      """
      Adjust by temperature $\tau$
      """
      # $$\hat{\Pi_k} \leftarrow \frac{\hat{\Pi_k}}{\tau}$$
      self.pi_logits /= temperature
      # $$\sigma^2_x \leftarrow \sigma^2_x \tau$$
      self.sigma_x *= math.sqrt(temperature)
      # $$\sigma^2_y \leftarrow \sigma^2_y \tau$$
      self.sigma_y *= math.sqrt(temperature)
  
imports: import math
  from typing import Optional, Tuple, Any
  import numpy
  import torch
  import torch.nn
  from matplotlib import pyplot
  from torch import optim
  from torch.utils.data import Dataset, DataLoader
  import einops
  from labml import lab, experiment, tracker, monit
  from labml_helpers.device import DeviceConfigs
  from labml_helpers.module import Module
  from labml_helpers.optimizer import OptimizerConfigs
  from labml_helpers.train_valid import TrainValidConfigs, hook_model_outputs, BatchIndex
label_desc: Use image node_id 3 for calling the BivariateGaussianMixture obj's underlying member method code with example usage: obj.set_temperature(temperature) without return types