def main(_, run_eval_loop=True): # Fetch real images. with tf.name_scope('inputs'): real_images, _, _ = data_provider.provide_data( 'train', FLAGS.num_images_generated, FLAGS.dataset_dir) image_write_ops = None if FLAGS.eval_real_images: tf.summary.scalar( 'MNIST_Classifier_score', util.mnist_score(real_images, FLAGS.classifier_filename)) else: # In order for variables to load, use the same variable scope as in the # train job. with tf.variable_scope('Generator'): images = networks.unconditional_generator(tf.random_normal( [FLAGS.num_images_generated, FLAGS.noise_dims]), is_training=False) tf.summary.scalar( 'MNIST_Frechet_distance', util.mnist_frechet_distance(real_images, images, FLAGS.classifier_filename)) tf.summary.scalar('MNIST_Classifier_score', util.mnist_score(images, FLAGS.classifier_filename)) if FLAGS.num_images_generated >= 100 and FLAGS.write_to_disk: reshaped_images = tfgan.eval.image_reshaper(images[:100, ...], num_cols=10) uint8_images = data_provider.float_image_to_uint8(reshaped_images) image_write_ops = tf.write_file( '%s/%s' % (FLAGS.eval_dir, 'unconditional_gan.png'), tf.image.encode_png(uint8_images[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): # Fetch real images. with tf.name_scope('inputs'): real_images, _, _ = data_provider.provide_data( 'train', FLAGS.num_images_generated, FLAGS.dataset_dir) image_write_ops = None if FLAGS.eval_real_images: tf.summary.scalar('MNIST_Classifier_score', util.mnist_score(real_images, FLAGS.classifier_filename)) else: # In order for variables to load, use the same variable scope as in the # train job. with tf.variable_scope('Generator'): images = networks.unconditional_generator( tf.random_normal([FLAGS.num_images_generated, FLAGS.noise_dims]), is_training=False) tf.summary.scalar('MNIST_Frechet_distance', util.mnist_frechet_distance( real_images, images, FLAGS.classifier_filename)) tf.summary.scalar('MNIST_Classifier_score', util.mnist_score(images, FLAGS.classifier_filename)) if FLAGS.num_images_generated >= 100 and FLAGS.write_to_disk: reshaped_images = tfgan.eval.image_reshaper( images[:100, ...], num_cols=10) uint8_images = data_provider.float_image_to_uint8(reshaped_images) image_write_ops = tf.write_file( '%s/%s'% (FLAGS.eval_dir, 'unconditional_gan.png'), tf.image.encode_png(uint8_images[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)
MNIST_CLASSIFIER_FROZEN_GRAPH = 'mnist/classify_mnist_graph_def.pb' # For variables to load, use the same variable scope as in the train job. with tf.variable_scope('Generator', reuse=True): eval_images = gan_model.generator_fn(tf.random_normal( [num_images_to_eval, noise_dims]), is_training=False) # Calculate Inception score. eval_score = util.mnist_score(eval_images, MNIST_CLASSIFIER_FROZEN_GRAPH) # Calculate Frechet Inception distance. with tf.device('/cpu:0'): real_images, _, _ = data_provider.provide_data('train', num_images_to_eval, MNIST_DATA_DIR) frechet_distance = util.mnist_frechet_distance(real_images, eval_images, MNIST_CLASSIFIER_FROZEN_GRAPH) # Reshape eval images for viewing. generated_data_to_visualize = tfgan.eval.image_reshaper(eval_images[:20, ...], num_cols=10) # We have the option to train the discriminator more than one step for every # step of the generator. In order to do this, we use a `GANTrainSteps` with # desired values. For this example, we use the default 1 generator train step # for every discriminator train step. train_step_fn = tfgan.get_sequential_train_steps() global_step = tf.train.get_or_create_global_step() loss_values, mnist_scores, frechet_distances = [], [], [] with tf.train.SingularMonitoredSession() as sess: