code: def _test_backend_mnist(self, classifier, x_test, y_test):
      x_test_original = x_test.copy()
  
      df = VirtualAdversarialMethod(
          classifier, batch_size=100, max_iter=2, verbose=False
      )
  
      x_test_adv = df.generate(x_test)
  
      self.assertFalse((x_test == x_test_adv).all())
  
      y_pred = get_labels_np_array(classifier.predict(x_test_adv))
      self.assertFalse((y_test == y_pred).all())
  
      acc = (
          np.sum(np.argmax(y_pred, axis=1) == np.argmax(y_test, axis=1))
          / y_test.shape[0]
      )
      logger.info(
          "Accuracy on adversarial examples: %.2f%%", (acc * 100)
      )
  
      # Check that x_test has not been modified by attack and classifier
      self.assertAlmostEqual(
          float(np.max(np.abs(x_test_original - x_test))),
          0.0,
          delta=0.00001,
      )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import unittest
  import numpy
  from art.attacks.evasion.virtual_adversarial import VirtualAdversarialMethod
  from art.estimators.classification.keras import KerasClassifier
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import get_labels_np_array
  from tests.utils import TestBase
  from tests.utils import get_image_classifier_tf, get_image_classifier_kr, get_image_classifier_pt
  from tests.utils import get_tabular_classifier_tf, get_tabular_classifier_kr, get_tabular_classifier_pt
  from tests.attacks.utils import backend_test_classifier_type_check_fail
label_desc: Use image node_id 5 for calling the TestVirtualAdversarial obj's underlying member method code with example usage: obj._test_backend_mnist(classifier, x_test, y_test) without return types