class_docstr: Common tests for noisy mixture distributions.
code: def test_variables_receive_gradients(self):
      loc = tf.Variable(tf.ones([2], dtype=tf.float32))
      log_scale = tf.Variable(tf.zeros([2], dtype=tf.float32))
      logit_weight = tf.Variable(
          tf.constant([0.3, 0.7], dtype=tf.float32)
      )
      with tf.GradientTape() as tape:
          dist = self.dist_cls(
              loc=loc,
              scale=tf.exp(log_scale),
              weight=tf.nn.softmax(logit_weight),
          )
          x = tf.random.normal([20])
          loss = -tf.reduce_mean(dist.log_prob(x))
      grads = tape.gradient(loss, [loc, log_scale, logit_weight])
      self.assertLen(grads, 3)
      self.assertNotIn(None, grads)
  
imports: import tensorflow
  from tensorflow_compression.python.distributions import helpers
  from tensorflow_compression.python.distributions import uniform_noise
label_desc: Use image node_id 3 for calling the MixtureTest obj's underlying member method code with example usage: obj.test_variables_receive_gradients() without return types