code: def test_compute_dpsgd_noise_multiplier(
      self, num_train, epsilon, delta, epochs, batch_size, tolerance
  ):
      noise_multiplier = (
          multinomial_logistic.compute_dpsgd_noise_multiplier(
              num_train, epsilon, delta, epochs, batch_size, tolerance
          )
      )
      epsilon_lower_bound = (
          compute_dp_sgd_privacy_lib.compute_dp_sgd_privacy(
              num_train,
              batch_size,
              noise_multiplier + tolerance,
              epochs,
              delta,
          )[0]
      )
      epsilon_upper_bound = (
          compute_dp_sgd_privacy_lib.compute_dp_sgd_privacy(
              num_train,
              batch_size,
              noise_multiplier - tolerance,
              epochs,
              delta,
          )[0]
      )
      self.assertLess(epsilon_lower_bound, epsilon)
      self.assertLess(epsilon, epsilon_upper_bound)
  
file_path: privacy/tensorflow_privacy/privacy/logistic_regression/multinomial_logistic_test.py
imports: import unittest
  from absl.testing import parameterized
  from tensorflow_privacy.privacy.analysis import compute_dp_sgd_privacy_lib
  from tensorflow_privacy.privacy.logistic_regression import datasets
  from tensorflow_privacy.privacy.logistic_regression import multinomial_logistic
label_desc: Use image node_id 2 for calling the MultinomialLogisticRegressionTest obj's underlying member method code with example usage: obj.test_compute_dpsgd_noise_multiplier(num_train, epsilon, delta, epochs, batch_size, tolerance) without return types