{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "import keras\n", "from keras.models import Sequential, Model, load_model\n", "\n", "import os\n", "import pickle\n", "import numpy as np\n", "import pandas as pd\n", "\n", "import scipy.sparse as sp\n", "import scipy.io as spio\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from scrambler.models import *\n", "\n", "from mnist_utils import load_mnist_data, load_mnist_predictor, animate_mnist_examples\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "n train samples = 11552\n", "n test samples = 1888\n", "x_train.shape = (11552, 28, 28, 2)\n" ] } ], "source": [ "#Load MNIST data\n", "\n", "x_train, y_train, x_test, y_test = load_mnist_data()\n", "\n", "#Load MNIST predictor\n", "\n", "predictor_path = 'saved_models/mnist_binarized_cnn_10_digits.h5'\n", "predictor = load_mnist_predictor(predictor_path)\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "#Calculate background\n", "\n", "pseudo_count = 1.0\n", "\n", "x_mean = (np.sum(x_train, axis=0) + pseudo_count) / (x_train.shape[0] + 2. * pseudo_count)\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Visualize background image distribution\n", "\n", "f = plt.figure(figsize=(4, 4))\n", "\n", "plot_ix = 0\n", "\n", "plt.imshow(x_mean[..., 1], cmap=\"Greys\", vmin=0.0, vmax=1.0, aspect='equal')\n", "\n", "plt.xticks([], [])\n", "plt.yticks([], [])\n", "\n", "plt.tight_layout()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean KL Div against background (bits) = 0.36095130083827087\n" ] } ], "source": [ "#Calculate mean training set kl-divergence against background\n", "\n", "x_train_clipped = np.clip(np.copy(x_train), 1e-8, 1. - 1e-8)\n", "\n", "kl_divs = np.sum(x_train_clipped * np.log(x_train_clipped / np.tile(np.expand_dims(x_mean, axis=0), (x_train_clipped.shape[0], 1, 1, 1))), axis=-1) / np.log(2.0)\n", "\n", "x_mean_kl_divs = np.mean(kl_divs, axis=(1, 2))\n", "x_mean_kl_div = np.mean(x_mean_kl_divs)\n", "\n", "print(\"Mean KL Div against background (bits) = \" + str(x_mean_kl_div))\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#Define image template\n", "\n", "onehot_template = np.zeros(x_mean.shape)\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "#Build scrambler\n", "\n", "#Scrambler network configuration\n", "network_config = {\n", " 'n_groups' : 5,\n", " 'n_resblocks_per_group' : 4,\n", " 'n_channels' : 32,\n", " 'window_size' : 3,\n", " 'dilation_rates' : [1, 2, 4, 2, 1],\n", " 'drop_rate' : 0.0,\n", " 'norm_mode' : 'instance',\n", " 'mask_smoothing' : False,\n", " 'mask_smoothing_window_size' : 7,\n", " 'mask_smoothing_std' : 1.5,\n", " 'mask_drop_scales' : [1, 5],\n", " 'mask_min_drop_rate' : 0.0,\n", " 'mask_max_drop_rate' : 0.5,\n", " 'label_input' : False\n", "}\n", "\n", "#Initialize scrambler\n", "scrambler = Scrambler(\n", " scrambler_mode='inclusion',\n", " n_classes=10,\n", " input_size_x=28,\n", " input_size_y=28,\n", " n_out_channels=2,\n", " input_templates=[onehot_template],\n", " input_backgrounds=[x_mean],\n", " batch_size=32,\n", " n_samples=32,\n", " sample_mode='st',\n", " zeropad_input=False,\n", " mask_dropout=False,\n", " network_config=network_config\n", ")\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 11552 samples, validate on 1888 samples\n", "Epoch 1/10\n", "11552/11552 [==============================] - 143s 12ms/step - loss: 1.8809 - nll_loss: 1.4860 - entropy_loss: 0.3949 - val_loss: 0.7043 - val_nll_loss: 0.5477 - val_entropy_loss: 0.1567\n", "Epoch 2/10\n", "11552/11552 [==============================] - 108s 9ms/step - loss: 1.0446 - nll_loss: 0.9215 - entropy_loss: 0.1231 - val_loss: 0.6175 - val_nll_loss: 0.4856 - val_entropy_loss: 0.1319\n", "Epoch 3/10\n", "11552/11552 [==============================] - 108s 9ms/step - loss: 0.9525 - nll_loss: 0.8293 - entropy_loss: 0.1232 - val_loss: 0.5618 - val_nll_loss: 0.4362 - val_entropy_loss: 0.1256\n", "Epoch 4/10\n", "11552/11552 [==============================] - 108s 9ms/step - loss: 0.9013 - nll_loss: 0.7788 - entropy_loss: 0.1225 - val_loss: 0.5944 - val_nll_loss: 0.5258 - val_entropy_loss: 0.0686\n", "Epoch 5/10\n", "11552/11552 [==============================] - 108s 9ms/step - loss: 0.8915 - nll_loss: 0.7723 - entropy_loss: 0.1192 - val_loss: 0.5517 - val_nll_loss: 0.4659 - val_entropy_loss: 0.0858\n", "Epoch 6/10\n", "11552/11552 [==============================] - 106s 9ms/step - loss: 0.8749 - nll_loss: 0.7592 - entropy_loss: 0.1157 - val_loss: 0.5414 - val_nll_loss: 0.4518 - val_entropy_loss: 0.0896\n", "Epoch 7/10\n", "11552/11552 [==============================] - 106s 9ms/step - loss: 0.8577 - nll_loss: 0.7436 - entropy_loss: 0.1141 - val_loss: 0.4959 - val_nll_loss: 0.3410 - val_entropy_loss: 0.1550\n", "Epoch 8/10\n", "11552/11552 [==============================] - 106s 9ms/step - loss: 0.8328 - nll_loss: 0.7212 - entropy_loss: 0.1116 - val_loss: 0.4752 - val_nll_loss: 0.2978 - val_entropy_loss: 0.1774\n", "Epoch 9/10\n", "11552/11552 [==============================] - 106s 9ms/step - loss: 0.7957 - nll_loss: 0.6845 - entropy_loss: 0.1112 - val_loss: 0.4885 - val_nll_loss: 0.4078 - val_entropy_loss: 0.0807\n", "Epoch 10/10\n", "11552/11552 [==============================] - 106s 9ms/step - loss: 0.7919 - nll_loss: 0.6830 - entropy_loss: 0.1089 - val_loss: 0.4540 - val_nll_loss: 0.3441 - val_entropy_loss: 0.1099\n" ] } ], "source": [ "#Train scrambler\n", "\n", "n_epochs = 10\n", "\n", "train_history = scrambler.train(\n", " predictor,\n", " x_train,\n", " y_train,\n", " x_test,\n", " y_test,\n", " n_epochs,\n", " monitor_test_indices=np.arange(32).tolist(),\n", " monitor_batch_freq_dict={0 : 1, 100 : 5, 361 : 10},\n", " nll_mode='reconstruction',\n", " predictor_task='classification',\n", " entropy_mode='target',\n", " entropy_bits=0.005,\n", " entropy_weight=1200.\n", ")\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saved scrambler model at saved_models/mnist_inclusion_scrambler_target_bits_0005_epochs_10.h5 \n" ] } ], "source": [ "#Save scrambler checkpoint\n", "save_dir = 'saved_models'\n", "\n", "model_name = 'mnist_inclusion_scrambler_target_bits_0005_epochs_10'\n", "\n", "if not os.path.isdir(save_dir):\n", " os.makedirs(save_dir)\n", "\n", "model_path = os.path.join(save_dir, model_name + '.h5')\n", "\n", "scrambler.save_model(model_path)\n", "\n", "pickle.dump({'train_history' : train_history}, open(save_dir + '/' + model_name + '_train_history.pickle', 'wb'))\n" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded scrambler model from saved_models/mnist_inclusion_scrambler_target_bits_0005_epochs_10.h5 \n" ] } ], "source": [ "#Load models\n", "save_dir = 'saved_models'\n", "\n", "model_name = 'mnist_inclusion_scrambler_target_bits_0005_epochs_10'\n", "\n", "if not os.path.isdir(save_dir):\n", " os.makedirs(save_dir)\n", "\n", "model_path = os.path.join(save_dir, model_name + '.h5')\n", "\n", "scrambler.load_model(model_path)\n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Plot training statistics\n", "\n", "f, (ax1, ax2) = plt.subplots(1, 2, figsize=(2 * 4, 3))\n", "\n", "n_epochs_actual = len(train_history['nll_loss'])\n", "\n", "ax1.plot(np.arange(1, n_epochs_actual + 1), train_history['nll_loss'], linewidth=3, color='green')\n", "ax1.plot(np.arange(1, n_epochs_actual + 1), train_history['val_nll_loss'], linewidth=3, color='orange')\n", "\n", "plt.sca(ax1)\n", "plt.xlabel(\"Epochs\", fontsize=14)\n", "plt.ylabel(\"NLL\", fontsize=14)\n", "plt.xlim(1, n_epochs_actual)\n", "plt.xticks([1, n_epochs_actual], [1, n_epochs_actual], fontsize=12)\n", "plt.yticks(fontsize=12)\n", "\n", "ax2.plot(np.arange(1, n_epochs_actual + 1), train_history['entropy_loss'], linewidth=3, color='green')\n", "ax2.plot(np.arange(1, n_epochs_actual + 1), train_history['val_entropy_loss'], linewidth=3, color='orange')\n", "\n", "plt.sca(ax2)\n", "plt.xlabel(\"Epochs\", fontsize=14)\n", "plt.ylabel(\"Entropy Loss\", fontsize=14)\n", "plt.xlim(1, n_epochs_actual)\n", "plt.xticks([1, n_epochs_actual], [1, n_epochs_actual], fontsize=12)\n", "plt.yticks(fontsize=12)\n", "\n", "plt.tight_layout()\n", "\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1888/1888 [==============================] - 4s 2ms/step\n" ] } ], "source": [ "#Interpret the test set using the trained scrambler\n", "\n", "image_test, sample_test, importance_scores_test = scrambler.interpret(x_test)\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test image 0:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 1:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 2:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 3:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 4:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 5:\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAacAAABrCAYAAADTsk3jAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAADyxJREFUeJzt3UtsXFcdx/Fj5+k4TlPn1SSkNalQSzdsggQsqlYFISHEorsWqSwoSwQsEQseoqoEW7pCQjwkygqUTVGhLaUVDagRVRWBoAWSNDF1EsdJmoedhzMs6Nz7ndM54zueueMz9vcjRfl7ZjxzZ+7Y1/O7/3POSKPRCJIk5WR0pTdAkqSYBydJUnY8OEmSsuPBSZKUHQ9OkqTseHCSJGXHg5MkKTsenCRJ2fHgJEnKzvpubrxz587G1NRUTZuydp04cSLMzs6O9OO+3Ef16Oc+GhkZafhXYT1uhzDbaDR29eO+Nm7Y0BjbvLkfdyWYX1gIN27eXPJnqauD09TUVDh69Ojyt0ptHTp0qG/35T6qRz/30WgIwV959bgWwsl+3dfY5s3hU33c7/q/1yr+fvIPOGkFrHv/n/I2GvwluVJ83SVJ2fHgJEnKTlfnnCT1bn0IYfL9eg6XL67AtihtXQhh4v36Mi6/vQLbshb5yUmSlB0PTpKk7BjrqW9Sqyr3c7XlkZHuhhp1e/tBaAQjvGFhhLdy/OQkScqOBydJUnaM9ZTEOI717dtl2LG4WAZUt27dalvfvHmz7eW8nxBaI7h168ohqhs2bCjq9evXt61HR0eXrOOIj18PMv5bDCFcGtij5YODjvlX8UTiNiFU62bkbBvXlrFdKYshhKt9vL9hwX3Dn4otiduEUK2bcWOb+6y6HZIkZcGDkyQpOx6cJEnZyfqcUy/nAfrZvryaxa9T6twSzxXduHGjqK9eLVP5S5fKMykXLlwo6vPnzxf13Fx5FoH3E0Lr/h4fHy/qHTt2FPX27duL+o477ijqrVu3FvWWLWU6vnHjxqLmOaoQWs9rdTo3Vae11FK+mKh5vmI8tOL5JL5bbobBGkRL+R9efnnZ3/vwQw/1bTtSz5Xn8+JZ9Tei5r7p5f3tJydJUnY8OEmSspNFrFdHjNLpPo38SvFrkYryFhYWivry5TKIYWQ3MzNT1NPT00V97ty5omb0Nz8/3/LYbEtnHMcob8+ePUV99913t738zjvvbPu9jPFC+GAre9MgIr61FOcthRHRnug6ttyn2pU3hPrUEef1Et8t5z77FfkxupuMrruS+B7+dmn+9NlKLkkaWh6cJEnZySLW60Uqostxws9cpGZ+CCE9+wNnebh+/XrbmrehTZs2FfW2bduKmtFdCK3de9wO3i+3qcp2sOZ2hNAa36l/UjFbKiLjuyae4WEX6oUK9WqXiuiWExXGs3E0pU56MIqOX/PtqG+E9pqXVz2p4k+nJCk7HpwkSdnJOtazq65+VeNPdroxjuNg2cnJyba34eBXPh67+EJoHdB77VoZ8PB9wMG2fGx25fGxO0V3Kxn9Nl/NVNceB6PGt6kjxmLHHOOe5Ux8yviOrz4nDmV8x1gvfm6cFLbOrryU5vanIkm+bvFtUvFWSpWuOgbhvX6y4G9X/iQw/L6O+hbq+Llx3/broOInJ0lSdjw4SZKyk0WsZ3w3WJ3WMWIkxprz1TG+6xb39auvvtpyHWO9K1fKYX3s4puYmGhbc82n1Nx6nWK8QUZ860IZV6Uirc+jfib6/rH7yvr3/yxrhqSPv4Ev+Cco87RPHMcXh4vqnZGvF/VHQ/dSc+hVmQ/vYvT1icR9UarrrFejIYSxNo/NSOuTqL8Wff+mA2V99FRZX0R89+kf4xv4FmSe9sCz+OJPRXXm4R8V9T2he6mocj5xOcWDbmdQp+632/3kJydJUnY8OEmSspNFrNcvDrytTy+vLefoO3LkSFHHg3YZ33GwLeO73bt3F/WuXeUQTXbrbd5c9lCllnIPIR1vDuJ9NBr9H9fsAhtrHTvccuVn2CZ1dTe+OIP6KOqdZfndDxflT75TXvzVD2zt4MTRH6PKjWGwRkL7bj2+O9hBuCluJ8QGH+IO/S2HrP4GNTLaUC4HE372WFE+99Py4kdrmKOvqjhiZRzbr65KPzlJkrLjwUmSlJ2hj/WqRjB2BNaP3XYvvfRSUXOJDUZ3cazH+I8dd1wCgxEfB+QyyksNws2lW68RyviKHXqMjhiT/JqdWyGER8/ji2+ifuVsWT/4RFn/8hdF+eQXy4vZA5arKh1+dS0/0gjlwNMb0eVNHKT8SrSxD76HLx5H/Sb27seeLusXfleUP3yqvLj8Sao+h14/V8atoso+6HY/+clJkpQdD06SpOwMZaxnV97KYkTKFW8Z5Z06VY465IBaduHF+5HRHLvvWPOxq3TbDboLrwrGehyYyFjvTdRM8UII4djpsv7293DFA2X5zptllPcF3OTtLrYzN6nXqq4uvkYooyg+NueY+xdqrtobQgjH0Wr4pZ/jCoyYPfPvMsr7Fm4yjbqOlXPrlHqtml18roQrSRpaHpwkSdnJOtbrZwzD+7JzL42vDVej5Uqzc3NzRf3WW28VNZfAmJ2dLWp261G8Mi1xyYwLFy60fWwumcFIkMt75NKhR4z1+Nchu5k4+JRNXyG0Rn7PokNsDlewu6xKx9sw63ZpiqrYrcd3CiNFRnnxKr7/Rv0i8q3LuIL75oU+xneMAgfduZfSfK6uhCtJGloenCRJ2ck61qtLKs4x7kvja8Y4jgNe2VW3sFAOL+VgWd4P572L74s1B/e+++67RT02NlbU3CbGehyEy8tzkYrcODi3U2zFwJSxIKdyWy2x3ko+j9QA0qrxKSO/QXQaUqrbr66479bSN6nET06SpOx4cJIkZceDkyQpO0N/zqnqeaIqbcO2m7dKnR9i2/bevXuLmkulHzx4sKg5oSuxVT2E1klhOasEW9F5+fnz5dwJ27ZtK2pOGps6/xTCys4Y0c0kmJujr/mqcWUgPju2omv5UkuOtxOfP+JvkK2ouZ/iZemXUvU8UZVZJXJsNyc/OUmSsuPBSZKUnaxjvX5Ga6kJQ1PWSsQXP7c4amtiJMZYb//+/UU9NTVV1IzoGMtxpol4PSdex9kmTp8uZzp9771yvgRGfPPz820fmy3m8XPt9j2xUuKZB4ix0D7UB1AzQvws6iOoj6FmG3uMzfh1raM0rK53uO4K6p2od6N+AtHax3H531AfR91piMEjuK8XhzTi85OTJCk7HpwkSdnJOtary7DEOXVJTe4aQut6S4zyWLNzL9UNx9kbWHfCbbn33nuL+vDhw21vzy5A1owLeZ85xbPNVy0VjXWKzBit7UH9EdRY2qklsmNc9DTWFWI+OI3ZTOMpe/+ImutMPRXqMY56MVHXqfmOTnXtderm41/+k6g/hJq74D+o70P9Fe5k5IPnsEb8fGjFyYEfQ0z3ZE1rQ7GjlK9JL/vJT06SpOx4cJIkZWdNxnpUJeJbbZ17nWK9VFTGAbapCVRTMWDqdY0f+9KlMk9ihx5jOm57ajtW2/6KMSphFMSuvv+iZkffD1A/f7KsGcswajoTPfZzqOdC/VIdaXznbEjcZqVxG7k/2A05i5odfb9C/Tp2Agf6Mu27EFr9BTXXA2MnXmqg7nI691KT3vKnr9uDjZ+cJEnZ8eAkScrOmo/1aDV38fG5sWZ3XgitA1i5jhKjNa61xPiOlzNy4+MxKuQg2hBaB96ePFlmTlymnfuFj8cOwm7jxWHGOOUUas6tlxpUeyxx+Uoaj76u0qGXa6xH3HbuGy7znoowjycu71WViC+l03yPqf3U/I1Q9afQT06SpOx4cJIkZcdYD1Zj7NMtxnzXrpX9Xxcvlj1fnAOP8R0H2zJyIy7fzvsMobVD7+zZs20fb3KyHM44MTFR1OPjZSDE7WCXYY5LZqTmqut1DrtO8+PlgFEcl/24L7rdNtR/Rs1OwTqfazOuGm1zWafLq+o0P17dqkR5fB9y2Y8D0e0Yx/4dNQdxN59r1f5ZPzlJkrLjwUmSlJ01GesZ35Xi1yI1sJWde9PT00XN5TBSA2Q52JZLW/B7Q/hg917Tjh07inrPnnLoYSri46q4lNN+b/8qV7vtaliq4vuon0cdP7fXUbMzsZvXrxfd/PUe33Y5MV8duu3Eoy+j5r6In9s/UHPd614+/fjJSZKUHQ9OkqTsrKpYr67YZjXMz8bXhjUHr4bQusrt7t3lOp1cUZaXv/HGG0V97Fg5rJPz5HFgLyO+uHuOHXeM77h8xsGDB4v6rrvuartNlFOU104qouMrsyu6jvFWPBiyaQI1B32yy23Q8eA3UDMGOoj6teh7GPyyw49LUEyh5pIe/ZSK6Pju2h5dx3irfe9qCFtQs3eVzzv12L3EdZ08g8G57+Dyvai5Om8IrUt2MHLl+7D508p4sBM/OUmSsuPBSZKUnaGJ9QYRz6yG+K6KTq8lozZGedu3l6EFo8B9+/YV9czMTNvHSA3aZbddCCHs37+/qBnf8TF27SpDLg6wHSYjofyrsEq0di76mrEJBz/y1WD0x0Gqg4jyGOVwOxi5zaBmbMXVdePr+Pz4nN7uauuqGwnV54ELoTWWC6F1PzF+5S9dRn8ckPtiTZEdfQ7xHd8XXEWXMTD3BZfhCKF1YC2fN5/T6TaXdeInJ0lSdjw4SZKy48FJkpSdoTnn1Ku1cj6pik7nnHg+iZPA8vwOW77vv//+oj5woJwOkpPGptrHOUFrCK2zPGzZUjbZptaJYp1qlc9RIyw9e0Bq2ev4uhM9b03/XU5c/tea7rcujbD0JKWdzuHxuni5+7pVWV59PnF5r+fwUvfbVHXmDD85SZKy48FJkpSdoYn1jOXqEUdgVWaSYIv51q3lKi+pfZS6vOpjp2K63OO7XKQmSU21nq/kxLKdJnRdDRPedsJPCo8glku1nq/kxLKdPtX0a7v85CRJyo4HJ0lSdoYm1tPgGafVY10oZ1FgB1pdsVVq+fcqS8HHc3Ckvof17cTlyzGaqDt1M/bLaAih2U/KDrS64rTU8u+sRxKXx7/IU8vHc380ErdZDm5XlfdVFX5ykiRlx4OTJCk7xnrSgC2GpQeU9hqNpLre+NfoQuI2FD92altSE7Ty8bhNXMeIr0W8JhLFE6vW7XZYekBpKj6rKvXpgDFZlYlSq+4nRnn85Z+KfjehvoZ6a0i70uG6bvjJSZKUHQ9OkqTsjHQzuHVkZORcCOFkfZuzZt3TaDTi1biXxX1UG/fRcHA/5a/SPurq4CRJ0iAY60mSsuPBSZKUHQ9OkqTseHCSJGXHg5MkKTsenCRJ2fHgJEnKjgcnSVJ2PDhJkrLzP8JCZLD9KocmAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 6:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 7:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 8:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Test image 9:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Visualize a few reconstructed images\n", "\n", "plot_examples = np.arange(10).tolist()\n", "save_examples = []\n", "\n", "for test_ix in plot_examples :\n", " \n", " print(\"Test image \" + str(test_ix) + \":\")\n", " \n", " save_figs = False\n", " if save_examples is not None and test_ix in save_examples :\n", " save_figs = True\n", " \n", " f, (ax1, ax2, ax3, ax4) = plt.subplots(1, 4, figsize=(1.5 * 4, 1.5))\n", "\n", " ax1.imshow(x_test[test_ix, :, :, 1], cmap=\"Greys\", vmin=0.0, vmax=1.0, aspect='equal')\n", "\n", " plt.sca(ax1)\n", " plt.xticks([], [])\n", " plt.yticks([], [])\n", " \n", " ax2.imshow(image_test[test_ix, :, :, 1], cmap=\"Greys\", vmin=0.0, vmax=1.0, aspect='equal')\n", "\n", " plt.sca(ax2)\n", " plt.xticks([], [])\n", " plt.yticks([], [])\n", " \n", " ax3.imshow(importance_scores_test[test_ix, :, :, 0], cmap=\"hot\", vmin=0.0, vmax=np.max(importance_scores_test[test_ix, :, :, 0]), aspect='equal')\n", "\n", " plt.sca(ax3)\n", " plt.xticks([], [])\n", " plt.yticks([], [])\n", " \n", " ax4.imshow(x_test[test_ix, :, :, 1], cmap=\"Greys\", vmin=0.0, vmax=1.0, aspect='equal')\n", "\n", " plt.sca(ax4)\n", " plt.xticks([], [])\n", " plt.yticks([], [])\n", " \n", " ax4.imshow(importance_scores_test[test_ix, :, :, 0], alpha=0.75, cmap=\"hot\", vmin=0.0, vmax=np.max(importance_scores_test[test_ix, :, :, 0]), aspect='equal')\n", "\n", " plt.sca(ax4)\n", " plt.xticks([], [])\n", " plt.yticks([], [])\n", "\n", " plt.tight_layout()\n", " \n", " if save_figs :\n", " plt.savefig(model_name + \"_test_ix_\" + str(test_ix) + \".png\", transparent=True, dpi=300)\n", " plt.savefig(model_name + \"_test_ix_\" + str(test_ix) + \".eps\")\n", " \n", " plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Environment (conda_tensorflow_p36)", "language": "python", "name": "conda_tensorflow_p36" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }