code: def test_logistic_dpsgd(
      self,
      num_train,
      num_test,
      dimension,
      epsilon,
      delta,
      epochs,
      num_classes,
      tolerance,
      batch_size,
      num_microbatches,
      clipping_norm,
  ):
      (
          train_dataset,
          test_dataset,
      ) = datasets.synthetic_linearly_separable_data(
          num_train, num_test, dimension, num_classes
      )
      _, accuracy = multinomial_logistic.logistic_dpsgd(
          train_dataset,
          test_dataset,
          epsilon,
          delta,
          epochs,
          num_classes,
          batch_size,
          num_microbatches,
          clipping_norm,
      )
      # Since the synthetic data is linearly separable, we expect the test
      # accuracy to come arbitrarily close to 1 as the number of training examples
      # grows.
      self.assertAlmostEqual(accuracy[-1], 1, delta=tolerance)
  
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 3 for calling the MultinomialLogisticRegressionTest obj's underlying member method code with example usage: obj.test_logistic_dpsgd(num_train, num_test, dimension, epsilon, delta, epochs, num_classes, tolerance, batch_size, num_microbatches, clipping_norm) without return types