import tensorflow as tf

    batch_size_val = self.cnf['batch_size_test']
    self.end_points_G = self.model.generator([batch_size_train, 100], True, None, batch_size_val)

    if gpu_idx == 0:
      G_means = tf.reduce_mean(self.end_points_G['softmax'], 0, keep_dims=True)
      G_vars = tf.reduce_mean(tf.square(self.end_points_G['softmax'] - G_means), 0, keep_dims=True)
      G = tf.Print(
          self.end_points_G['softmax'],
          [tf.reduce_mean(G_means), tf.reduce_mean(G_vars)],
          "generator mean and average var",
          first_n=1)
      inputs_means = tf.reduce_mean(inputs, 0, keep_dims=True)
      inputs_vars = tf.reduce_mean(tf.square(inputs - inputs_means), 0, keep_dims=True)
      inputs = tf.Print(
          inputs,
          [tf.reduce_mean(inputs_means), tf.reduce_mean(inputs_vars)],
          "image mean and average var",
          first_n=1)

    joint = tf.concat([inputs, G], 0)
    log.info('Input size of unlabelled and generated %s' % (joint.get_shape()))
    self.end_points_D = self.model.discriminator(
        joint, True, None, num_classes=num_classes, batch_size=batch_size_train)
    self.end_points_D_val = self.model.discriminator(
