code: def testLogNormalFromMeanVarianceTapeSafe(self):
      loc = np.float32(0.5)
      scale = 1.0
      x = np.array([0.4, 5.0, 3.0], dtype=np.float32)
  
      mean = tf.convert_to_tensor(
          sp_stats.lognorm.mean(s=scale, scale=np.exp(loc)).astype(
              np.float32
          )
      )
      variance = tf.convert_to_tensor(
          sp_stats.lognorm.var(s=scale, scale=np.exp(loc)).astype(
              np.float32
          )
      )
  
      dist = lognormal.LogNormal.experimental_from_mean_variance(
          mean, variance, validate_args=True
      )
      with tf.GradientTape() as tape:
          tape.watch((mean, variance))
          lp = dist.log_prob(x)
      grads = tape.gradient(lp, (mean, variance))
      self.assertAllNotNone(grads)
  
file_path: probability/tensorflow_probability/python/distributions/lognormal_test.py
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import lognormal
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 10 for calling the LogNormalTest obj's underlying member method code with example usage: obj.testLogNormalFromMeanVarianceTapeSafe() without return types