class_docstr: A simple model that uses only convolution and downsampling---no batch norm or other techniques that can complicate
  adversarial training.
code: def fprop(self, x, **kwargs):
      del kwargs
      conv_args = dict(
          activation=tf.nn.leaky_relu,
          kernel_initializer=initializers.HeReLuNormalInitializer,
          kernel_size=3,
          padding="same",
      )
      y = x
  
      with tf.variable_scope(self.scope, reuse=tf.AUTO_REUSE):
          log_resolution = int(
              round(math.log(self.input_shape[0]) / math.log(2))
          )
          for scale in range(log_resolution - 2):
              y = tf.layers.conv2d(
                  y, self.nb_filters << scale, **conv_args
              )
              y = tf.layers.conv2d(
                  y, self.nb_filters << (scale + 1), **conv_args
              )
              y = tf.layers.average_pooling2d(y, 2, 2)
          y = tf.layers.conv2d(y, self.nb_classes, **conv_args)
          logits = tf.reduce_mean(y, [1, 2])
          return {
              self.O_LOGITS: logits,
              self.O_PROBS: tf.nn.softmax(logits=logits),
          }
  
file_path: cleverhans/cleverhans_v3.1.0/cleverhans/model_zoo/all_convolutional.py
imports: import math
  import tensorflow
  from cleverhans import initializers
  from cleverhans.serial import NoRefModel
label_desc: Use image node_id 2 for calling the ModelAllConvolutional obj's underlying member method code with example usage: obj.fprop(x) and returns: dict