{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Training a FFNN in dCGPANN vs. Keras (regression)\n", "\n", "A Feed Forward Neural network is a widely used ANN model for regression and classification. Here we show how to encode it into a dCGPANN and train it with stochastic gradient descent on a regression task. To check the correctness of the result we perform the same training using the widely used Keras Deep Learning toolbox." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Initial import\n", "import dcgpy\n", "# For plotting\n", "from mpl_toolkits.mplot3d import Axes3D\n", "import matplotlib.pyplot as plt\n", "from matplotlib import cm\n", "from matplotlib.ticker import LinearLocator, FormatStrFormatter\n", "# For scientific computing and more ...\n", "import numpy as np\n", "from tqdm import tqdm\n", "from sklearn.utils import shuffle\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data set" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# To plot the unction we use a uniform grid\n", "X = np.arange(-1, 1, 0.05)\n", "Y = np.arange(-1, 1, 0.05)\n", "n_samples = len(X) * len(Y)\n", "points = np.zeros((n_samples, 2))\n", "\n", "i=0\n", "for x in X:\n", " for y in Y:\n", " points[i][0] = x\n", " points[i][1] = y\n", " i=i+1\n", "labels = (np.sin(5 * points[:,0] * (3 * points[:,1] + 1.)) + 1. ) / 2.\n", "points = points.reshape((n_samples,2))\n", "labels = labels.reshape((n_samples,1))\n", "\n", "# To plot the function \n", "X, Y = np.meshgrid(X, Y)\n", "Z = (np.sin(5 * X * (3 * Y + 1.)) + 1. ) / 2.\n", "fig = plt.figure()\n", "ax = fig.gca(projection='3d')\n", "surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,\n", " linewidth=0, antialiased=False)\n", "\n", "# We shuffle the points and labels\n", "points, labels = shuffle(points, labels, random_state=0)\n", "# We create training and test sets\n", "X_train = points[:800]\n", "Y_train = labels[:800]\n", "X_test = points[800:]\n", "Y_test = labels[800:]\n", "_ = plt.title(\"function to be learned\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Encoding and training a FFNN using dCGP\n", "\n", "There are many ways the same FFNN could be encoded into a CGP chromosome. The utility *encode_ffnn* selects one for you returning the expression." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting error: 0.3784204557734959\n", "Net complexity (number of active weights): 1120\n", "Net complexity (number of unique active weights): 1120\n", "Net complexity (number of active nodes): 73\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# We define a 2 input 1 output dCGPANN with sigmoid nonlinearities\n", "dcgpann = dcgpy.encode_ffnn(2,1,[50,20],[\"sig\", \"sig\", \"sig\"], 5)\n", "\n", "std = 1.5\n", "# Weight/biases initialization is made using a normal distribution\n", "dcgpann.randomise_weights(mean = 0., std = std)\n", "dcgpann.randomise_biases(mean = 0., std = std)\n", "\n", "# We show the initial MSE\n", "print(\"Starting error:\", dcgpann.loss(X_test,Y_test, \"MSE\"))\n", "print(\"Net complexity (number of active weights):\", dcgpann.n_active_weights())\n", "print(\"Net complexity (number of unique active weights):\", dcgpann.n_active_weights(unique=True))\n", "print(\"Net complexity (number of active nodes):\", len(dcgpann.get_active_nodes()))\n", "x = dcgpann.get()\n", "w = dcgpann.get_weights()\n", "b = dcgpann.get_biases()\n", "res = []\n", "\n", "# And show a visualization of the FFNN encoded in a CGP\n", "dcgpann.visualize(show_nonlinearities=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 5000/5000 [00:33<00:00, 150.70it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time (s): 33.18543911201414\n", "End MSE: 0.016128249531917035\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "import timeit\n", "start_time = timeit.default_timer()\n", "\n", "lr0 = 0.3\n", "for i in tqdm(range(5000)):\n", " lr = lr0 #* np.exp(-0.0001 * i)\n", " loss = dcgpann.sgd(X_train, Y_train, lr, 32, \"MSE\", parallel = 4)\n", " res.append(loss)\n", "elapsed = timeit.default_timer() - start_time\n", "\n", "# Print the time taken to train and the final result on the test set\n", "print(\"Time (s): \", elapsed)\n", "print(\"End MSE: \", dcgpann.loss(X_test,Y_test, \"MSE\"))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Same training is done using Keras (Tensor Flow backend)\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "import keras\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from keras.models import Sequential\n", "from keras.layers import Dense, Activation\n", "from keras import optimizers\n", "\n", "# We define Stochastic Gradient Descent as an optimizer\n", "sgd = optimizers.SGD(lr=0.3)\n", "# We define weight initializetion\n", "initializerw = keras.initializers.RandomNormal(mean=0.0, stddev=std, seed=None)\n", "initializerb = keras.initializers.RandomNormal(mean=0.0, stddev=std, seed=None)\n", "\n", "model = Sequential([\n", " Dense(50, input_dim=2, kernel_initializer=initializerw, bias_initializer=initializerb),\n", " Activation('sigmoid'),\n", " Dense(20, kernel_initializer=initializerw, bias_initializer=initializerb),\n", " Activation('sigmoid'),\n", " Dense(1, kernel_initializer=initializerw, bias_initializer=initializerb),\n", " Activation('sigmoid'),\n", "])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# For a mean squared error regression problem\n", "model.compile(optimizer=sgd,\n", " loss='mse')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Train the model, iterating on the data in batches of 32 samples\n", "start_time = timeit.default_timer()\n", "history = model.fit(X_train, Y_train, epochs=5000, batch_size=32, verbose=False)\n", "elapsed = timeit.default_timer() - start_time" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time (s): 115.98968720703851\n", "800/800 [==============================] - 0s 52us/step\n", "End MSE: 0.018288641115650536\n" ] } ], "source": [ "# Print the time taken to train and the final result on the test set\n", "print(\"Time (s): \", elapsed)\n", "print(\"End MSE: \", model.evaluate(X_train, Y_train))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# We plot for comparison the MSE during learning in the two cases\n", "plt.semilogy(np.sqrt(history.history['loss']), label='Keras')\n", "plt.semilogy(np.sqrt(res), label='dCGP')\n", "plt.title('dCGP vs Keras')\n", "plt.xlabel('epochs')\n", "plt.legend()\n", "_ = plt.ylabel('RMSE')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Repeating ten times the same comparison" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 5000/5000 [00:35<00:00, 142.21it/s]\n", "100%|██████████| 5000/5000 [00:33<00:00, 148.42it/s]\n", "100%|██████████| 5000/5000 [00:31<00:00, 156.85it/s]\n", "100%|██████████| 5000/5000 [00:32<00:00, 154.94it/s]\n", "100%|██████████| 5000/5000 [00:32<00:00, 152.80it/s]\n", "100%|██████████| 5000/5000 [00:31<00:00, 159.39it/s]\n", "100%|██████████| 5000/5000 [00:30<00:00, 161.65it/s]\n", "100%|██████████| 5000/5000 [00:33<00:00, 149.42it/s]\n", "100%|██████████| 5000/5000 [00:30<00:00, 162.77it/s]\n", "100%|██████████| 5000/5000 [00:31<00:00, 161.24it/s]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "epochs = 5000\n", "for i in range(10):\n", " # dCGP\n", " dcgpann = dcgpy.encode_ffnn(2,1,[50,20],[\"sig\", \"sig\", \"sig\"], 5)\n", " dcgpann.randomise_weights(mean = 0., std = std)\n", " dcgpann.randomise_biases(mean = 0., std = std)\n", " res = []\n", " for i in tqdm(range(epochs)):\n", " lr = lr0 #* np.exp(-0.0001 * i)\n", " loss = dcgpann.sgd(X_train, Y_train, lr, 32, \"MSE\", parallel = 4)\n", " res.append(loss)\n", " # Keras\n", " model = Sequential([\n", " Dense(50, input_dim=2, kernel_initializer=initializerw, bias_initializer=initializerb),\n", " Activation('sigmoid'),\n", " Dense(20, kernel_initializer=initializerw, bias_initializer=initializerb),\n", " Activation('sigmoid'),\n", " Dense(1, kernel_initializer=initializerw, bias_initializer=initializerb),\n", " Activation('sigmoid'),\n", " ])\n", " model.compile(optimizer=sgd, loss='mse')\n", " history = model.fit(X_train, Y_train, epochs=epochs, batch_size=32, verbose=False)\n", " plt.semilogy(np.sqrt(history.history['loss']), color = 'b')\n", " plt.semilogy(np.sqrt(res), color = 'C1')\n", "plt.title('dCGP vs Keras')\n", "plt.xlabel('epochs')\n", "_ = plt.ylabel('RMSE')\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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": 2 }