def _test_fit_image_generator(self, custom_activation=False): from keras.preprocessing.image import ImageDataGenerator from art.data_generators import KerasDataGenerator x_train, y_train = self.mnist[0] labels_test = np.argmax(self.mnist[1][1], axis=1) classifier = KerasClassifier((0, 1), self.model_mnist, use_logits=False, custom_activation=custom_activation) acc = np.sum( np.argmax(classifier.predict(self.mnist[1][0]), axis=1) == labels_test) / NB_TEST logger.info('Accuracy: %.2f%%', (acc * 100)) keras_gen = ImageDataGenerator(width_shift_range=0.075, height_shift_range=0.075, rotation_range=12, shear_range=0.075, zoom_range=0.05, fill_mode='constant', cval=0) keras_gen.fit(x_train) data_gen = KerasDataGenerator(generator=keras_gen.flow( x_train, y_train, batch_size=BATCH_SIZE), size=NB_TRAIN, batch_size=BATCH_SIZE) classifier.fit_generator(generator=data_gen, nb_epochs=2) acc2 = np.sum( np.argmax(classifier.predict(self.mnist[1][0]), axis=1) == labels_test) / NB_TEST logger.info('Accuracy: %.2f%%', (acc2 * 100)) self.assertTrue(acc2 >= .8 * acc)
def _test_fit_generator(self, custom_activation=False): from art.classifiers.keras import generator_fit from art.data_generators import KerasDataGenerator labels = np.argmax(self.mnist[1][1], axis=1) classifier = KerasClassifier((0, 1), self.model_mnist, use_logits=False, custom_activation=custom_activation) acc = np.sum( np.argmax(classifier.predict(self.mnist[1][0]), axis=1) == labels) / NB_TEST logger.info('Accuracy: %.2f%%', (acc * 100)) gen = generator_fit(self.mnist[0][0], self.mnist[0][1], batch_size=BATCH_SIZE) data_gen = KerasDataGenerator(generator=gen, size=NB_TRAIN, batch_size=BATCH_SIZE) classifier.fit_generator(generator=data_gen, nb_epochs=2) acc2 = np.sum( np.argmax(classifier.predict(self.mnist[1][0]), axis=1) == labels) / NB_TEST logger.info('Accuracy: %.2f%%', (acc2 * 100)) self.assertTrue(acc2 >= .8 * acc)