diff --git a/WIP/4 - Gated_PixelCNN/gated_pixelCNN.py b/WIP/4 - Gated_PixelCNN/gated_pixelCNN.py
new file mode 100644
index 0000000..5a381fb
--- /dev/null
+++ b/WIP/4 - Gated_PixelCNN/gated_pixelCNN.py
@@ -0,0 +1,8 @@
+import random as rn
+import time
+
+import matplotlib
+import matplotlib.pyplot as plt
+import numpy as np
+import tensorflow as tf
+from tensorflow import keras
\ No newline at end of file
diff --git a/WIP/4 - Gated_PixelCNN/gated_pixelcnn.ipynb b/WIP/4 - Gated_PixelCNN/gated_pixelcnn.ipynb
index 9fe85e6..8fedab5 100644
--- a/WIP/4 - Gated_PixelCNN/gated_pixelcnn.ipynb
+++ b/WIP/4 - Gated_PixelCNN/gated_pixelcnn.ipynb
@@ -1,604 +1,602 @@
{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "colab_type": "text",
- "id": "view-in-github"
- },
- "source": [
- ""
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "accelerator": "GPU",
"colab": {
- "base_uri": "https://localhost:8080/",
- "height": 402
+ "name": "gated_pixelcnn.ipynb",
+ "provenance": []
},
- "colab_type": "code",
- "id": "VMF0k8kyGjQ7",
- "outputId": "489e26d2-3f1f-4488-92b6-d0f2801e7a2d"
- },
- "outputs": [],
- "source": [
- "! pip3 install tensorflow-gpu==2.0.0-rc1"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "k1uZnxh4Xz9Z"
- },
- "outputs": [],
- "source": [
- "import random as rn\n",
- "import time\n",
- "\n",
- "import matplotlib\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import tensorflow as tf\n",
- "from tensorflow import keras"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'2.0.0'"
- ]
- },
- "execution_count": 2,
- "metadata": {},
- "output_type": "execute_result"
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "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.8"
}
- ],
- "source": [
- "tf.__version__"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "NN6vJl7eVnZ4"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Defining random seeds\n",
- "random_seed = 42\n",
- "tf.random.set_seed(random_seed)\n",
- "np.random.seed(random_seed)\n",
- "rn.seed(random_seed)"
- ]
},
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "8BnkhgCjVpJu"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Loading data\n",
- "(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()\n",
- "\n",
- "height = 28\n",
- "width = 28\n",
- "n_channel = 1\n",
- "\n",
- "x_train = x_train.astype('float32') / 255.\n",
- "x_test = x_test.astype('float32') / 255.\n",
- "\n",
- "x_train = x_train.reshape(x_train.shape[0], height, width, n_channel)\n",
- "x_test = x_test.reshape(x_test.shape[0], height, width, n_channel)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "3ne-qY7JVZaB"
- },
- "outputs": [],
- "source": [
- "def quantise(images, q_levels):\n",
- " \"\"\"Quantise image into q levels\"\"\"\n",
- " return (np.digitize(images, np.arange(q_levels) / q_levels) - 1).astype('float32')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "3QVhnMymVrzc"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Quantise the input data in q levels\n",
- "q_levels = 256\n",
- "x_train_quantised = quantise(x_train, q_levels)\n",
- "x_test_quantised = quantise(x_test, q_levels)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 89
+ "cells": [
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "k1uZnxh4Xz9Z",
+ "colab": {}
+ },
+ "source": [
+ "import random as rn\n",
+ "import time\n",
+ "\n",
+ "import matplotlib\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import tensorflow as tf\n",
+ "from tensorflow.keras.utils import Progbar\n",
+ "from tensorflow import keras\n",
+ "from tensorflow.keras import initializers\n",
+ "from tensorflow import nn"
+ ],
+ "execution_count": 0,
+ "outputs": []
},
- "colab_type": "code",
- "id": "ZObIXqzNGwmo",
- "outputId": "64cdf3d5-2f5e-4e48-9d6b-e8844e1efcb3"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Creating input stream using tf.data API\n",
- "batch_size = 128\n",
- "train_buf = 60000\n",
- "\n",
- "train_dataset = tf.data.Dataset.from_tensor_slices((x_train_quantised / (q_levels - 1),\n",
- " x_train_quantised.astype('int32')))\n",
- "train_dataset = train_dataset.shuffle(buffer_size=train_buf)\n",
- "train_dataset = train_dataset.batch(batch_size)\n",
- "\n",
- "test_dataset = tf.data.Dataset.from_tensor_slices((x_test_quantised / (q_levels - 1),\n",
- " x_test_quantised.astype('int32')))\n",
- "test_dataset = test_dataset.batch(batch_size)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "75VTDkK8VZLA"
- },
- "outputs": [],
- "source": [
- "class MaskedConv2D(tf.keras.layers.Layer):\n",
- " \"\"\"Convolutional layers with masks for autoregressive models\n",
- "\n",
- " Convolutional layers with simple implementation to have masks type A and B.\n",
- " \"\"\"\n",
- "\n",
- " def __init__(self,\n",
- " mask_type,\n",
- " filters,\n",
- " kernel_size,\n",
- " strides=1,\n",
- " padding='same',\n",
- " kernel_initializer='glorot_uniform',\n",
- " bias_initializer='zeros'):\n",
- " super(MaskedConv2D, self).__init__()\n",
- "\n",
- " assert mask_type in {'A', 'B', 'V'}\n",
- " self.mask_type = mask_type\n",
- "\n",
- " self.filters = filters\n",
- "\n",
- " if isinstance(kernel_size, int):\n",
- " kernel_size = (kernel_size, kernel_size)\n",
- " self.kernel_size = kernel_size\n",
- "\n",
- " self.strides = strides\n",
- " self.padding = padding.upper()\n",
- " self.kernel_initializer = keras.initializers.get(kernel_initializer)\n",
- " self.bias_initializer = keras.initializers.get(bias_initializer)\n",
- "\n",
- " def build(self, input_shape):\n",
- " kernel_h, kernel_w = self.kernel_size\n",
- "\n",
- " self.kernel = self.add_weight(\"kernel\",\n",
- " shape=(kernel_h,\n",
- " kernel_w,\n",
- " int(input_shape[-1]),\n",
- " self.filters),\n",
- " initializer=self.kernel_initializer,\n",
- " trainable=True)\n",
- "\n",
- " self.bias = self.add_weight(\"bias\",\n",
- " shape=(self.filters,),\n",
- " initializer=self.bias_initializer,\n",
- " trainable=True)\n",
- "\n",
- " mask = np.ones(self.kernel.shape, dtype=np.float32)\n",
- " if self.mask_type == 'V':\n",
- " mask[kernel_h // 2:, :, :, :] = 0.\n",
- " else:\n",
- " mask[kernel_h // 2, kernel_w // 2 + (self.mask_type == 'B'):, :, :] = 0.\n",
- " mask[kernel_h // 2 + 1:, :, :] = 0.\n",
- "\n",
- " self.mask = tf.constant(mask, dtype=tf.float32, name='mask')\n",
- "\n",
- " def call(self, input):\n",
- " masked_kernel = tf.math.multiply(self.mask, self.kernel)\n",
- " x = tf.nn.conv2d(input, masked_kernel, strides=[1, self.strides, self.strides, 1], padding=self.padding)\n",
- " x = tf.nn.bias_add(x, self.bias)\n",
- " return x\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "PTUN4s52Nu3w"
- },
- "outputs": [],
- "source": [
- "class GatedBlock(tf.keras.Model):\n",
- " \"\"\"\"\"\"\n",
- "\n",
- " def __init__(self, mask_type, filters, kernel_size):\n",
- " super(GatedBlock, self).__init__(name='')\n",
- "\n",
- " self.mask_type = mask_type\n",
- " self.vertical_conv = MaskedConv2D(mask_type='V', filters=2 * filters, kernel_size=kernel_size)\n",
- " self.horizontal_conv = MaskedConv2D(mask_type=mask_type, filters=2 * filters, kernel_size=(1, kernel_size))\n",
- " self.v_to_h_conv = keras.layers.Conv2D(filters=2 * filters, kernel_size=1)\n",
- "\n",
- " self.horizontal_output = keras.layers.Conv2D(filters=filters, kernel_size=1)\n",
- "\n",
- " def _gate(self, x):\n",
- " tanh_preactivation, sigmoid_preactivation = tf.split(x, 2, axis=-1)\n",
- " return tf.nn.tanh(tanh_preactivation) * tf.nn.sigmoid(sigmoid_preactivation)\n",
- "\n",
- " def call(self, input_tensor):\n",
- " v = input_tensor[0]\n",
- " h = input_tensor[1]\n",
- "\n",
- " horizontal_preactivation = self.horizontal_conv(h) # 1xN\n",
- " vertical_preactivation = self.vertical_conv(v) # NxN\n",
- " v_to_h = self.v_to_h_conv(vertical_preactivation) # 1x1\n",
- " v_out = self._gate(vertical_preactivation)\n",
- "\n",
- " horizontal_preactivation = horizontal_preactivation + v_to_h\n",
- " h_activated = self._gate(horizontal_preactivation)\n",
- " h_activated = self.horizontal_output(h_activated)\n",
- "\n",
- " if self.mask_type == 'A':\n",
- " h_out = h_activated\n",
- " elif self.mask_type == 'B':\n",
- " h_out = h + h_activated\n",
- "\n",
- " return v_out, h_out"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "WB57YufrVxn2"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Create PixelCNN model\n",
- "inputs = keras.layers.Input(shape=(height, width, n_channel))\n",
- "v, h = GatedBlock(mask_type='A', filters=64, kernel_size=3)([inputs, inputs])\n",
- "\n",
- "for i in range(7):\n",
- " v, h = GatedBlock(mask_type='B', filters=64, kernel_size=3)([v, h])\n",
- "\n",
- "x = keras.layers.Activation(activation='relu')(h)\n",
- "x = keras.layers.Conv2D(filters=128, kernel_size=1, strides=1)(x)\n",
- "\n",
- "x = keras.layers.Activation(activation='relu')(x)\n",
- "x = keras.layers.Conv2D(filters=n_channel * q_levels, kernel_size=1, strides=1)(x)\n",
- "\n",
- "pixelcnn = tf.keras.Model(inputs=inputs, outputs=x)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "_LnzHUaqV77d"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Prepare optimizer and loss function\n",
- "lr_decay = 0.9999\n",
- "learning_rate = 5e-2\n",
- "optimizer = tf.keras.optimizers.Adam(lr=learning_rate)\n",
- "\n",
- "compute_loss = tf.keras.losses.CategoricalCrossentropy(from_logits=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {
- "colab": {},
- "colab_type": "code",
- "id": "CsAgEKVzLCJD"
- },
- "outputs": [],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "@tf.function\n",
- "def train_step(batch_x, batch_y):\n",
- " with tf.GradientTape() as ae_tape:\n",
- " logits = pixelcnn(batch_x, training=True)\n",
- "\n",
- " logits = tf.reshape(logits, [-1, height, width, q_levels, n_channel])\n",
- " logits = tf.transpose(logits, perm=[0, 1, 2, 4, 3])\n",
- "\n",
- " loss = compute_loss(tf.one_hot(batch_y, q_levels), logits)\n",
- "\n",
- " gradients = ae_tape.gradient(loss, pixelcnn.trainable_variables)\n",
- " gradients, _ = tf.clip_by_global_norm(gradients, 1.0)\n",
- " optimizer.apply_gradients(zip(gradients, pixelcnn.trainable_variables))\n",
- "\n",
- " return loss"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 1000
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "NN6vJl7eVnZ4",
+ "colab": {}
+ },
+ "source": [
+ "# Defining random seeds\n",
+ "random_seed = 42\n",
+ "tf.random.set_seed(random_seed)\n",
+ "np.random.seed(random_seed)\n",
+ "rn.seed(random_seed)"
+ ],
+ "execution_count": 0,
+ "outputs": []
},
- "colab_type": "code",
- "id": "NoEPrfwQNM-s",
- "outputId": "cd806f66-acff-48fe-da47-d75a742acf99"
- },
- "outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "EPOCH 0: ITER 0/ 469 TIME: 2.03 LOSS: 0.6414\n",
- "EPOCH 0: ITER 100/ 469 TIME: 0.13 LOSS: 0.9549\n",
- "EPOCH 0: ITER 200/ 469 TIME: 0.13 LOSS: 0.8991\n",
- "EPOCH 0: ITER 300/ 469 TIME: 0.13 LOSS: 0.8518\n",
- "EPOCH 0: ITER 400/ 469 TIME: 0.13 LOSS: 0.8543\n",
- "EPOCH 0: TIME: 64.81 ETA: 12962.69\n",
- "EPOCH 1: ITER 0/ 469 TIME: 0.02 LOSS: 0.9295\n",
- "EPOCH 1: ITER 100/ 469 TIME: 0.13 LOSS: 0.8955\n",
- "EPOCH 1: ITER 200/ 469 TIME: 0.13 LOSS: 0.9063\n",
- "EPOCH 1: ITER 300/ 469 TIME: 0.13 LOSS: 0.8343\n",
- "EPOCH 1: ITER 400/ 469 TIME: 0.13 LOSS: 0.8433\n",
- "EPOCH 1: TIME: 62.16 ETA: 12369.32\n",
- "EPOCH 2: ITER 0/ 469 TIME: 0.02 LOSS: 0.8575\n",
- "EPOCH 2: ITER 100/ 469 TIME: 0.13 LOSS: 0.8659\n",
- "EPOCH 2: ITER 200/ 469 TIME: 0.13 LOSS: 0.8498\n",
- "EPOCH 2: ITER 300/ 469 TIME: 0.13 LOSS: 0.8268\n"
- ]
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "8BnkhgCjVpJu",
+ "colab": {}
+ },
+ "source": [
+ "# Loading data\n",
+ "(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()\n",
+ "\n",
+ "height = 28\n",
+ "width = 28\n",
+ "n_channel = 1\n",
+ "\n",
+ "x_train = x_train.astype('float32') / 255.\n",
+ "x_test = x_test.astype('float32') / 255.\n",
+ "\n",
+ "x_train = x_train.reshape(x_train.shape[0], height, width, n_channel)\n",
+ "x_test = x_test.reshape(x_test.shape[0], height, width, n_channel)"
+ ],
+ "execution_count": 0,
+ "outputs": []
},
{
- "ename": "KeyboardInterrupt",
- "evalue": "",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi_iter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mbatch_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_y\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_dataset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mstart\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlr\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mlr_decay\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_y\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0miter_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/kcl_1/HDD/PycharmProjects/vq-vae/venv/lib/python3.6/site-packages/tensorflow_core/python/ops/variables.py\u001b[0m in \u001b[0;36m_run_op\u001b[0;34m(a, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1077\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_run_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1078\u001b[0m \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1079\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtensor_oper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1080\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1081\u001b[0m \u001b[0mfunctools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate_wrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_run_op\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtensor_oper\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/kcl_1/HDD/PycharmProjects/vq-vae/venv/lib/python3.6/site-packages/tensorflow_core/python/ops/math_ops.py\u001b[0m in \u001b[0;36mbinary_op_wrapper\u001b[0;34m(x, y)\u001b[0m\n\u001b[1;32m 910\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 911\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 912\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 913\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 914\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mbinary_op_wrapper_sparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msp_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/kcl_1/HDD/PycharmProjects/vq-vae/venv/lib/python3.6/site-packages/tensorflow_core/python/ops/math_ops.py\u001b[0m in \u001b[0;36m_mul_dispatch\u001b[0;34m(x, y, name)\u001b[0m\n\u001b[1;32m 1204\u001b[0m \u001b[0mis_tensor_y\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1205\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_tensor_y\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1206\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgen_math_ops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmul\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1207\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1208\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msparse_tensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSparseTensor\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Case: Dense * Sparse.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/kcl_1/HDD/PycharmProjects/vq-vae/venv/lib/python3.6/site-packages/tensorflow_core/python/ops/gen_math_ops.py\u001b[0m in \u001b[0;36mmul\u001b[0;34m(x, y, name)\u001b[0m\n\u001b[1;32m 6683\u001b[0m _result = _pywrap_tensorflow.TFE_Py_FastPathExecute(\n\u001b[1;32m 6684\u001b[0m \u001b[0m_ctx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_context_handle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_ctx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_thread_local_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Mul\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6685\u001b[0;31m name, _ctx._post_execution_callbacks, x, y)\n\u001b[0m\u001b[1;32m 6686\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6687\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_FallbackException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
- ]
- }
- ],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Training loop\n",
- "n_epochs = 200\n",
- "n_iter = int(np.ceil(x_train_quantised.shape[0] / batch_size))\n",
- "for epoch in range(n_epochs):\n",
- " start_epoch = time.time()\n",
- " for i_iter, (batch_x, batch_y) in enumerate(train_dataset):\n",
- " start = time.time()\n",
- " optimizer.lr = optimizer.lr * lr_decay\n",
- " loss = train_step(batch_x, batch_y)\n",
- " iter_time = time.time() - start\n",
- " if i_iter % 100 == 0:\n",
- " print('EPOCH {:3d}: ITER {:4d}/{:4d} TIME: {:.2f} LOSS: {:.4f}'.format(epoch,\n",
- " i_iter, n_iter,\n",
- " iter_time,\n",
- " loss))\n",
- " epoch_time = time.time() - start_epoch\n",
- " print('EPOCH {:3d}: TIME: {:.2f} ETA: {:.2f}'.format(epoch,\n",
- " epoch_time,\n",
- " epoch_time * (n_epochs - epoch)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 52
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "3ne-qY7JVZaB",
+ "colab": {}
+ },
+ "source": [
+ "def quantise(images, q_levels):\n",
+ " \"\"\"Quantise image into q levels\"\"\"\n",
+ " return (np.digitize(images, np.arange(q_levels) / q_levels) - 1).astype('float32')"
+ ],
+ "execution_count": 0,
+ "outputs": []
},
- "colab_type": "code",
- "id": "ue0vZbitSNmz",
- "outputId": "0eb765cc-3a9a-4354-cd38-6316807e3748"
- },
- "outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "nll : 0.6348000764846802 nats\n",
- "bits/dim : 0.0008096939751080104\n"
- ]
- }
- ],
- "source": [
- "# --------------------------------------------------------------------------------------------------------------\n",
- "# Test\n",
- "test_loss = []\n",
- "for batch_x, batch_y in test_dataset:\n",
- " logits = pixelcnn(batch_x, training=False)\n",
- " logits = tf.reshape(logits, [-1, height, width, q_levels, n_channel])\n",
- " logits = tf.transpose(logits, perm=[0, 1, 2, 4, 3])\n",
- "\n",
- " # Calculate cross-entropy (= negative log-likelihood)\n",
- " loss = compute_loss(tf.one_hot(batch_y, q_levels), logits)\n",
- "\n",
- " test_loss.append(loss)\n",
- "print('nll : {:} nats'.format(np.array(test_loss).mean()))\n",
- "print('bits/dim : {:}'.format(np.array(test_loss).mean() / (height * width)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 526
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "3QVhnMymVrzc",
+ "colab": {}
+ },
+ "source": [
+ "# Quantise the input data in q levels\n",
+ "q_levels = 2\n",
+ "x_train_quantised = quantise(x_train, q_levels)\n",
+ "x_test_quantised = quantise(x_test, q_levels)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "ZObIXqzNGwmo",
+ "colab": {}
+ },
+ "source": [
+ "# Creating input stream using tf.data API\n",
+ "batch_size = 128\n",
+ "train_buf = 60000\n",
+ "\n",
+ "train_dataset = tf.data.Dataset.from_tensor_slices((x_train_quantised / (q_levels - 1),\n",
+ " x_train_quantised.astype('int32')))\n",
+ "train_dataset = train_dataset.shuffle(buffer_size=train_buf)\n",
+ "train_dataset = train_dataset.batch(batch_size)\n",
+ "\n",
+ "test_dataset = tf.data.Dataset.from_tensor_slices((x_test_quantised / (q_levels - 1),\n",
+ " x_test_quantised.astype('int32')))\n",
+ "test_dataset = test_dataset.batch(batch_size)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "75VTDkK8VZLA",
+ "colab": {}
+ },
+ "source": [
+ "class MaskedConv2D(keras.layers.Layer):\n",
+ " \"\"\"Convolutional layers with masks for Gated PixelCNN.\n",
+ "\n",
+ " Masked convolutional layers used to implement Vertical and Horizontal\n",
+ " stacks of the Gated PixelCNN.\n",
+ "\n",
+ " Note: This implementation is different from the normal PixelCNN.\n",
+ "\n",
+ " Arguments:\n",
+ " mask_type: one of `\"V\"`, `\"A\"` or `\"B\".`\n",
+ " filters: Integer, the dimensionality of the output space\n",
+ " (i.e. the number of output filters in the convolution).\n",
+ " kernel_size: An integer or tuple/list of 2 integers, specifying the\n",
+ " height and width of the 2D convolution window.\n",
+ " Can be a single integer to specify the same value for\n",
+ " all spatial dimensions.\n",
+ " strides: An integer or tuple/list of 2 integers,\n",
+ " specifying the strides of the convolution along the height and width.\n",
+ " Can be a single integer to specify the same value for\n",
+ " all spatial dimensions.\n",
+ " Specifying any stride value != 1 is incompatible with specifying\n",
+ " any `dilation_rate` value != 1.\n",
+ " padding: one of `\"valid\"` or `\"same\"` (case-insensitive).\n",
+ " kernel_initializer: Initializer for the `kernel` weights matrix.\n",
+ " bias_initializer: Initializer for the bias vector.\n",
+ " \"\"\"\n",
+ "\n",
+ " def __init__(self,\n",
+ " mask_type,\n",
+ " filters,\n",
+ " kernel_size,\n",
+ " strides=1,\n",
+ " padding='same',\n",
+ " kernel_initializer='glorot_uniform',\n",
+ " bias_initializer='zeros'):\n",
+ " super(MaskedConv2D, self).__init__()\n",
+ "\n",
+ " assert mask_type in {'A', 'B', 'V'}\n",
+ " self.mask_type = mask_type\n",
+ "\n",
+ " self.filters = filters\n",
+ "\n",
+ " if isinstance(kernel_size, int):\n",
+ " kernel_size = (kernel_size, kernel_size)\n",
+ " self.kernel_size = kernel_size\n",
+ "\n",
+ " self.strides = strides\n",
+ " self.padding = padding.upper()\n",
+ " self.kernel_initializer = initializers.get(kernel_initializer)\n",
+ " self.bias_initializer = initializers.get(bias_initializer)\n",
+ "\n",
+ " def build(self, input_shape):\n",
+ " kernel_h, kernel_w = self.kernel_size\n",
+ "\n",
+ " self.kernel = self.add_weight('kernel',\n",
+ " shape=(kernel_h,\n",
+ " kernel_w,\n",
+ " int(input_shape[-1]),\n",
+ " self.filters),\n",
+ " initializer=self.kernel_initializer,\n",
+ " trainable=True)\n",
+ "\n",
+ " self.bias = self.add_weight('bias',\n",
+ " shape=(self.filters,),\n",
+ " initializer=self.bias_initializer,\n",
+ " trainable=True)\n",
+ "\n",
+ " mask = np.ones(self.kernel.shape, dtype=np.float32)\n",
+ "\n",
+ " if kernel_h % 2 != 0: \n",
+ " center_h = kernel_h // 2\n",
+ " else:\n",
+ " center_h = (kernel_h - 1) // 2\n",
+ "\n",
+ " if kernel_w % 2 != 0: \n",
+ " center_w = kernel_w // 2\n",
+ " else:\n",
+ " center_w = (kernel_w - 1) // 2\n",
+ "\n",
+ " if self.mask_type == 'V':\n",
+ " mask[center_h + 1:, :, :, :] = 0.\n",
+ " else:\n",
+ " mask[:center_h, :, :] = 0.\n",
+ " mask[center_h, center_w + (self.mask_type == 'B'):, :, :] = 0.\n",
+ " mask[center_h + 1:, :, :] = 0. \n",
+ "\n",
+ " self.mask = tf.constant(mask, dtype=tf.float32, name='mask')\n",
+ "\n",
+ " def call(self, input):\n",
+ " masked_kernel = tf.math.multiply(self.mask, self.kernel)\n",
+ " x = nn.conv2d(input,\n",
+ " masked_kernel,\n",
+ " strides=[1, self.strides, self.strides, 1],\n",
+ " padding=self.padding)\n",
+ " x = nn.bias_add(x, self.bias)\n",
+ " return x"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "PTUN4s52Nu3w",
+ "colab": {}
+ },
+ "source": [
+ "class GatedBlock(tf.keras.Model):\n",
+ " \"\"\" Gated block of the Gated PixelCNN.\"\"\"\n",
+ "\n",
+ " def __init__(self, mask_type, filters, kernel_size):\n",
+ " super(GatedBlock, self).__init__(name='')\n",
+ "\n",
+ " self.mask_type = mask_type\n",
+ " self.vertical_conv = MaskedConv2D(mask_type='V',\n",
+ " filters=2 * filters,\n",
+ " kernel_size=kernel_size)\n",
+ " \n",
+ " self.horizontal_conv = MaskedConv2D(mask_type=mask_type,\n",
+ " filters=2 * filters,\n",
+ " kernel_size=kernel_size)\n",
+ "\n",
+ " self.padding = keras.layers.ZeroPadding2D(padding=((1,0),0))\n",
+ " self.cropping = keras.layers.Cropping2D(cropping=((0, 1), 0))\n",
+ "\n",
+ " self.v_to_h_conv = keras.layers.Conv2D(filters=2 * filters, kernel_size=1)\n",
+ "\n",
+ " self.horizontal_output = keras.layers.Conv2D(filters=filters, kernel_size=1)\n",
+ "\n",
+ " def _gate(self, x):\n",
+ " tanh_preactivation, sigmoid_preactivation = tf.split(x, 2, axis=-1)\n",
+ " return tf.nn.tanh(tanh_preactivation) * tf.nn.sigmoid(sigmoid_preactivation)\n",
+ "\n",
+ " def call(self, input_tensor):\n",
+ " v = input_tensor[0]\n",
+ " h = input_tensor[1]\n",
+ "\n",
+ " vertical_preactivation = self.vertical_conv(v) # NxN\n",
+ "\n",
+ " # Shifting feature map down to ensure causality\n",
+ " v_to_h = self.padding(vertical_preactivation)\n",
+ " v_to_h = self.cropping(v_to_h)\n",
+ " v_to_h = self.v_to_h_conv(v_to_h) # 1x1\n",
+ "\n",
+ " horizontal_preactivation = self.horizontal_conv(h) # 1xN\n",
+ " \n",
+ " v_out = self._gate(vertical_preactivation)\n",
+ "\n",
+ " horizontal_preactivation = horizontal_preactivation + v_to_h\n",
+ " h_activated = self._gate(horizontal_preactivation)\n",
+ " h_activated = self.horizontal_output(h_activated)\n",
+ "\n",
+ " if self.mask_type == 'A':\n",
+ " h_out = h_activated\n",
+ " elif self.mask_type == 'B':\n",
+ " h_out = h + h_activated\n",
+ "\n",
+ " return v_out, h_out"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "WB57YufrVxn2",
+ "colab": {}
+ },
+ "source": [
+ "# Create Gated PixelCNN model\n",
+ "inputs = keras.layers.Input(shape=(height, width, n_channel))\n",
+ "v, h = GatedBlock(mask_type='A', filters=64, kernel_size=3)([inputs, inputs])\n",
+ "\n",
+ "for i in range(7):\n",
+ " v, h = GatedBlock(mask_type='B', filters=64, kernel_size=3)([v, h])\n",
+ "\n",
+ "x = keras.layers.Activation(activation='relu')(h)\n",
+ "x = keras.layers.Conv2D(filters=128, kernel_size=1, strides=1)(x)\n",
+ "\n",
+ "x = keras.layers.Activation(activation='relu')(x)\n",
+ "x = keras.layers.Conv2D(filters=q_levels, kernel_size=1, strides=1)(x)\n",
+ "\n",
+ "gated_pixelcnn = tf.keras.Model(inputs=inputs, outputs=x)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "_LnzHUaqV77d",
+ "colab": {}
+ },
+ "source": [
+ "# Prepare optimizer and loss function\n",
+ "lr_decay = 0.999995\n",
+ "learning_rate = 1e-3\n",
+ "optimizer = keras.optimizers.Adam(lr=learning_rate)\n",
+ "\n",
+ "compute_loss = keras.losses.CategoricalCrossentropy(from_logits=True)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "colab_type": "code",
+ "id": "CsAgEKVzLCJD",
+ "colab": {}
+ },
+ "source": [
+ "@tf.function\n",
+ "def train_step(batch_x, batch_y):\n",
+ " with tf.GradientTape() as ae_tape:\n",
+ " logits = gated_pixelcnn(batch_x, training=True)\n",
+ "\n",
+ " loss = compute_loss(tf.squeeze(tf.one_hot(batch_y, q_levels)), logits)\n",
+ "\n",
+ " gradients = ae_tape.gradient(loss, gated_pixelcnn.trainable_variables)\n",
+ " gradients, _ = tf.clip_by_global_norm(gradients, 1.0)\n",
+ " optimizer.apply_gradients(zip(gradients, gated_pixelcnn.trainable_variables))\n",
+ "\n",
+ " return loss"
+ ],
+ "execution_count": 0,
+ "outputs": []
},
- "colab_type": "code",
- "id": "-Ia9VXYySkuW",
- "outputId": "2bce0fd7-d366-4ed6-dc42-42f519b02567"
- },
- "outputs": [
{
- "data": {
- "image/png": "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fkyePBkI3dAZ0bG+/vrrHHnkkTEdW15ZtGgRAPfccw8QWviIEiVKAPDwww9z1113xX5whpEBVR5deeWVbN26FYCjjjoKgPnz53PuuefGbWzJyq+/hoqNb775ZubNmweknx8ff/xxAJYvXw7gNo/RniMt1WUYhmEYRtIQ14jP+PHjAWjXrl2m9zZu3AjAu+++y0cffQTAtGnTAGjQoEGMRpg3li5dCsApp5wCQNGiReM5nJjz4osvAvDxxx8D8MYbb2T6zMaNG3nvvfeA/BHxad26NQsXLgRwu81t27Zx8OBBAN566y0AZsyYQaNGjeIzyFxy+eWXA7Br1y4gFOVJTU0FYMuWLQA88cQTFvEJGK+88grdu3cHoHDhwgB8//33ABx33HFxG1duOXDgAACrV692qeI9e/YA0KxZM3dsb775JgDdunUDIDU11UUV9Pl+/frx7rvvxm7wcWDnzp08/PDDgBdBufbaa9m5cyfgRW5jycsvvwzgoj1Z8c477wChiDjALbfcEtVxWcTHMAzDMIykIeYRn7/++stFAjp16gTA/v37s/2Z3bt3AzidyPfff88xxxwTxVHmnbVr13LJJZcAcN555wHQqlUr2rdvD4TXf+QXNm3aBHg7C+22Lr/8cieCLV++PBDSdeUnYWzjxo3d+Z47dy4Abdu2zfS5YcOGBTris2nTJm699VYAt1P85JNPAKhVq5bT4k2dOhUI3bvbt28HoFixYjEereFH112XLl3cvVeuXDkAJ0pPJF599VUAevXq5TIARxzh7dUVERo0aBAQij5C6HpV1HnNmjXpPpvo6Fm5ZcsWp1/65ZdfgNB5//LLL9N9XlkSiG3E54svvgBg+PDh7rXixYunG8eZZ57pND7ffPNNus83btyYkiVLRm18Mbsb/ve//wGhRctPP/0EeCH0nPLbb78B8P7773PTTTdFdoARYvr06S4NoAfGJ598Qt26dQE444wz4ja2WFGgQAEAihQpAoRC75UqVQJwqZ/9+/dzzjnnxGeAUaJixYoAbnFw++23s23bNsCr6vrss8/iMzhgx44dAGzevNm9pgdihQoVgND1+8EHHwAwePBgAC6++GL3eZ0zLXz++OMPvvrqK8Cr9DJix7Rp05g4cSLgnRMtegDGjBkDwLHHHhv7weURpa600fVXRPoXMHp97NixAG5D0aNHD26//XbA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\n",
- "text/plain": [
- "