code: def cnn_mnist_tf(input_shape):
      labels_tf = tf.placeholder(tf.float32, [None, 10])
      inputs_tf = tf.placeholder(tf.float32, [None] + list(input_shape))
  
      # Define the TensorFlow graph
      conv = tf.layers.conv2d(inputs_tf, 4, 5, activation=tf.nn.relu)
      conv = tf.layers.max_pooling2d(conv, 2, 2)
      fc = tf.contrib.layers.flatten(conv)
  
      # Logits layer
      logits = tf.layers.dense(fc, 10)
  
      # Train operator
      loss = tf.reduce_mean(
          tf.losses.softmax_cross_entropy(
              logits=logits, onehot_labels=labels_tf
          )
      )
      optimizer = tf.train.AdamOptimizer(learning_rate=0.01)
      train_tf = optimizer.minimize(loss)
  
      sess = tf.Session()
      sess.run(tf.global_variables_initializer())
  
      classifier = TensorFlowClassifier(
          clip_values=(0, 1),
          input_ph=inputs_tf,
          output=logits,
          loss=loss,
          train=train_tf,
          labels_ph=labels_tf,
          sess=sess,
      )
      return classifier
  
file_path: adversarial-robustness-toolbox/examples/mnist_transferability.py
imports: from __future__ import absolute_import, division, print_function
  import keras
  import keras.backend
  from keras.models import Sequential
  from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
  import numpy
  import tensorflow
  from art.attacks.evasion import DeepFool
  from art.estimators.classification import KerasClassifier, TensorFlowClassifier
  from art.utils import load_mnist
label_desc: Use image node_id 1 for calling a global function with example usage: cnn_mnist_tf(input_shape) and returns: classifier