Skip to content

Instantly share code, notes, and snippets.

@astrung
Last active August 20, 2018 10:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save astrung/76cdb95589b181bd007d86a2b7a24c8a to your computer and use it in GitHub Desktop.
Save astrung/76cdb95589b181bd007d86a2b7a24c8a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "cGAN.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"metadata": {
"id": "vNL7yL8-rICp",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"import tensorflow as tf\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.gridspec as gridspec\n",
"import os"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "2Hcun40mugsC",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 411
},
"outputId": "129315c8-4eb6-4c3c-f513-deae5385e2a5"
},
"cell_type": "code",
"source": [
"mnist = input_data.read_data_sets('../../MNIST_data', one_hot=True)\n",
"mb_size = 64\n",
"Z_dim = 100\n",
"X_dim = mnist.train.images.shape[1]\n",
"y_dim = mnist.train.labels.shape[1]\n",
"h_dim = 128"
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": [
"WARNING:tensorflow:From <ipython-input-2-ee5426f970f7>:1: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please write your own downloading logic.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use tf.data to implement this functionality.\n",
"Extracting ../../MNIST_data/train-images-idx3-ubyte.gz\n",
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use tf.data to implement this functionality.\n",
"Extracting ../../MNIST_data/train-labels-idx1-ubyte.gz\n",
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:110: dense_to_one_hot (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use tf.one_hot on tensors.\n",
"Extracting ../../MNIST_data/t10k-images-idx3-ubyte.gz\n",
"Extracting ../../MNIST_data/t10k-labels-idx1-ubyte.gz\n",
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "nV191TbHumhi",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"def xavier_init(size):\n",
" in_dim = size[0]\n",
" xavier_stddev = 1. / tf.sqrt(in_dim / 2.)\n",
" return tf.random_normal(shape=size, stddev=xavier_stddev)\n",
"\n",
"\n",
"\"\"\" Discriminator Net model \"\"\"\n",
"X = tf.placeholder(tf.float32, shape=[None, 784])\n",
"y = tf.placeholder(tf.float32, shape=[None, y_dim])\n",
"\n",
"D_W1 = tf.Variable(xavier_init([X_dim + y_dim, h_dim]))\n",
"D_b1 = tf.Variable(tf.zeros(shape=[h_dim]))\n",
"\n",
"D_W2 = tf.Variable(xavier_init([h_dim, 1]))\n",
"D_b2 = tf.Variable(tf.zeros(shape=[1]))\n",
"\n",
"theta_D = [D_W1, D_W2, D_b1, D_b2]\n",
"\n",
"\n",
"def discriminator(x, y):\n",
" inputs = tf.concat(axis=1, values=[x, y])\n",
" D_h1 = tf.nn.relu(tf.matmul(inputs, D_W1) + D_b1)\n",
" D_logit = tf.matmul(D_h1, D_W2) + D_b2\n",
" D_prob = tf.nn.sigmoid(D_logit)\n",
"\n",
" return D_prob, D_logit\n",
"\n",
"\n",
"\"\"\" Generator Net model \"\"\"\n",
"Z = tf.placeholder(tf.float32, shape=[None, Z_dim])\n",
"\n",
"G_W1 = tf.Variable(xavier_init([Z_dim + y_dim, h_dim]))\n",
"G_b1 = tf.Variable(tf.zeros(shape=[h_dim]))\n",
"\n",
"G_W2 = tf.Variable(xavier_init([h_dim, X_dim]))\n",
"G_b2 = tf.Variable(tf.zeros(shape=[X_dim]))\n",
"\n",
"theta_G = [G_W1, G_W2, G_b1, G_b2]\n",
"\n",
"\n",
"def generator(z, y):\n",
" inputs = tf.concat(axis=1, values=[z, y])\n",
" G_h1 = tf.nn.relu(tf.matmul(inputs, G_W1) + G_b1)\n",
" G_log_prob = tf.matmul(G_h1, G_W2) + G_b2\n",
" G_prob = tf.nn.sigmoid(G_log_prob)\n",
"\n",
" return G_prob\n",
"\n",
"\n",
"def sample_Z(m, n):\n",
" return np.random.uniform(-1., 1., size=[m, n])\n",
"\n",
"\n",
"def plot(samples):\n",
" fig = plt.figure(figsize=(4, 4))\n",
" gs = gridspec.GridSpec(4, 4)\n",
" gs.update(wspace=0.05, hspace=0.05)\n",
"\n",
" for i, sample in enumerate(samples):\n",
" ax = plt.subplot(gs[i])\n",
" plt.axis('off')\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_aspect('equal')\n",
" plt.imshow(sample.reshape(28, 28), cmap='Greys_r')\n",
"\n",
" return fig"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "qrcqmRYYuu9S",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"G_sample = generator(Z, y)\n",
"D_real, D_logit_real = discriminator(X, y)\n",
"D_fake, D_logit_fake = discriminator(G_sample, y)\n",
"\n",
"D_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=D_logit_real, labels=tf.ones_like(D_logit_real)))\n",
"D_loss_fake = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=D_logit_fake, labels=tf.zeros_like(D_logit_fake)))\n",
"D_loss = D_loss_real + D_loss_fake\n",
"G_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=D_logit_fake, labels=tf.ones_like(D_logit_fake)))\n",
"\n",
"D_solver = tf.train.AdamOptimizer().minimize(D_loss, var_list=theta_D)\n",
"G_solver = tf.train.AdamOptimizer().minimize(G_loss, var_list=theta_G)\n",
"\n",
"\n",
"sess = tf.Session()\n",
"sess.run(tf.global_variables_initializer())\n",
"\n",
"if not os.path.exists('out/'):\n",
" os.makedirs('out/')\n",
"\n",
"i = 0\n",
"\n",
"for it in range(1000000):\n",
" if it % 1000 == 0:\n",
" n_sample = 16\n",
"\n",
" Z_sample = sample_Z(n_sample, Z_dim)\n",
" y_sample = np.zeros(shape=[n_sample, y_dim])\n",
" y_sample[:, 7] = 1\n",
"\n",
" samples = sess.run(G_sample, feed_dict={Z: Z_sample, y:y_sample})\n",
"\n",
" fig = plot(samples)\n",
" plt.savefig('out/{}.png'.format(str(i).zfill(3)), bbox_inches='tight')\n",
" i += 1\n",
" plt.close(fig)\n",
"\n",
" X_mb, y_mb = mnist.train.next_batch(mb_size)\n",
"\n",
" Z_sample = sample_Z(mb_size, Z_dim)\n",
" _, D_loss_curr = sess.run([D_solver, D_loss], feed_dict={X: X_mb, Z: Z_sample, y:y_mb})\n",
" _, G_loss_curr = sess.run([G_solver, G_loss], feed_dict={Z: Z_sample, y:y_mb})\n",
"\n",
" if it % 1000 == 0:\n",
" print('Iter: {}'.format(it))\n",
" print('D loss: {:.4}'. format(D_loss_curr))\n",
" print('G_loss: {:.4}'.format(G_loss_curr))\n",
" print()"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "B14BGYriu_Pw",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"!ls out"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "ouhWIwOdHuMo",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"outputId": "d7d139cf-a5d9-4fea-bb2c-41a5a3740cbe"
},
"cell_type": "code",
"source": [
"from IPython.display import Image\n",
"Image('./out/500.png')"
],
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/png": "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\nHvH/ZS4WJ6iRlSwAAAAASUVORK5CYII=\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"metadata": {
"id": "PtfZeeAPwwck",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"outputId": "e63ea2fa-c52f-48c2-f587-18a8f28cca96"
},
"cell_type": "code",
"source": [
"n_sample = 16\n",
"\n",
"Z_sample = sample_Z(n_sample, Z_dim)\n",
"y_sample = np.zeros(shape=[n_sample, y_dim])\n",
"y_sample[:, 3] = 1\n",
"\n",
"samples = sess.run(G_sample, feed_dict={Z: Z_sample, y:y_sample})\n",
"fig = plt.figure(figsize=(4, 4))\n",
"gs = gridspec.GridSpec(4, 4)\n",
"gs.update(wspace=0.05, hspace=0.05)\n",
"\n",
"for i, sample in enumerate(samples):\n",
" ax = plt.subplot(gs[i])\n",
" plt.axis('off')\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_aspect('equal')\n",
" plt.imshow(sample.reshape(28, 28), cmap='Greys_r')\n",
"\n",
"plt.show()"
],
"execution_count": 22,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztnXmglWWd+D8XNJcBZTAQURQrNHdK\ndBRNscxxwS3NBXNLJ80t9w1FzUrTRscll9wimDZtHJfCBXfUJhUyTU1NrRQNatQMYUzg98f9fd7n\n3vcu3HPOe8657+X7+QfuWZ/nPO/7fJ/v3rJ48eLFBEFQCvo1ewBBEPScuGGDoETEDRsEJSJu2CAo\nEXHDBkGJWKa7J1taWho1joaRN4r39Tn29fnB0jFHCQkbBCUibtggKBFxwwZBiYgbNghKRNywQVAi\n4oYNghIRN2wQlIhu/bBB96ywwgoATJs2DYBtt90WSD60I444AoDrrruuCaML+iIt3aXXVeOQHjRo\nEADvv/8+AMsttxwA//RP/wTALbfcAsB6662XPf63v/0NgEWLFgHpgh84cCAA48ePB2DGjBkAfPjh\nhxWPS4pwuo8cORKA2267DYCPf/zjAKy44ortXverX/0KgD322IO33nqr4u+plqICJ1ZeeWUADj/8\ncKB1HgBjxoxp99nvvfce3/nOdwAYPnw4AF/+8peBtKn97//+b7vPXm211QBYuHBhxeOqR+BE//79\ngXS9br755kCaz2mnncbTTz8NwE477QSk6/OAAw4A4Gc/+1nN45AInAiCPkBhEnbw4MEAPPjggwCs\nueaaAMycORNIx8V+/SrfI5S8r732GpAkWjUUsTsraX74wx8CsMwyrZrFsssuCySp8d3vfheASy+9\nlHfeeQeAiy66CIATTjgBgHnz5lX8/UuiKAn70EMPAbDpppsC6ZTU0+/u7vu32247IF0vlVDEGiod\nDzroIAAmTZoEwEc/+tF23+Fnd/YdPvbwww8D6RovgpCwQdAHKMzo9NnPfhaAddddt/WD/7/UWX/9\n9YHuJasSyV3F94o72SqrrNLu+Vp02VpQd/3qV78KJH19/vz5ABx66KEAfOITnwDglVde6bBDH3bY\nYUDSnXojzvPTn/50p8+3lQILFiwAyE4S6r/OW93Q6+Dmm28GYOjQoR0+q574e6tvfu5znwNgzpw5\n7cbhOD3dLViwIFtnpfNHPvIRAP7xj380Yuit42rYNwVBUDOF6bBa/Z599tl273377bcBWGuttdo9\nru521VVXMWLECCDpAKuvvnqn3/HBBx8AySqnxbkSitB/3H09Pbg7OyfH6U58//33s8kmm7T7DHfr\nnuiFlVKUDuvY9tlnHwAuv/xyAH75y18C8IUvfAFolT4rrbQSAEOGDAHgmmuuAWDu3LkA7L333u0+\n21OVv5Gnk55QzRr6muOPPx6Aiy++uN1nPfnkk0C6fn/9618D8OijjwKwzjrrcNZZZwHwyU9+Ekg2\nC08Xnhbee++9Hs+lK0KHDYI+QGE67F//+lcgSVL9WFdccQWQJK3BBO5CM2bMyHTRr3zlK+3ek985\ne0uisnrNK6+80u5vd1r553/+ZyDtyG3Rgtyb8cQwdepUACZPngykE0Zb24Prr6566623AmlN8+h7\nz/9m9UKJpYdByenp7lOf+hSQvBpXX301kObT0tKSnajy5PXdehISNghKROGRTr5HS27eAuzz+m3f\nfvvtTOqee+65QLK+DRgwAEiWPXXDXXbZBYDp06dXPL4io2SWtLNq1X711VczXU08VTjXIq2kjSoR\n09YCbDTascceCyQ7hLYNI54cmxI4r9v2hFrW0GvJKDQjmf70pz8B8C//8i/tvkO9dcKECVlsgRFt\n2i423HBDIOnvv//974F0vVZD6LBB0AcoPPjf3U4Jkpesyy+/PJD8dB9++CETJ04EkkTKSyz/VqLl\nY3abxZKk4sYbbwzArFmzsp3bHV4rsZIn/3s10rdXKY75i1/8YvbvzjvvDHRcf9fO+fr4j370o8YN\nuA2e+LQ/OJ7PfOYzQBq/J4NTTz0VaD3tOZf/+7//A1I8/DrrrNPus/baay+gPnMMCRsEJaJwCZuX\nqPnIEX131157LdC6W+d1kLwV0uf//ve/AymdLf8djWb//fcHUkyxKIE8OWy55ZaZZHUOxun6Wq2m\n6v69QcLmf18lhxZU42470yH1UT7//PNAssaeccYZQLGZLdVw3HHHATBu3DggrYMnwJ///OftHm9p\nacmuS+0Of/zjH4EkWdVZzz///LqNOyRsEJSIwiSsEuTII48E4L777gPgL3/5C5Diam+88UYg7cDd\n4Y7mDv/cc8+1+7vZnTK32morICWo67OTzuKE1b/1U2tR1GrerPjotjhu48Kd56WXXgpUFp3lZxjx\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f54b9171198>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "aQbk4PQExVth",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"outputId": "cd5827ba-74f0-4a9b-a5db-a13e5f255155"
},
"cell_type": "code",
"source": [
"n_sample = 16\n",
"\n",
"Z_sample = sample_Z(n_sample, Z_dim)\n",
"y_sample = np.zeros(shape=[n_sample, y_dim])\n",
"y_sample[:, 4] = 1\n",
"\n",
"samples = sess.run(G_sample, feed_dict={Z: Z_sample, y:y_sample})\n",
"fig = plt.figure(figsize=(4, 4))\n",
"gs = gridspec.GridSpec(4, 4)\n",
"gs.update(wspace=0.05, hspace=0.05)\n",
"\n",
"for i, sample in enumerate(samples):\n",
" ax = plt.subplot(gs[i])\n",
" plt.axis('off')\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_aspect('equal')\n",
" plt.imshow(sample.reshape(28, 28), cmap='Greys_r')\n",
"\n",
"plt.show()"
],
"execution_count": 23,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f54b9146b38>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "BAhwwtJxxfY6",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"outputId": "97ab6de9-006f-433b-8272-73e2269b2994"
},
"cell_type": "code",
"source": [
"n_sample = 16\n",
"\n",
"Z_sample = sample_Z(n_sample, Z_dim)\n",
"y_sample = np.zeros(shape=[n_sample, y_dim])\n",
"y_sample[:, 6] = 1\n",
"\n",
"samples = sess.run(G_sample, feed_dict={Z: Z_sample, y:y_sample})\n",
"fig = plt.figure(figsize=(4, 4))\n",
"gs = gridspec.GridSpec(4, 4)\n",
"gs.update(wspace=0.05, hspace=0.05)\n",
"\n",
"for i, sample in enumerate(samples):\n",
" ax = plt.subplot(gs[i])\n",
" plt.axis('off')\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_aspect('equal')\n",
" plt.imshow(sample.reshape(28, 28), cmap='Greys_r')\n",
"\n",
"plt.show()"
],
"execution_count": 24,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nTwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f54b81f2320>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "javUIheSybMu",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"outputId": "eab4e6ca-bd43-48fa-b323-9886609eee7e"
},
"cell_type": "code",
"source": [
"n_sample = 16\n",
"\n",
"Z_sample = sample_Z(n_sample, Z_dim)\n",
"y_sample = np.zeros(shape=[n_sample, y_dim])\n",
"y_sample[:, 8] = 1\n",
"\n",
"samples = sess.run(G_sample, feed_dict={Z: Z_sample, y:y_sample})\n",
"fig = plt.figure(figsize=(4, 4))\n",
"gs = gridspec.GridSpec(4, 4)\n",
"gs.update(wspace=0.05, hspace=0.05)\n",
"\n",
"for i, sample in enumerate(samples):\n",
" ax = plt.subplot(gs[i])\n",
" plt.axis('off')\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_aspect('equal')\n",
" plt.imshow(sample.reshape(28, 28), cmap='Greys_r')\n",
"\n",
"plt.show()"
],
"execution_count": 25,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOwAAADnCAYAAAAdFLrXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztnXmcVWX5wL+gSFpKaAiBSwpu4a65\n4RKuYO6au1imlpYr6E/FVMRSEZUAScl93y1R3HcyXBCXSk0wTCVxTVLUWOb3x/18zztzZ0Bg7rlz\nz/B8/9EZ7r1z3vue8z7787Spq6urIwiCQtC2pS8gCIL5Jx7YICgQ8cAGQYGIBzYICkQ8sEFQIBaf\n1z+2adOmWtdRNcqd4q19ja19fbBorFFCwgZBgYgHNggKRDywQVAg4oENggIRD2wQFIh4YIOgQMQD\nGwQFYp5x2CBY1FlqqaUAaNu2LV999RUA3/rWtwD497//3eC1Sy+9NAAzZ87M7Xpa7IFt27Yk3Hv1\n6sU999xTupjFS5ez2GKLAWRf0McffwzAl19+CcD3v/99YO7B5Vpj+eWXz9bkZt52220AbL311gDM\nmTMHgPfffx+A8847D4ARI0ZU9VoXhiWWWIL99tsPgKOPPhqA9dZbD0h7OX36dAA++OADAM4880wA\n/vSnPwHpe6m1PZ01axYAQ4cO5fDDDwegffv2QLqHvfaddtoJgLFjxwJpTytJqMRBUCDazKuAPY+U\nr7322guAq666CiipEZ5QU6dOBaBLly4AvPnmm0A6qVZeeWUATjzxRACuuOIKYMFO5Wqktb3++usA\nrLLKKgBMnDiRH/zgB/P1dz3RXbOn+YKQd2qikuV3v/sdAL/4xS8ySTq3v+seu65bb70VgOuuuw6A\n5557DoD//Oc/X/v3q5mauPvuuwMwatSobA2qvq+99hoADz/8MACXXHIJAP/73/+ApCF+8cUXC/x3\nIzUxCFoBVbNhu3btCsANN9wAJMlRV1fHY489BsD+++8PpBNqjTXWAOCJJ54A4Jvf/CZQOu0A3n33\nXQDuu+++3K9/Xnz3u98F4I477gCgR48eQDr5N9lkk/n+LO146dy5MwDTpk1r9nU2l2WXXRaAf/zj\nHw1+btOmTSY533vvPQA+/PBDAL7zne8ASWJ07NgRgB/+8IdA8ktMmDAh78tfIPzeved+9KMfZU4m\n7XDXrMaxzDLLAGn/1RAXRsLOjZCwQVAgcpewSplDDjmkwc///e9/ATjrrLMye2b99dcH4JVXXgGg\nd+/eAIwfPx6A7bffHoB27doBcM011wCwww47APDSSy/luJLGKFnffvttoPGJ2xSfffYZkCSRp+86\n66zT5OuVQC2JUl+bTSmp1Pzss8/o1asXkLQe16m9pz2ndrT33nsDcMABBwDJln3qqadyXMnX41qN\nROjdfuWVV5g9e3aT73Hf9Xx7n26wwQYVv76QsEFQIKomYVdffXUA/vnPfwIwePBgAG666abspPY0\nnjhxIgDLLbdcg88o9wZ26NABWDhPanNQwrsWJapaw+233w7AWmutBZTisF6rtrwSZuTIkUCSVq5R\nifTpp5/muJL5Q++8NqvrVfqvssoqfPTRR0CSUK5XDUJtZKuttgJSfPaTTz4B4Pnnn893EV+Da/rG\nN74BwM9+9jMATj/9dIAmpWv37t0BuOiii4CSnQvJI+5e/+tf/6rcdVbsk4IgyJ3cJewKK6wAwLe/\n/W0gnUJKp7q6uuy03XDDDYEkac1w8nTWVjBeO2zYMKD6p/Pnn38OJEmrdDz44IOBlOliWlvnzp15\n5513gCRBt9lmGyB5Fv29cVi9k7VAeWaP61Wj+OSTT7Lr99923XVXIPkjjjvuOAA6deoEpO/urbfe\nyv365wevf9111wVSppY2bH28X/WtlGseetErKVklJGwQFIjcJazeYSWGnjM9q7NmzcrshvKTy9ij\nMTtje0on7aM8cjabYuDAgUCy05Qmekb//Oc/A0mrWG211QBYcskls5ica/z5z38OpJN9yJAhAFx8\n8cVA0zZTS2H8sfyamrpG7bYnn3wSSLFpveC+x1i7mUSVjFUuCH7/ffv2BWCzzTYDYMaMGUC69+6+\n++7s2nfZZRegsRbkezbaaKPcrjckbBAUiNwlrNUYxqi0ZZVGSyyxRBbf02NonM/X6FH1hNOGrBba\nW4ceeihAI3tNW9XcWnNLH3roIaCUwaUE0R70M3beeWcgZWvVYstO90X72jW4Tz179sw0KauPunXr\nBiRtQ9SG1DDmJ3c4T/QhHHXUUQBceeWVQKo6+v3vfw/ASiutlHnFjXC4V48//jgARx55JJCvthAS\nNggKRO7VOtZJXn/99UCKLx5//PFAqd5ziSWWAJJd4wl14IEHAsku8vRrDs2p9NB2dQ1+lrFSs3T0\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f55d72b44e0>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "sisLpraCyhHV",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"outputId": "fbaa5c85-422c-470d-89db-5482e635007f"
},
"cell_type": "code",
"source": [
"n_sample = 16\n",
"\n",
"Z_sample = sample_Z(n_sample, Z_dim)\n",
"y_sample = np.zeros(shape=[n_sample, y_dim])\n",
"y_sample[:, 2] = 1\n",
"\n",
"samples = sess.run(G_sample, feed_dict={Z: Z_sample, y:y_sample})\n",
"fig = plt.figure(figsize=(4, 4))\n",
"gs = gridspec.GridSpec(4, 4)\n",
"gs.update(wspace=0.05, hspace=0.05)\n",
"\n",
"for i, sample in enumerate(samples):\n",
" ax = plt.subplot(gs[i])\n",
" plt.axis('off')\n",
" ax.set_xticklabels([])\n",
" ax.set_yticklabels([])\n",
" ax.set_aspect('equal')\n",
" plt.imshow(sample.reshape(28, 28), cmap='Greys_r')\n",
"\n",
"plt.show()"
],
"execution_count": 26,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f54b7e12e48>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "BnSmGfUlyk51",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment