code: def fprop(self, x):
      output = OrderedDict()
      # first convolutional layer
      h_conv1 = tf.nn.relu(self._conv2d(x, self.W_conv1) + self.b_conv1)
      h_pool1 = self._max_pool_2x2(h_conv1)
  
      # second convolutional layer
      h_conv2 = tf.nn.relu(
          self._conv2d(h_pool1, self.W_conv2) + self.b_conv2
      )
      h_pool2 = self._max_pool_2x2(h_conv2)
  
      # first fully connected layer
  
      h_pool2_flat = tf.reshape(h_pool2, [-1, 7 * 7 * 64])
      h_fc1 = tf.nn.relu(
          tf.matmul(h_pool2_flat, self.W_fc1) + self.b_fc1
      )
  
      # output layer
      logits = tf.matmul(h_fc1, self.W_fc2) + self.b_fc2
  
      output = deterministic_dict(locals())
      del output["self"]
      output[self.O_PROBS] = tf.nn.softmax(logits=logits)
  
      return output
  
file_path: cleverhans/cleverhans_v3.1.0/examples/madry_lab_challenges/mnist/madry_mnist_model.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from collections import OrderedDict
  import tensorflow
  from cleverhans.model import Model
  from cleverhans.utils import deterministic_dict
  from cleverhans.dataset import Factory, MNIST
label_desc: Use image node_id 3 for calling the MadryMNIST obj's underlying member method code with example usage: obj.fprop(x) and returns: output