code: def test_gaussian_hmm_high_obs_dim():
      hidden_dim = 1
      obs_dim = 1000
      duration = 10
      sample_shape = (100,)
      init_dist = random_mvn((), hidden_dim)
      trans_mat = torch.randn((duration,) + (hidden_dim, hidden_dim))
      trans_dist = random_mvn((duration,), hidden_dim)
      obs_mat = torch.randn((duration,) + (hidden_dim, obs_dim))
      loc = torch.randn((duration, obs_dim))
      scale = torch.randn((duration, obs_dim)).exp()
      obs_dist = dist.Normal(loc, scale).to_event(1)
      d = dist.GaussianHMM(
          init_dist,
          trans_mat,
          trans_dist,
          obs_mat,
          obs_dist,
          duration=duration,
      )
      x = d.rsample(sample_shape)
      assert x.shape == sample_shape + (duration, obs_dim)
  
imports: import logging
  import operator
  from functools import reduce
  import opt_einsum
  import pytest
  import torch
  import pyro
  import pyro.distributions
  from pyro.distributions.hmm import _sequential_gamma_gaussian_tensordot, _sequential_logmatmulexp
  from pyro.distributions.util import broadcast_shape
  from pyro.infer import TraceEnum_ELBO, config_enumerate
  from pyro.ops.gamma_gaussian import gamma_and_mvn_to_gamma_gaussian, gamma_gaussian_tensordot, matrix_and_mvn_to_gamma_gaussian
  from pyro.ops.gaussian import gaussian_tensordot, matrix_and_mvn_to_gaussian, mvn_to_gaussian
  from pyro.ops.indexing import Vindex
  from tests.common import assert_close
  from tests.ops.gamma_gaussian import assert_close_gamma_gaussian, random_gamma, random_gamma_gaussian
  from tests.ops.gaussian import random_mvn
label_desc: Use image node_id 12 for calling a global function with example usage: test_gaussian_hmm_high_obs_dim() without return types