def main(_, run_eval_loop=True):
  with tf.name_scope('inputs'):
    noise_args = (FLAGS.noise_samples, CAT_SAMPLE_POINTS, CONT_SAMPLE_POINTS,
                  FLAGS.unstructured_noise_dims, FLAGS.continuous_noise_dims)
    # Use fixed noise vectors to illustrate the effect of each dimension.
    display_noise1 = util.get_eval_noise_categorical(*noise_args)
    display_noise2 = util.get_eval_noise_continuous_dim1(*noise_args)
    display_noise3 = util.get_eval_noise_continuous_dim2(*noise_args)
    _validate_noises([display_noise1, display_noise2, display_noise3])

  # Visualize the effect of each structured noise dimension on the generated
  # image.
  generator_fn = lambda x: networks.infogan_generator(x, len(CAT_SAMPLE_POINTS))
  with tf.variable_scope('Generator') as genscope:  # Same scope as in training.
    categorical_images = generator_fn(display_noise1)
  reshaped_categorical_img = tfgan.eval.image_reshaper(
      categorical_images, num_cols=len(CAT_SAMPLE_POINTS))
  tf.summary.image('categorical', reshaped_categorical_img, max_outputs=1)

  with tf.variable_scope(genscope, reuse=True):
    continuous1_images = generator_fn(display_noise2)
  reshaped_continuous1_img = tfgan.eval.image_reshaper(
      continuous1_images, num_cols=len(CONT_SAMPLE_POINTS))
  tf.summary.image('continuous1', reshaped_continuous1_img, max_outputs=1)

  with tf.variable_scope(genscope, reuse=True):
    continuous2_images = generator_fn(display_noise3)
  reshaped_continuous2_img = tfgan.eval.image_reshaper(
      continuous2_images, num_cols=len(CONT_SAMPLE_POINTS))
  tf.summary.image('continuous2', reshaped_continuous2_img, max_outputs=1)

  # Evaluate image quality.
  all_images = tf.concat(
      [categorical_images, continuous1_images, continuous2_images], 0)
  tf.summary.scalar('MNIST_Classifier_score',
                    util.mnist_score(all_images, FLAGS.classifier_filename))

  # Write images to disk.
  image_write_ops = []
  image_write_ops.append(_get_write_image_ops(
      FLAGS.eval_dir, 'categorical_infogan.png', reshaped_categorical_img[0]))
  image_write_ops.append(_get_write_image_ops(
      FLAGS.eval_dir, 'continuous1_infogan.png', reshaped_continuous1_img[0]))
  image_write_ops.append(_get_write_image_ops(
      FLAGS.eval_dir, 'continuous2_infogan.png', reshaped_continuous2_img[0]))

  # For unit testing, use `run_eval_loop=False`.
  if not run_eval_loop: return
  tf.contrib.training.evaluate_repeatedly(
      FLAGS.checkpoint_dir,
      hooks=[tf.contrib.training.SummaryAtEndHook(FLAGS.eval_dir),
             tf.contrib.training.StopAfterNEvalsHook(1)],
      eval_ops=image_write_ops,
      max_number_of_evaluations=FLAGS.max_number_of_evaluations)
def main(_, run_eval_loop=True):
    with tf.name_scope('inputs'):
        noise_args = (FLAGS.noise_samples, CAT_SAMPLE_POINTS,
                      CONT_SAMPLE_POINTS, FLAGS.unstructured_noise_dims,
                      FLAGS.continuous_noise_dims)
        # Use fixed noise vectors to illustrate the effect of each dimension.
        display_noise1 = util.get_eval_noise_categorical(*noise_args)
        display_noise2 = util.get_eval_noise_continuous_dim1(*noise_args)
        display_noise3 = util.get_eval_noise_continuous_dim2(*noise_args)
        _validate_noises([display_noise1, display_noise2, display_noise3])

    # Visualize the effect of each structured noise dimension on the generated
    # image.
    generator_fn = lambda x: networks.infogan_generator(
        x, len(CAT_SAMPLE_POINTS))
    with tf.variable_scope(
            'Generator') as genscope:  # Same scope as in training.
        categorical_images = generator_fn(display_noise1)
    reshaped_categorical_img = tfgan.eval.image_reshaper(
        categorical_images, num_cols=len(CAT_SAMPLE_POINTS))
    tf.summary.image('categorical', reshaped_categorical_img, max_outputs=1)

    with tf.variable_scope(genscope, reuse=True):
        continuous1_images = generator_fn(display_noise2)
    reshaped_continuous1_img = tfgan.eval.image_reshaper(
        continuous1_images, num_cols=len(CONT_SAMPLE_POINTS))
    tf.summary.image('continuous1', reshaped_continuous1_img, max_outputs=1)

    with tf.variable_scope(genscope, reuse=True):
        continuous2_images = generator_fn(display_noise3)
    reshaped_continuous2_img = tfgan.eval.image_reshaper(
        continuous2_images, num_cols=len(CONT_SAMPLE_POINTS))
    tf.summary.image('continuous2', reshaped_continuous2_img, max_outputs=1)

    # Evaluate image quality.
    all_images = tf.concat(
        [categorical_images, continuous1_images, continuous2_images], 0)
    tf.summary.scalar('MNIST_Classifier_score',
                      util.mnist_score(all_images, FLAGS.classifier_filename))

    # Write images to disk.
    image_write_ops = []
    image_write_ops.append(
        _get_write_image_ops(FLAGS.eval_dir, 'categorical_infogan.png',
                             reshaped_categorical_img[0]))
    image_write_ops.append(
        _get_write_image_ops(FLAGS.eval_dir, 'continuous1_infogan.png',
                             reshaped_continuous1_img[0]))
    image_write_ops.append(
        _get_write_image_ops(FLAGS.eval_dir, 'continuous2_infogan.png',
                             reshaped_continuous2_img[0]))

    # For unit testing, use `run_eval_loop=False`.
    if not run_eval_loop: return
    tf.contrib.training.evaluate_repeatedly(
        FLAGS.checkpoint_dir,
        hooks=[
            tf.contrib.training.SummaryAtEndHook(FLAGS.eval_dir),
            tf.contrib.training.StopAfterNEvalsHook(1)
        ],
        eval_ops=image_write_ops,
        max_number_of_evaluations=FLAGS.max_number_of_evaluations)
Exemple #3
0
 def generator_fn(inputs):
     return networks.infogan_generator(inputs,
                                       len(CAT_SAMPLE_POINTS),
                                       is_training=False)
Exemple #4
0
 def generator_fn(inputs):
   return networks.infogan_generator(
       inputs, len(CAT_SAMPLE_POINTS), is_training=False)