In [1]:
from keras.datasets import cifar10
from keras.models import load_model
import keras.backend as K
import numpy as np
from six.moves import cPickle as pickle

from IPython import display
import matplotlib.pyplot as plt

% matplotlib inline
% config InlineBackend.figure_format = 'retina'


Using TensorFlow backend.

In [2]:
# Fetch data
(X_train, y_train), (X_test, y_test) = cifar10.load_data()

# Convert uint8 pixel values to float32 in the range [0, 1] (for sigmoid)
X_test = X_test.astype('float32')
X_test /= 255

epochs = range(10, 501, 10)
acc_trend = []
for epoch in epochs:
    all_class_preds = np.ndarray(shape=(X_test.shape[0], 10), dtype=np.float32)
    for image_class in range(10):
        discriminator = load_model("networks/disc" + str(image_class) + "-" + str(epoch) + ".h5")
        preds = discriminator.predict(X_test)
        class_preds = preds[:, 0] + preds[:, 1]
        all_class_preds[:, image_class] = class_preds
    K.clear_session() # Avoid running out of memory
    
    # Calculate joint accuracy
    all_class_preds_index = np.argmax(all_class_preds, axis=1)
    accuracy = 0
    for y, p in zip(y_test, all_class_preds_index):
        if y == p:
            accuracy += 1
    accuracy /= 1. * len(y_test)
    acc_trend.append(accuracy)
    
    print "Epoch: {:d}, Joint Accuracy: {:.4f}".format(epoch, accuracy)

pickle.dump(acc_trend, open("GAN-Mode3_acc.pickle", "wb" ))


Epoch: 10, Joint Accuracy: 0.5184
Epoch: 20, Joint Accuracy: 0.6323
Epoch: 30, Joint Accuracy: 0.6828
Epoch: 40, Joint Accuracy: 0.6999
Epoch: 50, Joint Accuracy: 0.7436
Epoch: 60, Joint Accuracy: 0.7664
Epoch: 70, Joint Accuracy: 0.7806
Epoch: 80, Joint Accuracy: 0.7927
Epoch: 90, Joint Accuracy: 0.7956
Epoch: 100, Joint Accuracy: 0.7986
Epoch: 110, Joint Accuracy: 0.8078
Epoch: 120, Joint Accuracy: 0.8087
Epoch: 130, Joint Accuracy: 0.8186
Epoch: 140, Joint Accuracy: 0.8159
Epoch: 150, Joint Accuracy: 0.8165
Epoch: 160, Joint Accuracy: 0.8203
Epoch: 170, Joint Accuracy: 0.8210
Epoch: 180, Joint Accuracy: 0.8270
Epoch: 190, Joint Accuracy: 0.8250
Epoch: 200, Joint Accuracy: 0.8316
Epoch: 210, Joint Accuracy: 0.8341
Epoch: 220, Joint Accuracy: 0.8307
Epoch: 230, Joint Accuracy: 0.8325
Epoch: 240, Joint Accuracy: 0.8348
Epoch: 250, Joint Accuracy: 0.8345
Epoch: 260, Joint Accuracy: 0.8347
Epoch: 270, Joint Accuracy: 0.8331
Epoch: 280, Joint Accuracy: 0.8331
Epoch: 290, Joint Accuracy: 0.8344
Epoch: 300, Joint Accuracy: 0.8344
Epoch: 310, Joint Accuracy: 0.8347
Epoch: 320, Joint Accuracy: 0.8436
Epoch: 330, Joint Accuracy: 0.8398
Epoch: 340, Joint Accuracy: 0.8412
Epoch: 350, Joint Accuracy: 0.8304
Epoch: 360, Joint Accuracy: 0.8405
Epoch: 370, Joint Accuracy: 0.8389
Epoch: 380, Joint Accuracy: 0.8390
Epoch: 390, Joint Accuracy: 0.8355
Epoch: 400, Joint Accuracy: 0.8380
Epoch: 410, Joint Accuracy: 0.8420
Epoch: 420, Joint Accuracy: 0.8454
Epoch: 430, Joint Accuracy: 0.8406
Epoch: 440, Joint Accuracy: 0.8385
Epoch: 450, Joint Accuracy: 0.8472
Epoch: 460, Joint Accuracy: 0.8366
Epoch: 470, Joint Accuracy: 0.8449
Epoch: 480, Joint Accuracy: 0.8428
Epoch: 490, Joint Accuracy: 0.8379
Epoch: 500, Joint Accuracy: 0.8384

In [3]:
epochs = range(10, 501, 10)
acc_trend = pickle.load(open("GAN-Mode3_acc.pickle", "rb"))

plt.figure(figsize=(10,8))
plt.plot(epochs, acc_trend)
plt.show()



In [ ]: