def add_inference()

in tensorflow_benchmark/tf_cnn_benchmarks/models/inception_model.py [0:0]


  def add_inference(self, cnn):
    def inception_v3_a(cnn, n):
      cols = [[('conv', 64, 1, 1)], [('conv', 48, 1, 1), ('conv', 64, 5, 5)],
              [('conv', 64, 1, 1), ('conv', 96, 3, 3), ('conv', 96, 3, 3)],
              [('apool', 3, 3, 1, 1, 'SAME'), ('conv', n, 1, 1)]]
      cnn.inception_module('incept_v3_a', cols)

    def inception_v3_b(cnn):
      cols = [[('conv', 384, 3, 3, 2, 2, 'VALID')],
              [('conv', 64, 1, 1),
               ('conv', 96, 3, 3),
               ('conv', 96, 3, 3, 2, 2, 'VALID')],
              [('mpool', 3, 3, 2, 2, 'VALID')]]
      cnn.inception_module('incept_v3_b', cols)

    def inception_v3_c(cnn, n):
      cols = [[('conv', 192, 1, 1)],
              [('conv', n, 1, 1), ('conv', n, 1, 7), ('conv', 192, 7, 1)],
              [('conv', n, 1, 1), ('conv', n, 7, 1), ('conv', n, 1, 7),
               ('conv', n, 7, 1), ('conv', 192, 1, 7)],
              [('apool', 3, 3, 1, 1, 'SAME'), ('conv', 192, 1, 1)]]
      cnn.inception_module('incept_v3_c', cols)

    def inception_v3_d(cnn):
      cols = [[('conv', 192, 1, 1), ('conv', 320, 3, 3, 2, 2, 'VALID')],
              [('conv', 192, 1, 1), ('conv', 192, 1, 7), ('conv', 192, 7, 1),
               ('conv', 192, 3, 3, 2, 2, 'VALID')],
              [('mpool', 3, 3, 2, 2, 'VALID')]]
      cnn.inception_module('incept_v3_d', cols)

    def inception_v3_e(cnn, pooltype):
      cols = [[('conv', 320, 1, 1)], [('conv', 384, 1, 1), ('conv', 384, 1, 3)],
              [('share',), ('conv', 384, 3, 1)],
              [('conv', 448, 1, 1), ('conv', 384, 3, 3), ('conv', 384, 1, 3)],
              [('share',), ('share',), ('conv', 384, 3, 1)],
              [('mpool' if pooltype == 'max' else 'apool', 3, 3, 1, 1, 'SAME'),
               ('conv', 192, 1, 1)]]
      cnn.inception_module('incept_v3_e', cols)

    def incept_v3_aux(cnn):
      assert cnn.aux_top_layer is None
      cnn.aux_top_layer = cnn.top_layer
      cnn.aux_top_size = cnn.top_size
      with cnn.switch_to_aux_top_layer():
        cnn.apool(5, 5, 3, 3, mode='VALID')
        cnn.conv(128, 1, 1, mode='SAME')
        cnn.conv(768, 5, 5, mode='VALID', stddev=0.01)
        cnn.reshape([-1, 768])

    cnn.use_batch_norm = True
    cnn.conv(32, 3, 3, 2, 2, mode='VALID')   # 299 x 299 x 3
    cnn.conv(32, 3, 3, 1, 1, mode='VALID')   # 149 x 149 x 32
    cnn.conv(64, 3, 3, 1, 1, mode='SAME')    # 147 x 147 x 64
    cnn.mpool(3, 3, 2, 2, mode='VALID')      # 147 x 147 x 64
    cnn.conv(80, 1, 1, 1, 1, mode='VALID')   # 73 x 73 x 80
    cnn.conv(192, 3, 3, 1, 1, mode='VALID')  # 71 x 71 x 192
    cnn.mpool(3, 3, 2, 2, 'VALID')           # 35 x 35 x 192
    inception_v3_a(cnn, 32)                  # 35 x 35 x 256 mixed.
    inception_v3_a(cnn, 64)                  # 35 x 35 x 288 mixed_1.
    inception_v3_a(cnn, 64)                  # 35 x 35 x 288 mixed_2
    inception_v3_b(cnn)                      # 17 x 17 x 768 mixed_3
    inception_v3_c(cnn, 128)                 # 17 x 17 x 768 mixed_4
    inception_v3_c(cnn, 160)                 # 17 x 17 x 768 mixed_5
    inception_v3_c(cnn, 160)                 # 17 x 17 x 768 mixed_6
    inception_v3_c(cnn, 192)                 # 17 x 17 x 768 mixed_7
    if self._auxiliary:
      incept_v3_aux(cnn)                     # Auxillary Head logits
    inception_v3_d(cnn)                      # 17 x 17 x 1280 mixed_8
    inception_v3_e(cnn, 'avg')               # 8 x 8 x 2048 mixed_9
    inception_v3_e(cnn, 'max')               # 8 x 8 x 2048 mixed_10
    cnn.apool(8, 8, 1, 1, 'VALID')           # 8 x 8 x 2048
    cnn.reshape([-1, 2048])                  # 1 x 1 x 2048