clip_max=clip_max) images_adv, = batch_eval(model._sess, [model.nodes.input], [n_fgsm], [adv_image_lists[0]], args={'batch_size': batch_size}, feed={model._is_training: False}) adv_image_lists.append(images_adv) def generate_visualization(i0): def get_row(i): ims = adv_image_lists[i][i0:i0 + image_count] s, m = Cifar10Loader.std, Cifar10Loader.mean scale = lambda x: np.clip(x * s + m, 0, 255).astype(np.ubyte) return list(map(scale, ims)) cols = [get_row(i) for i in range(i0, i0 + len(epss))] return visualization.compose(cols, format=None) images = [im for i in range(i0, i0 + 3) for im in get_row(i)] comp_format = "".join([ str(i) + "," if i % image_count == image_count - 1 else ";" for i in range(len(images)) ])[:-1] return visualization.compose(images, format=comp_format) scaled_eps = eps * np.max(Cifar10Loader.std) viewer = Viewer("Adversarial examples, scaled eps=" + str(scaled_eps) + ", eps=" + str(eps)) viewer.display(np.arange(batch_size), generate_visualization)
eps=eps, clip_min=-clip_max, clip_max=clip_max) images_adv, = batch_eval( model._sess, [model.nodes.input], [n_fgsm], [ds_test.images[:model.batch_size]], args={'batch_size': model.batch_size}, feed={model._is_training: False}) adv_ds_test = Dataset(images_adv, ds_test.labels, ds_test.class_count) model.test(ds_test) model.test(adv_ds_test) def generate_visualization(j): def get_row(i): x, xa = ds_test.images[i], adv_ds_test.images[i] s, m = Cifar10Loader.std, Cifar10Loader.mean scale = lambda x: np.clip(x * s + m, 0, 255).astype(np.ubyte) x, xa = list(map(scale, [x, xa])) return [x, xa, xa - x + 128] images = [im for i in range(j, j + 3) for im in get_row(i)] return visualization.compose(images, format='0,1,2;3,4,5;6,7,8') scaled_eps = eps * np.max(Cifar10Loader.std) viewer = Viewer("Adversarial examples, scaled eps=" + str(scaled_eps) + ", eps=" + str(eps)) viewer.display(np.arange(adv_ds_test.size), generate_visualization)