code: def test_structure_5(backend):
      def model():
          a = pyro.sample("a", dist.Normal(0, 1))
          b = pyro.sample("b", dist.Normal(0, 1))
          with pyro.plate("i", 2):
              c = pyro.sample("c", dist.Normal(a, b.exp()))
              pyro.sample("d", dist.Normal(c, 1), obs=torch.tensor(1.0))
  
      # size = 1 + 1 + 2 = 4
      structure = [
          "? ? ? ?",
          "? ? ? ?",
          "? ? ? .",
          "? ? . ?",
      ]
      if backend == "funsor":
          check_backends_agree(model)
      else:
          check_structure(model, structure)
  
imports: from collections import OrderedDict, namedtuple
  import pytest
  import torch
  import pyro
  import pyro.distributions
  import pyro.poutine
  from pyro.infer import SVI, JitTrace_ELBO, Predictive, Trace_ELBO
  from pyro.infer.autoguide import AutoGaussian, AutoGuideList
  from pyro.infer.autoguide.gaussian import AutoGaussianDense, AutoGaussianFunsor, _break_plates
  from pyro.infer.reparam import LocScaleReparam
  from pyro.optim import ClippedAdam
  from tests.common import assert_close, assert_equal, xfail_if_not_implemented
label_desc: Use image node_id 10 for calling a global function with example usage: test_structure_5(backend) without return types