From 4199a20fd25df4e9b3ac38c95c3b78bae535cb48 Mon Sep 17 00:00:00 2001 From: udlbook <110402648+udlbook@users.noreply.github.com> Date: Wed, 26 Jul 2023 15:46:48 -0400 Subject: [PATCH] Delete 4_3_Deep_Networks_A.ipynb --- Notebooks/Chap04/4_3_Deep_Networks_A.ipynb | 460 --------------------- 1 file changed, 460 deletions(-) delete mode 100644 Notebooks/Chap04/4_3_Deep_Networks_A.ipynb diff --git a/Notebooks/Chap04/4_3_Deep_Networks_A.ipynb b/Notebooks/Chap04/4_3_Deep_Networks_A.ipynb deleted file mode 100644 index 5020c9e..0000000 --- a/Notebooks/Chap04/4_3_Deep_Networks_A.ipynb +++ /dev/null @@ -1,460 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "authorship_tag": "ABX9TyMrm0azMVRdPzZSpIuLANCD", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "source": [ - "# **Notebook 4.3 Deep neural networks**\n", - "\n", - "This notebook investigates converting neural networks to matrix form.\n", - "\n", - "Work through the cells below, running each cell in turn. In various places you will see the words \"TO DO\". Follow the instructions at these places and make predictions about what is going to happen or write code to complete the functions.\n", - "\n", - "Contact me at udlbookmail@gmail.com if you find any mistakes or have any suggestions." - ], - "metadata": { - "id": "MaKn8CFlzN8E" - } - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "8ClURpZQzI6L" - }, - "outputs": [], - "source": [ - "# Imports math library\n", - "import numpy as np\n", - "# Imports plotting library\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "source": [ - "# Define the Rectified Linear Unit (ReLU) function\n", - "def ReLU(preactivation):\n", - " activation = preactivation.clip(0.0)\n", - " return activation" - ], - "metadata": { - "id": "YdmveeAUz4YG" - }, - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "# Define a shallow neural network with, one input, one output, and three hidden units\n", - "def shallow_1_1_3(x, activation_fn, phi_0,phi_1,phi_2,phi_3, theta_10, theta_11, theta_20, theta_21, theta_30, theta_31):\n", - " # Initial lines\n", - " pre_1 = theta_10 + theta_11 * x\n", - " pre_2 = theta_20 + theta_21 * x\n", - " pre_3 = theta_30 + theta_31 * x\n", - " # Activation functions\n", - " act_1 = activation_fn(pre_1)\n", - " act_2 = activation_fn(pre_2)\n", - " act_3 = activation_fn(pre_3)\n", - " # Weight activations\n", - " w_act_1 = phi_1 * act_1\n", - " w_act_2 = phi_2 * act_2\n", - " w_act_3 = phi_3 * act_3\n", - " # Combine weighted activation and add y offset\n", - " y = phi_0 + w_act_1 + w_act_2 + w_act_3\n", - " # Return everything we have calculated\n", - " return y, pre_1, pre_2, pre_3, act_1, act_2, act_3, w_act_1, w_act_2, w_act_3" - ], - "metadata": { - "id": "ximCLwIfz8kj" - }, - "execution_count": 4, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "# # Plot the shallow neural network. We'll assume input in is range [-1,1] and output [-1,1]\n", - "# If the plot_all flag is set to true, then we'll plot all the intermediate stages as in Figure 3.3\n", - "def plot_neural(x, y):\n", - " fig, ax = plt.subplots()\n", - " ax.plot(x.T,y.T)\n", - " ax.set_xlabel('Input'); ax.set_ylabel('Output')\n", - " ax.set_xlim([-1,1]);ax.set_ylim([-1,1])\n", - " ax.set_aspect(1.0)\n", - " plt.show()" - ], - "metadata": { - "id": "btrt7BX20gKD" - }, - "execution_count": 5, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Let's define a networks. We'll just consider the inputs and outputs over the range [-1,1]. If you set the \"plot_all\" flat to True, you can see the details of how it was created." - ], - "metadata": { - "id": "LxBJCObC-NTY" - } - }, - { - "cell_type": "code", - "source": [ - "# Now lets define some parameters and run the first neural network\n", - "n1_theta_10 = 0.0 ; n1_theta_11 = -1.0\n", - "n1_theta_20 = 0 ; n1_theta_21 = 1.0\n", - "n1_theta_30 = -0.67 ; n1_theta_31 = 1.0\n", - "n1_phi_0 = 1.0; n1_phi_1 = -2.0; n1_phi_2 = -3.0; n1_phi_3 = 9.3\n", - "\n", - "# Define a range of input values\n", - "n1_in = np.arange(-1,1,0.01).reshape([1,-1])\n", - "\n", - "# We run the neural network for each of these input values\n", - "n1_out, *_ = shallow_1_1_3(n1_in, ReLU, n1_phi_0, n1_phi_1, n1_phi_2, n1_phi_3, n1_theta_10, n1_theta_11, n1_theta_20, n1_theta_21, n1_theta_30, n1_theta_31)\n", - "# And then plot it\n", - "plot_neural(n1_in, n1_out)" - ], - "metadata": { - "id": "JRebvurv22pT", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 455 - }, - "outputId": "908b2908-396c-4dbf-f596-867c7f26a284" - }, - "execution_count": 6, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Now we'll define the same neural network, but this time, we will use matrix form. When you get this right, it will draw the same plot as above." - ], - "metadata": { - "id": "XCJqo_AjfAra" - } - }, - { - "cell_type": "code", - "source": [ - "beta_0 = np.zeros((3,1))\n", - "Omega_0 = np.zeros((3,1))\n", - "beta_1 = np.zeros((1,1))\n", - "Omega_1 = np.zeros((1,3))\n", - "\n", - "# TODO Fill in the values of the beta and Omega matrices with the n1_theta and n1_phi parameters that define the network above\n", - "# !!! NOTE THAT MATRICES ARE CONVENTIONALLY INDEXED WITH a_11 IN THE TOP LEFT CORNER, BUT NDARRAYS START AT [0,0]\n", - "# To get you started I've filled in a couple:\n", - "beta_0[0,0] = n1_theta_10\n", - "Omega_0[0,0] = n1_theta_11\n", - "\n", - "# SOLUTION\n", - "beta_0[0,0] = n1_theta_10\n", - "beta_0[1,0] = n1_theta_20\n", - "beta_0[2,0] = n1_theta_30\n", - "Omega_0[0,0] = n1_theta_11\n", - "Omega_0[1,0] = n1_theta_21\n", - "Omega_0[2,0] = n1_theta_31\n", - "beta_1[0,0] = n1_phi_0\n", - "Omega_1[0,0] = n1_phi_1\n", - "Omega_1[0,1] = n1_phi_2\n", - "Omega_1[0,2] = n1_phi_3\n", - "# END_SOLUTION\n", - "\n", - "# Make sure that input data matrix has different inputs in its columns\n", - "n_data = n1_in.size\n", - "n_dim_in = 1\n", - "n1_in_mat = np.reshape(n1_in,(n_dim_in,n_data))\n", - "\n", - "# This runs the network for ALL of the inputs, x at once so we can draw graph\n", - "h1 = ReLU(np.matmul(beta_0,np.ones((1,n_data))) + np.matmul(Omega_0,n1_in_mat))\n", - "n1_out = np.matmul(beta_1,np.ones((1,n_data))) + np.matmul(Omega_1,h1)\n", - "\n", - "# Draw the network and check that it looks the same as the non-matrix case\n", - "plot_neural(n1_in, n1_out)" - ], - "metadata": { - "id": "MR0AecZYfACR", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 455 - }, - "outputId": "6b81b34f-2e19-4ce8-9aeb-925a950edbd2" - }, - "execution_count": 7, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Now we'll feed the output of the first network into the second one." - ], - "metadata": { - "id": "qOcj2Rof-o20" - } - }, - { - "cell_type": "code", - "source": [ - "# Now lets define some parameters and run the second neural network\n", - "n2_theta_10 = -0.6 ; n2_theta_11 = -1.0\n", - "n2_theta_20 = 0.2 ; n2_theta_21 = 1.0\n", - "n2_theta_30 = -0.5 ; n2_theta_31 = 1.0\n", - "n2_phi_0 = 0.5; n2_phi_1 = -1.0; n2_phi_2 = -1.5; n2_phi_3 = 2.0\n", - "\n", - "# Define a range of input values\n", - "n2_in = np.arange(-1,1,0.01)\n", - "\n", - "# We run the second neural network on the output of the first network\n", - "n2_out, *_ = \\\n", - " shallow_1_1_3(n1_out, ReLU, n2_phi_0, n2_phi_1, n2_phi_2, n2_phi_3, n2_theta_10, n2_theta_11, n2_theta_20, n2_theta_21, n2_theta_30, n2_theta_31)\n", - "# And then plot it\n", - "plot_neural(n1_in, n2_out)" - ], - "metadata": { - "id": "ZRjWu8i9239X", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 455 - }, - "outputId": "7632b857-b950-41cd-9fe7-b0f417aadfa4" - }, - "execution_count": 8, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "beta_0 = np.zeros((3,1))\n", - "Omega_0 = np.zeros((3,1))\n", - "beta_1 = np.zeros((3,1))\n", - "Omega_1 = np.zeros((3,3))\n", - "beta_2 = np.zeros((1,1))\n", - "Omega_2 = np.zeros((1,3))\n", - "\n", - "# TODO Fill in the values of the beta and Omega matrices for with the n1_theta, n1_phi, n2_theta, and n2_phi parameters\n", - "# that define the composition of the two networks above (see eqn 4.5 for Omega1 and beta1 albeit in different notation)\n", - "# !!! NOTE THAT MATRICES ARE CONVENTIONALLY INDEXED WITH a_11 IN THE TOP LEFT CORNER, BUT NDARRAYS START AT [0,0] SO EVERYTHING IS OFFSET\n", - "# To get you started I've filled in a few:\n", - "beta_0[0,0] = n1_theta_10\n", - "Omega_0[0,0] = n1_theta_11\n", - "beta_1[0,0] = n2_theta_10 + n2_theta_11 * n1_phi_0\n", - "Omega_1[0,0] = n2_theta_11 * n1_phi_1\n", - "\n", - "# SOLUTION\n", - "beta_0[0,0] = n1_theta_10\n", - "beta_0[1,0] = n1_theta_20\n", - "beta_0[2,0] = n1_theta_30\n", - "Omega_0[0,0] = n1_theta_11\n", - "Omega_0[1,0] = n1_theta_21\n", - "Omega_0[2,0] = n1_theta_31\n", - "beta_1[0,0] = n2_theta_10 + n2_theta_11 * n1_phi_0\n", - "beta_1[1,0] = n2_theta_20 + n2_theta_21 * n1_phi_0\n", - "beta_1[2,0] = n2_theta_30 + n2_theta_31 * n1_phi_0\n", - "Omega_1[0,0] = n2_theta_11 * n1_phi_1\n", - "Omega_1[1,0] = n2_theta_21 * n1_phi_1\n", - "Omega_1[2,0] = n2_theta_31 * n1_phi_1\n", - "Omega_1[0,1] = n2_theta_11 * n1_phi_2\n", - "Omega_1[1,1] = n2_theta_21 * n1_phi_2\n", - "Omega_1[2,1] = n2_theta_31 * n1_phi_2\n", - "Omega_1[0,2] = n2_theta_11 * n1_phi_3\n", - "Omega_1[1,2] = n2_theta_21 * n1_phi_3\n", - "Omega_1[2,2] = n2_theta_31 * n1_phi_3\n", - "beta_2[0,0] = n2_phi_0\n", - "Omega_2[0,0] = n2_phi_1\n", - "Omega_2[0,1] = n2_phi_2\n", - "Omega_2[0,2] = n2_phi_3\n", - "# END_SOLUTION\n", - "\n", - "# Make sure that input data matrix has different inputs in its columns\n", - "n_data = n1_in.size\n", - "n_dim_in = 1\n", - "n1_in_mat = np.reshape(n1_in,(n_dim_in,n_data))\n", - "\n", - "# This runs the network for ALL of the inputs, x at once so we can draw graph (hence extra np.ones term)\n", - "h1 = ReLU(np.matmul(beta_0,np.ones((1,n_data))) + np.matmul(Omega_0,n1_in_mat))\n", - "h2 = ReLU(np.matmul(beta_1,np.ones((1,n_data))) + np.matmul(Omega_1,h1))\n", - "n1_out = np.matmul(beta_2,np.ones((1,n_data))) + np.matmul(Omega_2,h2)\n", - "\n", - "# Draw the network and check that it looks the same as the non-matrix version\n", - "plot_neural(n1_in, n1_out)" - ], - "metadata": { - "id": "ZB2HTalOE40X", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 455 - }, - "outputId": "e88b99e4-ee8e-4574-8ff1-aefa25d7c31b" - }, - "execution_count": 10, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Now let's make a deep network with 3 hidden layers. It will have $D_i=4$ inputs, $D_1=5$ neurons in the first layer, $D_2=2$ neurons in the second layer and $D_3=4$ neurons in the third layer, and $D_o = 1$ output. Consult figure 4.6 and equations 4.15 for guidance." - ], - "metadata": { - "id": "0VANqxH2kyS4" - } - }, - { - "cell_type": "code", - "source": [ - "# define sizes\n", - "D_i=4; D_1=5; D_2=2; D_3=1; D_o=1\n", - "# We'll choose the inputs and parameters of this network randomly using np.random.normal\n", - "# For example, we'll set the input using\n", - "n_data = 4;\n", - "x = np.random.normal(size=(D_i, n_data))\n", - "# TODO initialize the parameters randomly with the correct sizes\n", - "# Replace the lines below\n", - "beta_0 = np.random.normal(size=(1,1))\n", - "Omega_0 = np.random.normal(size=(1,1))\n", - "beta_1 = np.random.normal(size=(1,1))\n", - "Omega_1 = np.random.normal(size=(1,1))\n", - "beta_2 = np.random.normal(size=(1,1))\n", - "Omega_2 = np.random.normal(size=(1,1))\n", - "beta_3 = np.random.normal(size=(1,1))\n", - "Omega_3 = np.random.normal(size=(1,1))\n", - "\n", - "# SOLUTION\n", - "beta_0 = np.random.normal(size=(D_1,1))\n", - "Omega_0 = np.random.normal(size=(D_1,D_i))\n", - "beta_1 = np.random.normal(size=(D_2,1))\n", - "Omega_1 = np.random.normal(size=(D_2,D_1))\n", - "beta_2 = np.random.normal(size=(D_3,1))\n", - "Omega_2 = np.random.normal(size=(D_3,D_2))\n", - "beta_3 = np.random.normal(size=(D_o,1))\n", - "Omega_3 = np.random.normal(size=(D_o,D_3))\n", - "# END_SOLUTION\n", - "\n", - "# If you set the parameters to the correct sizes, the following code will run\n", - "h1 = ReLU(np.matmul(beta_0,np.ones((1,n_data))) + np.matmul(Omega_0,x));\n", - "h2 = ReLU(np.matmul(beta_1,np.ones((1,n_data))) + np.matmul(Omega_1,h1));\n", - "h3 = ReLU(np.matmul(beta_2,np.ones((1,n_data))) + np.matmul(Omega_2,h2));\n", - "y = np.matmul(beta_3,np.ones((1,n_data))) + np.matmul(Omega_3,h3)\n", - "\n", - "if h1.shape[0] is not D_1 or h1.shape[1] is not n_data:\n", - " print(\"h1 is wrong shape\")\n", - "if h2.shape[0] is not D_2 or h1.shape[1] is not n_data:\n", - " print(\"h2 is wrong shape\")\n", - "if h3.shape[0] is not D_3 or h1.shape[1] is not n_data:\n", - " print(\"h3 is wrong shape\")\n", - "if y.shape[0] is not D_o or h1.shape[1] is not n_data:\n", - " print(\"Output is wrong shape\")\n", - "\n", - "# Print the inputs and outputs\n", - "print(\"Input data points\")\n", - "print(x)\n", - "print (\"Output data points\")\n", - "print(y)" - ], - "metadata": { - "id": "RdBVAc_Rj22-", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "f76eca44-9889-4067-a390-cfb639ad4e3b" - }, - "execution_count": 14, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Input data points\n", - "[[-1.34479025 -0.09347927 0.80388446 -0.74850915]\n", - " [ 1.31322276 -0.90490069 0.20703949 -0.08676201]\n", - " [ 0.88545612 0.43081393 -1.81524997 0.95678085]\n", - " [-0.41210515 0.484057 -0.76302991 1.08531186]]\n", - "Output data points\n", - "[[-0.12293141 -0.0223142 -0.04118239 -0.0223142 ]]\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "LcQ2NZtRmmEh" - }, - "execution_count": 13, - "outputs": [] - } - ] -} \ No newline at end of file