code: def test_bayesian_conv(self):
      def sample(
          kernel_shape,
          bias_shape,
          kernel_initializer=None,  # pylint: disable=unused-argument
          bias_initializer=None,  # pylint: disable=unused-argument
          kernel_batch_ndims=0,  # pylint: disable=unused-argument
          bias_batch_ndims=0,  # pylint: disable=unused-argument
          dtype=tf.float32,  # pylint: disable=unused-argument
          kernel_prior_scale_scale=None,  # pylint: disable=unused-argument
          kernel_scale_init_value=None,  # pylint: disable=unused-argument
          bias_prior_scale=None,  # pylint: disable=unused-argument
          bias_scale_init_value=None,  # pylint: disable=unused-argument
          kernel_prior=None,
      ):  # pylint: disable=unused-argument
          k = normal.Normal(0.0, 1.0).sample(kernel_shape)
          b = normal.Normal(0.0, 1.0).sample(bias_shape)
          return k, b
  
      def tile_for_batch(x, batch_shape):
          x_shape = tf.shape(x)
          x_ndims = tf.rank(x)
          x = tf.reshape(
              x,
              shape=tf.concat(
                  [
                      x_shape[:-1],
                      tf.ones_like(batch_shape),
                      x_shape[-1:],
                  ],
                  axis=0,
              ),
          )
          return tf.tile(
              x,
              multiples=tf.pad(
                  batch_shape,
                  paddings=[[x_ndims - 1, 1]],
                  constant_values=1,
              ),
          )
  
      nn = tfn.Convolution(
          1,
          5,
          5,
          strides=2,
          padding="same",
          batch_shape=[10],
          make_kernel_bias_fn=sample,
      )
      x = nn(tile_for_batch(tf.random.normal([3, 28, 28, 1]), [10]))
      self.assertShapeEqual(np.zeros([3, 14, 14, 10, 5]), x)
  
imports: import functools
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import softmax_centered
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.experimental import nn
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.internal import tf_keras
  from tensorflow_probability.python.util import deferred_tensor
label_desc: Use image node_id 3 for calling the ConvolutionTest obj's underlying member method code with example usage: obj.test_bayesian_conv() and returns: k,  b, tf