'Build the core model within the graph.'

def _build_model(self):

    with tf.variable_scope('init'):
        x = self._images
        x = self._conv('init_conv', x, 3, 3, 16, self._stride_arr(1))
    strides = [1, 2, 2]
    activate_before_residual = [True, False, False]
    if self.hps.use_bottleneck:
        res_func = self._bottleneck_residual
        filters = [16, 64, 128, 256]
    else:
        res_func = self._residual
        filters = [16, 16, 32, 64]
    with tf.variable_scope('unit_1_0'):
        x = res_func(x, filters[0], filters[1], self._stride_arr(strides[0]), activate_before_residual[0])
    for i in six.moves.range(1, self.hps.num_residual_units):
        with tf.variable_scope(('unit_1_%d' % i)):
            x = res_func(x, filters[1], filters[1], self._stride_arr(1), False)
    with tf.variable_scope('unit_2_0'):
        x = res_func(x, filters[1], filters[2], self._stride_arr(strides[1]), activate_before_residual[1])
    for i in six.moves.range(1, self.hps.num_residual_units):
        with tf.variable_scope(('unit_2_%d' % i)):
            x = res_func(x, filters[2], filters[2], self._stride_arr(1), False)
    with tf.variable_scope('unit_3_0'):
        x = res_func(x, filters[2], filters[3], self._stride_arr(strides[2]), activate_before_residual[2])
    for i in six.moves.range(1, self.hps.num_residual_units):
        with tf.variable_scope(('unit_3_%d' % i)):
            x = res_func(x, filters[3], filters[3], self._stride_arr(1), False)
    with tf.variable_scope('unit_last'):
        x = self._batch_norm('final_bn', x)
        x = self._relu(x, self.hps.relu_leakiness)
        x = self._global_avg_pool(x)
    with tf.variable_scope('logit'):
        logits = self._fully_connected(x, self.hps.num_classes)
        self.predictions = tf.nn.softmax(logits)
    with tf.variable_scope('costs'):
        xent = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=self.labels)
        self.cost = tf.reduce_mean(xent, name='xent')
        self.cost += self._decay()
        tf.summary.scalar('cost', self.cost)
