class_docstr: A unittest class for testing the KnockoffNets attack.
docstr: First test for TensorFlow.
  :return:
docstr_tok: ["First","test","for","TensorFlow",".",":","return",":"]
code: def test_2_tensorflow_iris(self):
      """
      First test for TensorFlow.
      :return:
      """
      # Get the TensorFlow classifier
      victim_tfc, sess = get_tabular_classifier_tf()
  
      # Create the thieved classifier
      thieved_tfc, _ = get_tabular_classifier_tf(
          load_init=False, sess=sess
      )
  
      # Create random attack
      attack = KnockoffNets(
          classifier=victim_tfc,
          batch_size_fit=BATCH_SIZE,
          batch_size_query=BATCH_SIZE,
          nb_epochs=NB_EPOCHS,
          nb_stolen=NB_STOLEN,
          sampling_strategy="random",
          verbose=False,
      )
      thieved_tfc = attack.extract(
          x=self.x_train_iris, thieved_classifier=thieved_tfc
      )
  
      victim_preds = np.argmax(
          victim_tfc.predict(x=self.x_train_iris), axis=1
      )
      thieved_preds = np.argmax(
          thieved_tfc.predict(x=self.x_train_iris), axis=1
      )
      acc = np.sum(victim_preds == thieved_preds) / len(victim_preds)
  
      self.assertGreater(acc, 0.3)
  
      # Create adaptive attack
      attack = KnockoffNets(
          classifier=victim_tfc,
          batch_size_fit=BATCH_SIZE,
          batch_size_query=BATCH_SIZE,
          nb_epochs=NB_EPOCHS,
          nb_stolen=NB_STOLEN,
          sampling_strategy="adaptive",
          reward="all",
          verbose=False,
      )
      thieved_tfc = attack.extract(
          x=self.x_train_iris,
          y=self.y_train_iris,
          thieved_classifier=thieved_tfc,
      )
  
      victim_preds = np.argmax(
          victim_tfc.predict(x=self.x_train_iris), axis=1
      )
      thieved_preds = np.argmax(
          thieved_tfc.predict(x=self.x_train_iris), axis=1
      )
      acc = np.sum(victim_preds == thieved_preds) / len(victim_preds)
  
      self.assertGreater(acc, 0.4)
  
      # Clean-up session
      if sess is not None:
          sess.close()
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import unittest
  import numpy
  import keras.backend
  from art.attacks.extraction.knockoff_nets import KnockoffNets
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from tests.utils import TestBase, master_seed
  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 7 for calling the TestKnockoffNets obj's underlying member method code with example usage: obj.test_2_tensorflow_iris() without return types