class_docstr: Multiply two or more BNNs.
code: def setup(self):
      self.dense = nn.Dense(self.likelihood_model.num_outputs())
      for b in self.bnns:
          assert hasattr(b, "penultimate")
          assert (
              b.going_to_be_multiplied
          ), "Forgot to set going_to_be_multiplied?"
      super().setup()
  
imports: from typing import Optional
  from flax import linen
  import jax.numpy
  from tensorflow_probability.python.experimental.autobnn import bnn
  from tensorflow_probability.python.experimental.autobnn import likelihoods
  from tensorflow_probability.substrates.jax.bijectors import chain
  from tensorflow_probability.substrates.jax.bijectors import scale
  from tensorflow_probability.substrates.jax.bijectors import shift
  from tensorflow_probability.substrates.jax.distributions import beta
  from tensorflow_probability.substrates.jax.distributions import dirichlet
  from tensorflow_probability.substrates.jax.distributions import half_normal
  from tensorflow_probability.substrates.jax.distributions import normal
  from tensorflow_probability.substrates.jax.distributions import transformed_distribution
label_desc: Use image node_id 1 for calling the Multiply obj's underlying member method code with example usage: obj.setup() without return types