Train a "perfect" MNIST classifier, and use it to compute inception score (ICP)
With our ICP implementation (pre-trained model saved in directory 'model'), the testing set of MNIST yields a score
Note that different pre-trained models may lead to slightly different inception scores.
Prerequisites: Tensorflow 1.0
The generated images are saved in a mat file, with a tensor named 'images' of size [10000,784], where 10000 is the number of images, and 784 is the dimension of a flattened MNIST image.
If you have multiple checkout points (each is a mat file) saved in a folder, you may specify the directory as
# folders for generated images
result_folder = './example_dir/'
icp = []
for k in range(50):
k = k + 1
mat = scipy.io.loadmat(result_folder+ '{}.mat'.format(str(k).zfill(3)))
If you have one checkout point saved in a mat file, you may specify the file as
file_name = 'example.mat'
mat = scipy.io.loadmat(result_folder+ file_name )
To evaluate the ICP of generated images, run:
mnist_cnn_icp_eval.py
If you would like to re-train your classifier model, run:
mnist_cnn_train_slim.py
If you would like to plot your inception scores for multiple checkout points, run:
mnist_icp_plot.py
This code is used in the following paper:
@article{li2017alice,
title={ALICE: Towards Understanding Adversarial Learning for Joint Distribution Matching},
author={Li, Chunyuan and Liu, Hao and Chen, Changyou and Pu, Yunchen and Chen, Liqun and Henao, Ricardo and Carin, Lawrence},
journal={Neural Information Processing Systems (NIPS)},
year={2017}
}