class_docstr: Add two or more BNNs, with weights taken from a Dirichlet prior.
code: def __call__(self, inputs, deterministic=True):
      return jnp.sum(
          jnp.stack(
              [
                  b(inputs) * self.bnn_weights[0, :, i]
                  for i, b in enumerate(self.bnns)
              ],
              axis=-1,
          ),
          axis=-1,
      )
  
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 3 for calling the WeightedSum obj's underlying member method code with example usage: obj.__call__(inputs, deterministic) and returns: jnp