code: def forward(
      ctx,
      coord_scale,
      component_logits,
      component_scale,
      pis,
      which,
      shape,
      coeffs,
  ):
      white = coord_scale.new(shape).normal_()
      which_component_scale = component_scale[which].unsqueeze(-1)
      z = coord_scale * which_component_scale * white
      ctx.save_for_backward(
          z, coord_scale, component_logits, component_scale, pis, coeffs
      )
      return z
  
file_path: pyro/pyro/distributions/gaussian_scale_mixture.py
imports: import math
  import torch
  from torch.autograd import Function
  from torch.autograd.function import once_differentiable
  from torch.distributions import Categorical, constraints
  from pyro.distributions.torch_distribution import TorchDistribution
  from pyro.distributions.util import sum_leftmost
label_desc: Use image node_id 1 for calling the _GSMSample obj's underlying member method code with example usage: obj.forward(ctx, coord_scale, component_logits, component_scale, pis, which, shape, coeffs) and returns: z