code: def test_variables_receive_gradients(self):
      df = deep_factorized.NoisyDeepFactorized()
      with tf.GradientTape() as tape:
          x = tf.random.normal([20])
          loss = -tf.reduce_mean(df.log_prob(x))
      grads = tape.gradient(loss, df.trainable_variables)
      self.assertLen(grads, 8)
      self.assertNotIn(None, grads)
  
imports: from absl.testing import parameterized
  import tensorflow
  import tensorflow_probability
  from tensorflow_compression.python.distributions import deep_factorized
  from tensorflow_compression.python.distributions import helpers
label_desc: Use image node_id 4 for calling the NoisyDeepFactorizedTest obj's underlying member method code with example usage: obj.test_variables_receive_gradients() without return types