code: def inference_deeper(images, dropout=False):
      """Build a deeper CNN model.
      Args:
        images: Images returned from distorted_inputs() or inputs().
        dropout: Boolean controlling whether to use dropout or not
      Returns:
        Logits
      """
      if FLAGS.dataset == "mnist":
          first_conv_shape = [3, 3, 1, 96]
      else:
          first_conv_shape = [3, 3, 3, 96]
  
      # conv1
      with tf.variable_scope("conv1") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=first_conv_shape, stddev=0.05, wd=0.0
          )
          conv = tf.nn.conv2d(
              images, kernel, [1, 1, 1, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [96], tf.constant_initializer(0.0)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv1 = tf.nn.relu(bias, name=scope.name)
  
      # conv2
      with tf.variable_scope("conv2") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=[3, 3, 96, 96], stddev=0.05, wd=0.0
          )
          conv = tf.nn.conv2d(
              conv1, kernel, [1, 1, 1, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [96], tf.constant_initializer(0.0)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv2 = tf.nn.relu(bias, name=scope.name)
  
      # conv3
      with tf.variable_scope("conv3") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=[3, 3, 96, 96], stddev=0.05, wd=0.0
          )
          conv = tf.nn.conv2d(
              conv2, kernel, [1, 2, 2, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [96], tf.constant_initializer(0.0)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv3 = tf.nn.relu(bias, name=scope.name)
          if dropout:
              conv3 = tf.nn.dropout(conv3, 0.5, seed=FLAGS.dropout_seed)
  
      # conv4
      with tf.variable_scope("conv4") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=[3, 3, 96, 192], stddev=0.05, wd=0.0
          )
          conv = tf.nn.conv2d(
              conv3, kernel, [1, 1, 1, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [192], tf.constant_initializer(0.0)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv4 = tf.nn.relu(bias, name=scope.name)
  
      # conv5
      with tf.variable_scope("conv5") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=[3, 3, 192, 192], stddev=0.05, wd=0.0
          )
          conv = tf.nn.conv2d(
              conv4, kernel, [1, 1, 1, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [192], tf.constant_initializer(0.0)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv5 = tf.nn.relu(bias, name=scope.name)
  
      # conv6
      with tf.variable_scope("conv6") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=[3, 3, 192, 192], stddev=0.05, wd=0.0
          )
          conv = tf.nn.conv2d(
              conv5, kernel, [1, 2, 2, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [192], tf.constant_initializer(0.0)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv6 = tf.nn.relu(bias, name=scope.name)
          if dropout:
              conv6 = tf.nn.dropout(conv6, 0.5, seed=FLAGS.dropout_seed)
  
      # conv7
      with tf.variable_scope("conv7") as scope:
          kernel = _variable_with_weight_decay(
              "weights", shape=[5, 5, 192, 192], stddev=1e-4, wd=0.0
          )
          conv = tf.nn.conv2d(
              conv6, kernel, [1, 1, 1, 1], padding="SAME"
          )
          biases = _variable_on_cpu(
              "biases", [192], tf.constant_initializer(0.1)
          )
          bias = tf.nn.bias_add(conv, biases)
          conv7 = tf.nn.relu(bias, name=scope.name)
  
      # local1
      with tf.variable_scope("local1") as scope:
          # Move everything into depth so we can perform a single matrix multiply.
          reshape = tf.reshape(conv7, [FLAGS.batch_size, -1])
          dim = reshape.get_shape()[1].value
          weights = _variable_with_weight_decay(
              "weights", shape=[dim, 192], stddev=0.05, wd=0
          )
          biases = _variable_on_cpu(
              "biases", [192], tf.constant_initializer(0.1)
          )
          local1 = tf.nn.relu(
              tf.matmul(reshape, weights) + biases, name=scope.name
          )
  
      # local2
      with tf.variable_scope("local2") as scope:
          weights = _variable_with_weight_decay(
              "weights", shape=[192, 192], stddev=0.05, wd=0
          )
          biases = _variable_on_cpu(
              "biases", [192], tf.constant_initializer(0.1)
          )
          local2 = tf.nn.relu(
              tf.matmul(local1, weights) + biases, name=scope.name
          )
          if dropout:
              local2 = tf.nn.dropout(
                  local2, 0.5, seed=FLAGS.dropout_seed
              )
  
      # compute logits
      with tf.variable_scope("softmax_linear") as scope:
          weights = _variable_with_weight_decay(
              "weights", [192, FLAGS.nb_labels], stddev=0.05, wd=0.0
          )
          biases = _variable_on_cpu(
              "biases", [FLAGS.nb_labels], tf.constant_initializer(0.0)
          )
          logits = tf.add(
              tf.matmul(local2, weights), biases, name=scope.name
          )
  
      return logits
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from datetime import datetime
  import math
  import numpy
  from six.moves import xrange
  import tensorflow.compat.v1
  import time
  import utils
label_desc: Use image node_id 4 for calling a global function with example usage: inference_deeper(images, dropout) and returns: logits