code: def fprop(self, x, **kwargs):
      del kwargs
      my_dense = functools.partial(
          tf.layers.dense, kernel_initializer=HeReLuNormalInitializer
      )
      with tf.variable_scope(self.scope, reuse=tf.AUTO_REUSE):
          y = tf.layers.flatten(x)
          y = my_dense(y, self.nb_filters, activation=tf.nn.relu)
          y = my_dense(y, self.nb_filters, activation=tf.nn.relu)
          logits = my_dense(y, self.nb_classes)
          return {
              self.O_LOGITS: logits,
              self.O_PROBS: tf.nn.softmax(logits=logits),
          }
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import functools
  import logging
  import numpy
  from six.moves import xrange
  import tensorflow
  from cleverhans.attacks import FastGradientMethod
  from cleverhans.utils_tf import jacobian_graph, jacobian_augmentation
  from cleverhans.compat import flags
  from cleverhans.dataset import MNIST
  from cleverhans.initializers import HeReLuNormalInitializer
  from cleverhans.loss import CrossEntropy
  from cleverhans.model import Model
  from cleverhans.train import train
  from cleverhans.utils import set_log_level
  from cleverhans.utils import TemporaryLogLevel
  from cleverhans.utils import to_categorical
  from cleverhans.utils_tf import model_eval, batch_eval
  from cleverhans.model_zoo.basic_cnn import ModelBasicCNN
label_desc: Use image node_id 2 for calling the ModelSubstitute obj's underlying member method code with example usage: obj.fprop(x) and returns: dict