'Constructs classifier graph from inputs to classifier loss.
* Caches the VatxtInput objects in `self.cl_inputs`
* Caches tensors: `cl_embedded` (tuple of forward and reverse), `cl_logits`,
`cl_loss`
Returns:
loss: scalar float.'

def classifier_graph(self):

    inputs = _inputs('train', pretrain=False, bidir=True)
    self.cl_inputs = inputs
    (f_inputs, _) = inputs
    embedded = [self.layers['embedding'](inp.tokens) for inp in inputs]
    self.tensors['cl_embedded'] = embedded
    (_, next_states, logits, loss) = self.cl_loss_from_embedding(embedded, return_intermediates=True)
    tf.summary.scalar('classification_loss', loss)
    self.tensors['cl_logits'] = logits
    self.tensors['cl_loss'] = loss
    acc = layers_lib.accuracy(logits, f_inputs.labels, f_inputs.weights)
    tf.summary.scalar('accuracy', acc)
    adv_loss = (self.adversarial_loss() * tf.constant(FLAGS.adv_reg_coeff, name='adv_reg_coeff'))
    tf.summary.scalar('adversarial_loss', adv_loss)
    total_loss = (loss + adv_loss)
    tf.summary.scalar('total_classification_loss', total_loss)
    saves = [inp.save_state(state) for (inp, state) in zip(inputs, next_states)]
    with tf.control_dependencies(saves):
        total_loss = tf.identity(total_loss)
    return total_loss
