{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Custom Layers in Tensorflow 2\n", "\n", "> Custom layers give you the flexibility to implement models that use non-standard layers. In this post, we will practice uilding off of existing standard layers to create custom layers for your models. This is the summary of lecture \"Custom Models, Layers and Loss functions with Tensorflow\" from DeepLearning.AI.\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Chanseok Kang\n", "- categories: [Python, Coursera, Tensorflow, DeepLearning.AI]\n", "- image: images/model_simpleQuadratic.png" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "from tensorflow.keras.utils import plot_model\n", "from tensorflow.keras import backend as K\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 1 - Lambda Layer\n", "\n", "In this section, it will show how you can define custom layers with the [Lambda](https://keras.io/api/layers/core_layers/lambda/) layer. You can either use [lambda functions](https://www.w3schools.com/python/python_lambda.asp) within the Lambda layer or define a custom function that the Lambda layer will call." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepare the data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "mnist = tf.keras.datasets.mnist\n", "\n", "(X_train, y_train), (X_test, y_test) = mnist.load_data()\n", "X_train, X_test = X_train / 255.0, X_test / 255.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Build the model\n", "\n", "Here, we'll use a Lambda layer to define a custom layer in our network. We're using a lambda function to get the absolute value of the layer input." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "model = tf.keras.Sequential([\n", " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", " tf.keras.layers.Dense(128),\n", " tf.keras.layers.Lambda(lambda x: tf.abs(x)),\n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])\n", "\n", "model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot_model(model, show_layer_names=True, show_shapes=True, show_dtype=True, to_file='./image/lambda_model.png')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", "1875/1875 [==============================] - 2s 776us/step - loss: 0.4046 - accuracy: 0.8879\n", "Epoch 2/5\n", "1875/1875 [==============================] - 1s 744us/step - loss: 0.0971 - accuracy: 0.9718\n", "Epoch 3/5\n", "1875/1875 [==============================] - 1s 733us/step - loss: 0.0653 - accuracy: 0.9805\n", "Epoch 4/5\n", "1875/1875 [==============================] - 1s 735us/step - loss: 0.0480 - accuracy: 0.9848\n", "Epoch 5/5\n", "1875/1875 [==============================] - 1s 726us/step - loss: 0.0401 - accuracy: 0.9873\n", "313/313 [==============================] - 0s 710us/step - loss: 0.0847 - accuracy: 0.9764\n" ] }, { "data": { "text/plain": [ "[0.08468984067440033, 0.9764000177383423]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train, epochs=5)\n", "model.evaluate(X_test, y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another way to use the Lambda layer is to pass in a function defined outside the model. The code below shows how a custom ReLU function is used as a custom layer in the model." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def my_relu(x):\n", " return K.maximum(-0.1, x)\n", "\n", "model = tf.keras.models.Sequential([\n", " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", " tf.keras.layers.Dense(128),\n", " tf.keras.layers.Lambda(my_relu), \n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])\n", "\n", "model.compile(optimizer='adam',\n", " loss='sparse_categorical_crossentropy',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", "1875/1875 [==============================] - 2s 750us/step - loss: 0.4280 - accuracy: 0.8812\n", "Epoch 2/5\n", "1875/1875 [==============================] - 1s 759us/step - loss: 0.1238 - accuracy: 0.96390s - loss: 0.1259 - ac\n", "Epoch 3/5\n", "1875/1875 [==============================] - 1s 789us/step - loss: 0.0800 - accuracy: 0.9759\n", "Epoch 4/5\n", "1875/1875 [==============================] - 1s 755us/step - loss: 0.0557 - accuracy: 0.9830\n", "Epoch 5/5\n", "1875/1875 [==============================] - 1s 760us/step - loss: 0.0420 - accuracy: 0.9879\n", "313/313 [==============================] - 0s 706us/step - loss: 0.0743 - accuracy: 0.9775\n" ] }, { "data": { "text/plain": [ "[0.07428351789712906, 0.9775000214576721]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train, epochs=5)\n", "model.evaluate(X_test, y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 2 - Building a Custom Dense Layer\n", "\n", "In this section, we'll walk through how to create a custom layer that inherits the [Layer](https://keras.io/api/layers/base_layer/#layer-class) class. Unlike simple Lambda layers you did previously, the custom layer here will contain weights that can be updated during training." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepare the Data" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# define the dataset\n", "xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)\n", "ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Custom Layer with weights\n", "\n", "To make custom layer that is trainable, we need to define a class that inherits the [Layer](https://keras.io/api/layers/base_layer/#layer-class) base class from Keras. The Python syntax is shown below in the class declaration. This class requires three functions: `__init__()`, `build()` and `call()`. These ensure that our custom layer has a *state* and *computation* that can be accessed during training or inference." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.layers import Layer\n", "\n", "class SimpleDense(Layer):\n", " def __init__(self, units=32):\n", " '''\n", " Initialize the instance attributes\n", " '''\n", " super(SimpleDense, self).__init__()\n", " self.units = units\n", " \n", " def build(self, input_shape):\n", " '''\n", " Create the state of the layer (weights)\n", " '''\n", " w_init = tf.random_normal_initializer()\n", " self.w = tf.Variable(name='kernel',\n", " initial_value=w_init(shape=(input_shape[-1], self.units), dtype='float32'),\n", " trainable=True)\n", " \n", " # initialize bias\n", " b_init = tf.zeros_initializer()\n", " self.b = tf.Variable(name='bias',\n", " initial_value=b_init(shape=(self.units,), dtype='float32'),\n", " trainable=True)\n", " \n", " def call(self, inputs):\n", " '''\n", " Defines the computation from inputs to outputs\n", " '''\n", " return tf.matmul(inputs, self.w) + self.b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use our custom layer like below:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# declare an instance of the class\n", "my_dense = SimpleDense(units=1)\n", "\n", "# define an input and feed into the layer\n", "x = tf.ones((1, 1))\n", "y = my_dense(x)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# parameters of the base layer class like 'variables' can be used\n", "my_dense.variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's then try using it in simple network:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# use the Sequential API to build a model with our custom layer\n", "my_layer = SimpleDense(units=1)\n", "model = tf.keras.Sequential([my_layer])\n", "\n", "# configure and train the model\n", "model.compile(optimizer='sgd', loss='mean_squared_error')\n", "model.fit(xs, ys, epochs=500, verbose=0)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[18.981411]], dtype=float32)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# perform inference\n", "model.predict([10.0])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_layer.variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Activation in a custom layer\n", "\n", "In this section, we extend our knowledge of building custom layers by adding an activation parameter. The implementation is pretty straightforward as you'll see below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepare the Data\n", "\n", "we'll use MNIST dataset." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding an activation layer\n", "\n", "To use the built-in activations in Keras, we can specify an `activation` parameter in the `__init__()` method of our custom layer class. From there, we can initialize it by using the `tf.keras.activations.get()` method. This takes in a string identifier that corresponds to one of the [available activations](https://keras.io/api/layers/activations/#available-activations) in Keras. Next, you can now pass in the forward computation to this activation in the `call()` method." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "class SimpleDense(Layer):\n", " # add an activation paramter\n", " def __init__(self, units=32, activation=None):\n", " super(SimpleDense, self).__init__()\n", " self.units = units\n", " \n", " # define the activation to get from the built-in activation layers in Keras\n", " self.activation = tf.keras.activations.get(activation)\n", " \n", " def build(self, input_shape):\n", " # initialize the weight\n", " w_init = tf.random_normal_initializer()\n", " self.w = tf.Variable(name='kernel',\n", " initial_value=w_init(shape=(input_shape[-1], self.units)),\n", " trainable=True)\n", " \n", " # intialize the bias\n", " b_init = tf.zeros_initializer()\n", " self.b = tf.Variable(name='bias',\n", " initial_value=b_init(shape=(self.units, )),\n", " trainable=True)\n", " \n", " def call(self, inputs):\n", " # pass the computation to the activation layer\n", " return self.activation(tf.matmul(inputs, self.w) + self.b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now pass in an activation parameter to our custom layer. The string identifier is mostly the same as the function name so 'relu' below will get `tf.keras.activations.relu`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "model = tf.keras.Sequential([\n", " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", " SimpleDense(128, activation='relu'),\n", " tf.keras.layers.Dropout(0.2),\n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])\n", "\n", "model.compile(optimizer='adam', \n", " loss='sparse_categorical_crossentropy',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot_model(model, show_shapes=True, show_layer_names=True, to_file='./image/model_simpleDense.png')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", "1875/1875 [==============================] - 2s 753us/step - loss: 0.4704 - accuracy: 0.8634\n", "Epoch 2/5\n", "1875/1875 [==============================] - 1s 743us/step - loss: 0.1502 - accuracy: 0.9564\n", "Epoch 3/5\n", "1875/1875 [==============================] - 1s 759us/step - loss: 0.1107 - accuracy: 0.9669\n", "Epoch 4/5\n", "1875/1875 [==============================] - 1s 719us/step - loss: 0.0898 - accuracy: 0.9720\n", "Epoch 5/5\n", "1875/1875 [==============================] - 1s 762us/step - loss: 0.0721 - accuracy: 0.9773\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train, epochs=5)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "313/313 [==============================] - 0s 742us/step - loss: 0.0743 - accuracy: 0.9752\n" ] }, { "data": { "text/plain": [ "[0.07433376461267471, 0.9751999974250793]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_test, y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Application - Implement a Quadratic Layer\n", "\n", "In this section, you will build a custom quadratic layer which computes $y = ax^2 + bx + c$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define the quadratic layer \n", "Implement a simple quadratic layer. It has 3 state variables: $a$, $b$ and $c$. The computation returned is $ax^2 + bx + c$. Make sure it can also accept an activation function.\n", "\n", "#### `__init__`\n", "- call `super(my_fun, self)` to access the base class of `my_fun`, and call the `__init__()` function to initialize that base class. In this case, `my_fun` is `SimpleQuadratic` and its base class is `Layer`.\n", "- self.units: set this using one of the function parameters.\n", "- self.activation: The function parameter `activation` will be passed in as a string. To get the tensorflow object associated with the string, please use `tf.keras.activations.get()` \n", "\n", "\n", "#### `build`\n", "The following are suggested steps for writing your code. If you prefer to use fewer lines to implement it, feel free to do so. Either way, you'll want to set `self.a`, `self.b` and `self.c`.\n", "\n", "- a_init: set this to tensorflow's `random_normal_initializer()`\n", "- a_init_val: Use the `random_normal_initializer()` that you just created and invoke it, setting the `shape` and `dtype`.\n", " - The `shape` of `a` should have its row dimension equal to the last dimension of `input_shape`, and its column dimension equal to the number of units in the layer. \n", " - This is because you'll be matrix multiplying x^2 * a, so the dimensions should be compatible.\n", " - set the dtype to 'float32'\n", "- self.a: create a tensor using tf.Variable, setting the initial_value and set trainable to True.\n", "\n", "- b_init, b_init_val, and self.b: these will be set in the same way that you implemented a_init, a_init_val and self.a\n", "- c_init: set this to `tf.zeros_initializer`.\n", "- c_init_val: Set this by calling the tf.zeros_initializer that you just instantiated, and set the `shape` and `dtype`\n", " - shape: This will be a vector equal to the number of units. This expects a tuple, and remember that a tuple `(9,)` includes a comma.\n", " - dtype: set to 'float32'.\n", "- self.c: create a tensor using tf.Variable, and set the parameters `initial_value` and `trainable`.\n", "\n", "#### `call`\n", "The following section performs the multiplication x^2*a + x*b + c. The steps are broken down for clarity, but you can also perform this calculation in fewer lines if you prefer.\n", "- x_squared: use tf.math.square()\n", "- x_squared_times_a: use tf.matmul(). \n", " - If you see an error saying `InvalidArgumentError: Matrix size-incompatible`, please check the order of the matrix multiplication to make sure that the matrix dimensions line up.\n", "- x_times_b: use tf.matmul().\n", "- x2a_plus_xb_plus_c: add the three terms together.\n", "- activated_x2a_plus_xb_plus_c: apply the class's `activation` to the sum of the three terms.\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "class SimpleQuadratic(Layer):\n", "\n", " def __init__(self, units=32, activation=None):\n", " '''Initializes the class and sets up the internal variables'''\n", " super(SimpleQuadratic, self).__init__()\n", " self.units = units\n", " self.activation = tf.keras.activations.get(activation)\n", " \n", " def build(self, input_shape):\n", " '''Create the state of the layer (weights)'''\n", " a_init = tf.random_normal_initializer()\n", " a_init_val = a_init(shape=(input_shape[-1], self.units),\n", " dtype='float32')\n", " self.a = tf.Variable(name='a', \n", " initial_value=a_init_val,\n", " trainable=True)\n", " \n", " b_init = tf.random_normal_initializer()\n", " b_init_val = b_init(shape=(input_shape[-1], self.units),\n", " dtype='float32')\n", " self.b = tf.Variable(name='b',\n", " initial_value=b_init_val,\n", " trainable=True)\n", " \n", " c_init = tf.zeros_initializer()\n", " c_init_val = c_init(shape=(self.units, ),\n", " dtype='float32')\n", " self.c = tf.Variable(name='c',\n", " initial_value=c_init_val,\n", " trainable=True)\n", " super().build(input_shape)\n", " \n", " \n", " def call(self, inputs):\n", " '''Defines the computation from inputs to outputs'''\n", " x_squared = tf.math.square(inputs)\n", " x_squared_times_a = tf.matmul(x_squared, self.a)\n", " x_times_b = tf.matmul(inputs, self.b)\n", " x2a_plus_xb_plus_c = x_squared_times_a + x_times_b + self.c\n", " activated_x2a_plus_xb_plus_c = self.activation(x2a_plus_xb_plus_c)\n", " return activated_x2a_plus_xb_plus_c" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Train your model with the `SimpleQuadratic` layer that you just implemented." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "model = tf.keras.Sequential([\n", " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", " SimpleQuadratic(128, activation='relu'),\n", " tf.keras.layers.Dropout(0.2),\n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])\n", "\n", "model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot_model(model, show_shapes=True, show_layer_names=True, to_file='./image/model_simpleQuadratic.png')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", "1875/1875 [==============================] - 2s 972us/step - loss: 0.4291 - accuracy: 0.8678\n", "Epoch 2/5\n", "1875/1875 [==============================] - 2s 1ms/step - loss: 0.1362 - accuracy: 0.9589\n", "Epoch 3/5\n", "1875/1875 [==============================] - 2s 883us/step - loss: 0.1015 - accuracy: 0.9683\n", "Epoch 4/5\n", "1875/1875 [==============================] - 1s 765us/step - loss: 0.0800 - accuracy: 0.9743\n", "Epoch 5/5\n", "1875/1875 [==============================] - 1s 755us/step - loss: 0.0702 - accuracy: 0.9772\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train, epochs=5)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "313/313 [==============================] - 0s 700us/step - loss: 0.0779 - accuracy: 0.9775\n" ] }, { "data": { "text/plain": [ "[0.07792823016643524, 0.9775000214576721]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_test, y_test)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }