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)