code: def testJohnsonSUShapeWithPlaceholders(self):
      skewness = tf1.placeholder_with_default(np.float32(5), shape=None)
      tailweight = tf1.placeholder_with_default(
          np.float32(5), shape=None
      )
      mu = tf1.placeholder_with_default(np.float32(5), shape=None)
      sigma = tf1.placeholder_with_default(
          np.float32([1.0, 2.0]), shape=None
      )
      dist = johnson_su.JohnsonSU(
          skewness=skewness,
          tailweight=tailweight,
          loc=mu,
          scale=sigma,
          validate_args=True,
      )
  
      # get_batch_shape should return an '<unknown>' tensor (graph mode only).
      self.assertEqual(dist.event_shape, ())
      self.assertEqual(
          dist.batch_shape,
          tf.TensorShape([2] if tf.executing_eagerly() else None),
      )
      self.assertAllEqual(self.evaluate(dist.event_shape_tensor()), [])
      self.assertAllEqual(self.evaluate(dist.batch_shape_tensor()), [2])
  
imports: import math
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import johnson_su
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 27 for calling the JohnsonSUTest obj's underlying member method code with example usage: obj.testJohnsonSUShapeWithPlaceholders() without return types