diff --git a/notebooks/Block_2/Exercises Block 2 - Neural Networks.ipynb b/notebooks/Block_2/Exercises Block 2 - Neural Networks.ipynb index 34838d4dba745894a5811d725b0aa268bb056ff3..848b5ae60deb427664171e5e2cdc2990a7b27df1 100644 --- a/notebooks/Block_2/Exercises Block 2 - Neural Networks.ipynb +++ b/notebooks/Block_2/Exercises Block 2 - Neural Networks.ipynb @@ -7,7 +7,7 @@ "id": "YHI3vyhv5p85" }, "source": [ - "# Exercise 1 : Conversion from Celsius to Fahrenheit" + "# Exercise 1 : Conversion from Celsius to Fahrenheit (Simple Regression Analysis)" ] }, { @@ -26,7 +26,7 @@ "\n", "\n", "Instead, we will give TensorFlow some sample Celsius values (0, 8, 15, 22, 38) and their corresponding Fahrenheit values (32, 46, 59, 72, 100).\n", - "Then, we will train a model that figures out the above formula through the training process." + "Then, we will train a model that figures out the above formula through the training process. This is a _simple regression analysis_ problem." ] }, { @@ -434,12 +434,12 @@ "\n", "### Datset\n", "\n", - "We investigate the data set of the challenger flight with broken O-rings (Y=1) vs start temperature." + "We investigate the data set of the challenger flight with broken O-rings (`Y=1`) versus start temperature." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -448,13 +448,13 @@ "Text(0, 0.5, 'Broken O-rings')" ] }, - "execution_count": 1, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -474,7 +474,7 @@ "import numpy as np\n", "import pandas as pd\n", "import tempfile\n", - "data = np.asarray(pd.read_csv('./Daten/challenger.txt', sep=','), dtype='float32')\n", + "data = np.asarray(pd.read_csv('./challenger.txt', sep=','), dtype='float32')\n", "plt.plot(data[:,0], data[:,1], 'o')\n", "plt.axis([40, 85, -0.1, 1.2])\n", "plt.xlabel('Temperature [F]')\n", @@ -483,11 +483,20 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0. 1.]\n" + ] + } + ], "source": [ - "y_values = data[:,1]" + "y_values = data[:,1]\n", + "print(y_values)" ] }, { @@ -496,7 +505,7 @@ "source": [ "## Mathematical Notes\n", "\n", - "We are considering the likelihood $P(y_i=1|x_i)$ for the class $y_i=1$ given the $i-$th data point $x_i$ ($x_i$ could be a vector). This is given by:\n", + "We are considering the probability $P(y_i=1|x_i)$ for the class $y_i=1$ given the $i-$th data point $x_i$ ($x_i$ could be a vector). This is given by:\n", "\n", "$\n", "P(y_i=1 | x_i) = \\frac{e^{(b + x_i w)}}{1 + e^{(b + x_i w)}} = [1 + e^{-(b + x_i w)}]^{-1}\n", @@ -515,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -536,10 +545,11 @@ "# Initial Value for the weights\n", "w = -0.20\n", "b = 20.0\n", - "# Log-Likelihood \n", + "# predicted probabilities \n", "p_1 = 1 / (1 + np.exp(-x*w - b))\n", - "like = y * np.log(p_1) + (1-y) * np.log(1-p_1)\n", - "print(-np.mean(like))\n", + "# cross-entropy loss function\n", + "cross_entropy = y * np.log(p_1) + (1-y) * np.log(1-p_1)\n", + "print(-np.mean(cross_entropy))\n", "print(np.round(p_1,3))" ] }, @@ -563,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -577,7 +587,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAG/JJREFUeJzt3X+cVXW97/HXZ/bMwIjID8GBGWYEDUEYCmwSEY6SVvLD/FHn3qSsU8fiVnJuP87DkpsP61rdPOm9Rx9lGmlZetKj5jFuUtRNe1SoHEZRERAFkR+D/BAEQYZhfnzuH2sPbYbZP2Zm773WrHk/Hw8ee++11t7r7Vd4z5rvWntvc3dERCS+SsIOICIihaWiFxGJORW9iEjMqehFRGJORS8iEnMqehGRmMta9Gb2UzPbbWYvpVn/CTN70czWmNlTZvae/McUEZGeyuWI/l5gTob1m4EL3X0K8G1gSR5yiYhInpRm28Dd/2xmYzOsfyrl4TPAmN7HEhGRfMla9N10DfDbdCvNbCGwEGDQoEHvnThxYp53LyISb88+++yb7j6yO8/JW9Gb2fsJin5Wum3cfQnJqZ36+npvaGjI1+5FRPoFM9vS3efkpejN7N3A3cBcd9+bj9cUEZH86PXllWZWCzwKfNLdX+l9JBERyaesR/Rm9gAwGxhhZtuBbwJlAO5+F3AjcCrwIzMDaHX3+kIFFhGR7snlqpsFWdZ/Fvhs3hKJiEhe6Z2xIiIxp6IXEYk5Fb2ISMyp6EVEYk5FLyIScyp6EZGYU9GLiMScil5EJOZU9CIiMaeiFxGJORW9iEjMqehFRGJORS8iEnMqehGRmFPRi4jEnIpeRCTmVPQiIjGnohcRiTkVvYhIzKnoRURiTkUvIhJzKnoRkZhT0YuIxJyKXkQk5lT0IiIxV5ptAzP7KXApsNvd67pYb8DtwDzgMPBpd38u30Elfx5b3cgtyzewY38TVUMruO6SCVwxrTrU/YaVqad5+6IbHlvDAyu30eZOwowF02v4zhVTwo4Vu3GOoqxFD9wL/BD4RZr1c4HxyT/TgTuTtxJBj61uZPGja2hqaQOgcX8Tix9dA1DQf1yZ9guEkimTsMapUG54bA33P7P12OM292OPwyz7uI1zVJm7Z9/IbCzwmzRH9D8G/uTuDyQfbwBmu/sbmV6zfky5N1w7qieZpRcONrfQ1f9yMxg8oCz5IJdXStnI7G/LTrgf3O451EKLQzsluBvtGI5RkkjQSoKmthJaSNBKKa0kaPEElFXwd5PHQvnJUD4ouB1wcnA7eBQMqYGhNTBwSE+HI62ZNz9B4/6mE5ZXD61gxfUX5X1/hXbm4mW0dfE/PmHGpu/NCyFRIG7jXAxm9qy713fnObkc0WdTDWxLebw9ueyEojezhcBCgEnVp8DUj+dh99IdD6/YnHbdP04fB2T/wX/8TwpPWdbpfsd23s4f/3MrhlNCOyXmx+4nWtsppY1S2iijjVJaKbM2BtkRBrYehO1vwtFDcPQdaDncdZ4BQ2DImKD0h42FcRfAuAuDHwo9tKOL8sm0POq6KvlMy4slbuMcVfko+py5+xJgCUB9fb0z9+Zi7l6Ae15IfwT1j3MLdwT1g3Xp9wukP6r7Ukqm9rag8JsPwsE3YP9WOLAN9m+DA9uD+5v/AivvgkQ5jP07OGsOnPWh4AdAN1QNregyU1Uyb1+TMEt7RB+muI1zVOXjqptGoCbl8ZjkMomg6y6ZQEVZ4rhlFWUJrrtkQmj7zTlTSQIGngJDqmFMPdR9BGZ+CebfCh9/EL6wAr7+OnxqKZy7EPZvgd9eB7e/B+6YDk98B5oP9TpvX7Rgek23lhdL3MY5qvJxRL8UWGRmDxKchD2QbX5ewtNxgqvYVznkst+8ZCothzMuDP5c8l3YuwleWQ6vLoc/3wov/Qo+ejdUv7fXefuSjhOuUbvqJm7jHFVZT8aa2QPAbGAEsAv4JlAG4O53JS+v/CEwh+Dyys+4e0O2HdfX13tDQ9bNRPLn9RXw6EI4tBNmL4ZZXwl+SxDpQ3pyMjanq24KQUUvoWjaD49/NTiyrz0fPvJjGFobdiqRnPWk6PXOWOlfKobCR++BK5fAzjVw5yxY80jYqUQKSkUv/Y8ZvOdj8IW/wmkT4VfXwNL/TpdvMBCJARW99F/DxsKnl8GMRfDcz2Hto2EnEikIFb30b4lS+OBNMHoq/G5xMIcvEjMqepGSBHz4NnhnDzzx7bDTiOSdil4EoGoanPvfYNU9sF1Xg0m8qOhFOlz0DRg8Gv7vl6GtNew0InmjohfpMGAwzP0X2LUGVt4ZdhqRvFHRi6Q6+8PBB6E9+b+CD00TiQEVvUgqM5h3S3B/2dd0bb3EgopepLOhtcFn4bzyW3j5N2GnEek1Fb1IV877AlTWBUf1zQfDTiPSKyp6ka4kyuDS24IvOPmTviBH+jYVvUg6Ne8Lvtxk9f263FL6NBW9SCaTr4Qj+2HrU2EnEekxFb1IJmdeBKUD4eXHw04i0mMqepFMygcFZf/y47rUUvosFb1INhPnw4Ft8MYLYScR6REVvUg2Z80BK9H0jfRZKnqRbAaNgNoZKnrps1T0IrmYOB92r4V9r4WdRKTbVPQiuZg4P7h9eVm4OUR6QEUvkothY6FyiqZvpE9S0YvkauJ82PYMHNoTdhKRbsmp6M1sjpltMLONZnZ9F+trzexJM1ttZi+a2bz8RxUJ2cT54O3wyu/CTiLSLVmL3swSwB3AXGASsMDMJnXa7AbgIXefBlwF/CjfQUVCN2oKDKnVRxdLn5PLEf25wEZ3f83djwIPApd32saBU5L3hwA78hdRJCLMgqP6TU9C86Gw04jkLJeirwa2pTzenlyW6lvA1Wa2HVgG/FNXL2RmC82swcwa9uzRPKf0QRPnQ1szbPpj2ElEcpavk7ELgHvdfQwwD7jPzE54bXdf4u717l4/cuTIPO1apIhqZ0DFMF19I31KLkXfCNSkPB6TXJbqGuAhAHd/GhgIjMhHQJFISZTCWXODE7JtLWGnEclJLkW/ChhvZuPMrJzgZOvSTttsBS4GMLOzCYpeczMSTxPnw5EDsGVF2ElEcpK16N29FVgELAfWE1xds9bMbjKzy5Kb/TPwOTN7AXgA+LS7PtNVYurMi6C0QtM30meU5rKRuy8jOMmauuzGlPvrgJn5jSYSUeUnwbsuDop+7veDq3FEIkzvjBXpiYnz4e1G2LE67CQiWanoRXqi4zPqN+hDziT6VPQiPXHScBj1bti2MuwkIlmp6EV6qmoa7HhB3yUrkaeiF+mpqqnQfEBfRiKRp6IX6anRU4PbN54PN4dIFip6kZ46bRIkymGHil6iTUUv0lOl5VA5WZdYSuSp6EV6Y/RUeONFnZCVSFPRi/RG1TSdkJXIU9GL9EZV8oSspm8kwlT0Ir0x8mxIDNCVNxJpKnqR3jh2QlZFL9Glohfpraqp8MYL0N4edhKRLqnoRXqraho0vw1vbQ47iUiXVPQivTVaJ2Ql2lT0Ir11WvKErIpeIkpFL9JbiTIYVRfM04tEkIpeJB9GTw2uvNEJWYkgFb1IPlRNhaMH9Q5ZiSQVvUg+VE0LbvXGKYkgFb1IPoycqBOyElkqepF8SJTBqCl6h6xEkopeJF/0DlmJKBW9SL6M7jghuynsJCLHyanozWyOmW0ws41mdn2abf6rma0zs7Vm9sv8xhTpAzpOyGr6RiIma9GbWQK4A5gLTAIWmNmkTtuMBxYDM919MvDlAmQVibaRE6F0oK68kcjJ5Yj+XGCju7/m7keBB4HLO23zOeAOd38LwN135zemSB+QKIXKOl15I5GTS9FXA9tSHm9PLkt1FnCWma0ws2fMbE5XL2RmC82swcwa9uzZ07PEIlFWNS34DlmdkJUIydfJ2FJgPDAbWAD8xMyGdt7I3Ze4e727148cOTJPuxaJkCqdkJXoyaXoG4GalMdjkstSbQeWunuLu28GXiEofpH+RR9ZLBGUS9GvAsab2TgzKweuApZ22uYxgqN5zGwEwVSOPvRD+p+OE7K68kYiJGvRu3srsAhYDqwHHnL3tWZ2k5ldltxsObDXzNYBTwLXufveQoUWiaxEafIdsjqil+gozWUjd18GLOu07MaU+w58NflHpH+rmgbP/zI4IVui9yRK+PS3UCTfRk+Fo4dg78awk4gAKnqR/KvSCVmJFhW9SL6NmBCckN35YthJRAAVvUj+JUqDq292vRR2EhFARS9SGKPqYOdL4B52EhEVvUhBVE6Bw2/CoV1hJxFR0YsUxKi64Hanpm8kfCp6kUKonBzc7loTbg4RVPQihVExDIbU6IheIkFFL1IolXW68kYiQUUvUiij6uDNV6GlKewk0s+p6EUKpbIOvA12rw87ifRzKnqRQhk1JbjV9I2ETEUvUijDxkHZIJ2QldCp6EUKpaQkuMxSR/QSMhW9SCHpoxAkAlT0IoVUWQfNB+DAtrCTSD+mohcppI4TspqnlxCp6EUK6bRJgGmeXkKlohcppAEnw/BxsFOfeSPhUdGLFJo+CkFCpqIXKbRRU2DfZmg+FHYS6adU9CKFVlkHOOxeF3YS6adU9CKFduxLSDRPL+HIqejNbI6ZbTCzjWZ2fYbtPmpmbmb1+Yso0scNqYGBQzRPL6HJWvRmlgDuAOYCk4AFZjapi+0GA18CVuY7pEifZhZM3+haeglJLkf05wIb3f01dz8KPAhc3sV23wb+BTiSx3wi8VBZB7vWQnt72EmkH8ql6KuB1Pdvb08uO8bMzgFq3P3xTC9kZgvNrMHMGvbs2dPtsCJ91qg6aHkH3tocdhLph3p9MtbMSoD/A/xztm3dfYm717t7/ciRI3u7a5G+ozJ5Qlbz9BKCXIq+EahJeTwmuazDYKAO+JOZvQ6cByzVCVmRFKedDZbQlTcSilyKfhUw3szGmVk5cBWwtGOlux9w9xHuPtbdxwLPAJe5e0NBEov0RWUVMGK8TshKKLIWvbu3AouA5cB64CF3X2tmN5nZZYUOKBIb+igECUlpLhu5+zJgWadlN6bZdnbvY4nE0Kg6eOkRaHoLKoaFnUb6Eb0zVqRYKju+LHxtuDmk31HRixTLsY9C0PSNFJeKXqRYTq6Ek0bALl15I8WlohcpFrO/fVm4SBGp6EWKqbIOdq+Httawk0g/oqIXKaZRU6CtGfZuDDuJ9CMqepFiqpoW3G5fFW4O6VdU9CLFNOKs4ITslhVhJ5F+REUvUkxmMHYmvP7XsJNIP6KiFym202fBgW3w1pawk0g/oaIXKbaxM4NbTd9IkajoRYpt5NlQMVzTN1I0KnqRYispgdPPV9FL0ajoRcIwdhbs3wL7t2XfVqSXVPQiYRg7K7jVPL0UgYpeJAynTYaBQzV9I0WhohcJQ8c8vY7opQhU9CJhOX0m7HsN3t4RdhKJORW9SFg65ulf11G9FJaKXiQso6bAgCGwRfP0UlgqepGwlCSg9jwd0UvBqehFwjR2Fux9FQ7uDDuJxJiKXiRM+twbKQIVvUiYRr0Hygdr+kYKKqeiN7M5ZrbBzDaa2fVdrP+qma0zsxfN7I9mdnr+o4rEUKIUaqfrjVNSUFmL3swSwB3AXGASsMDMJnXabDVQ7+7vBh4Bvp/voCKxNXYWvLkBDu0JO4nEVC5H9OcCG939NXc/CjwIXJ66gbs/6e6Hkw+fAcbkN6ZIjJ2uz72Rwsql6KuB1I/Y255cls41wG97E0qkX6maCmWDNH0jBVOazxczs6uBeuDCNOsXAgsBamtr87lrkb4rURbM0+uIXgoklyP6RqAm5fGY5LLjmNkHgG8Al7l7c1cv5O5L3L3e3etHjhzZk7wi8XT6TNi9Dt7ZG3YSiaFcin4VMN7MxplZOXAVsDR1AzObBvyYoOR35z+mSMzp8+mlgLIWvbu3AouA5cB64CF3X2tmN5nZZcnNbgFOBh42s+fNbGmalxORrlSdA6UVKnopiJzm6N19GbCs07IbU+5/IM+5RPqX0nKoOVdvnJKC0DtjRaJi7CzY9ZI+90byTkUvEhV1Hw1uV90dbg6JHRW9SFSceiZMnA+r7oGjh7NvL5IjFb1IlMxYBE374IVfhp1EYkRFLxIltecFV+A8/SNobw87jcSEil4kSszg/EWwbxO88ruw00hMqOhFoubsy2FILTz9w7CTSEyo6EWiJlEK530+ePNU43Nhp5EYUNGLRNG0T8KAU+DpO8JOIjGgoheJooGnwDmfgrX/Afu3Zd9eJAMVvUhUTf98cLvyrnBzSJ+noheJqqE1MPlKeO4XcOTtsNNIH6aiF4myGddC89tB2Yv0kIpeJMqqzwm+lGTlXdDWGnYa6aNU9CJRN2MRHNgG638ddhLpo1T0IlF31hw49V3wl3+Flqaw00gfpKIXibqSErj4m8Fn1f/7J6G1y69kFklLRS/SF0y6DD58G2z8Azz8GWhrCTuR9CEqepG+4r2fhrm3wIbH4Vef1clZyVlO3xkrIhExfSG0NcPvb4DSAXDFnVCSCDuVRJyKXqSvOf+foPUIPPGdoOwvvT2YxxdJQ0Uv0hddcF1wUvbPt0CiHObdGnyWvUgXVPQifdX7vxEc2T/1AzhyAC78OowYH3YqiSAVvUhfZQYf/HZwRP/UD2DNwzD+Q3DeF+CM9+sIX47RxJ5IX2YGF98IX1kLsxfDjtVw35Xwoxnw7M/1BisBwNw9+0Zmc4DbgQRwt7vf3Gn9AOAXwHuBvcDH3P31TK9ZX1/vDQ0NPYwt0rc9trqRW5ZvYMf+JqqGVnDdJRO4Ylo1AJ/4ydOs2LTv2LYzzxzOv31uRk7PXdqwmReX38NHmpcyqWQLzeVDGXD2XKis42ebTuLOdRXs9lNImLFgeg3fuWJKr/Pmsr6nr33DY2t4YOU22tzzmrlQeYvBzJ519/puPSdb0ZtZAngF+CCwHVgFLHD3dSnbfBF4t7t/3syuAq50949lel0VvfRXj61uZPGja2hqaTu2rKIswfc+MoWHG7YeV/IdOso+03OBlHXOeSXr+UzZH7hg4GtUNO85tv0eH8L69lo2eA3VtWcw732T4KThUDEMKjpuh0KiLGveK6ZVZ13f07Fo2LKP+5/ZesJzrj6vNmvZ5z5O+ctbrLIvVNHPAL7l7pckHy8GcPfvpWyzPLnN02ZWCuwERnqGF1fRS3818+YnaNx/4pRK9dCKLpd3eP3m+RmfC6Rdd/TAbt5lWznbtjLRtjKhZBsTbBsDLcM7bC0BpQM50GI0eRlHvZRmymmhlDaMRKKUSdXDeKHxIEfaoM1LaKMEJzg3UFZWyowzRiTPFdjfbuHY+YM/v/omR1rajj2nw8CyBM0tbTicsM6ASyZXHvc6nf1pw57jyrhDRVnwnoN062ZPGJl+PLK8brbn5otd9W/dLvpcTsZWA6nfZbYdmJ5uG3dvNbMDwKnAm8cFNFsILASora3tTk6R2NiRpszTLe/tc3fsb8IZzB6fzNNMTlnjDKaJNV+rh6a3oGkfNO2Hw/vgyP7gip7WZn79lw2U00K5tTKAo5TTRgntJFrbmVR+ModaD5OwdkqtjQG0YMlqtlaHw4AHdc2x4z4/djOi9W3MujgebCX5MyHNseK+w+nXAaNaD0JXPwM63kycbt3ezF/wkvF1szw3TEW96sbdlwBLIDiiL+a+RaKiKs2Re7rluT4Xuj6irxpawc4DR2g74Rds47ANguHjgHFp9/nj1el/i1jxqYv4WobfMlYsvCjjf8/nMjy368yQMGPTF+dlfN1revibz4ovZs6b6XWzPTdvru3+1VS5XHXTCNSkPB6TXNblNsmpmyEEJ2VFpJPrLplwbAqhQ0VZgusumcDMM4d3+ZyO5Zmem2ndguk1dCXd8lzz5rK+p69dqMyFyhtluRzRrwLGm9k4gkK/Cvh4p22WAv8APA38PfBEpvl5kf6s46RdV1duXDGtOuNVN5me2yHd6wI9uoIl2z5zydTTsShU5kLkjbJcL6+cB9xGcHnlT939u2Z2E9Dg7kvNbCBwHzAN2Adc5e6vZXpNnYwVEem+nlx1k9McvbsvA5Z1WnZjyv0jwH/pzo5FRKQ49M5YEZGYU9GLiMScil5EJOZU9CIiMaeiFxGJORW9iEjMqehFRGJORS8iEnMqehGRmFPRi4jEnIpeRCTmcvpQs4Ls2OwgsCGUnac3gk5flhIRUcylTLlRptxFMVcUM01w98HdeUJRv3ikkw3d/QS2QjOzhqhlgmjmUqbcKFPuopgrqpm6+xxN3YiIxJyKXkQk5sIs+iUh7judKGaCaOZSptwoU+6imCsWmUI7GSsiIsWhqRsRkZhT0YuIxFzRit7MEma22sx+k3w8zsxWmtlGM/t3MysvVpYsue41s81m9nzyz9Qi53ndzNYk992QXDbczP5gZq8mb4dFINO3zKwxZZzmFTnTUDN7xMxeNrP1ZjYj7HHKkCu0sTKzCSn7fd7M3jazL4c5Vhkyhf136itmttbMXjKzB8xsYNg9lSZTtzuqaHP0ZvZVoB44xd0vNbOHgEfd/UEzuwt4wd3vLEqYzLnuBX7j7o8UO0syz+tAvbu/mbLs+8A+d7/ZzK4Hhrn710PO9C3gkLvfWqwcnTL9HPiLu9+d/Md3EvA/CHGcMuT6MiGOVUq2BNAITAeuJeSx6iLTZwhpnMysGvgrMMndm5L9tAyYR0g9lSHTbLrZUUU5ojezMcB84O7kYwMuAjqC/hy4ohhZMuWKsMsJxghCGqsoMbMhwAXAPQDuftTd9xPyOGXIFRUXA5vcfQvR+TuVmilspUCFmZUS/IB+g/B7qnOmHT15kWJN3dwGfA1oTz4+Fdjv7q3Jx9uB6iJlyZSrw3fN7EUz+1czG1DkTA783syeNbOFyWWV7v5G8v5OoDICmQAWJcfpp0WeJhkH7AF+ZsG0291mNojwxyldLghvrFJdBTyQvB/2WHVIzQQhjZO7NwK3AlsJCv4A8Cwh9lRXmdz998nV3eqoghe9mV0K7Hb3Zwu9r+7IkGsxMBF4HzAcKPavs7Pc/RxgLnCtmV2QutKDubZiXxPbVaY7gTOBqQR/Cf93EfOUAucAd7r7NOAd4PrUDUIap3S5whwrAJLTSJcBD3deF9JYdZUptHFK/lC5nOCHdRUwCJhTrP3nmsnMrqYHHVWMI/qZwGXJed4HCX4Vuh0Ymvx1BGAMwTxdMZ2Qy8zud/c3PNAM/Aw4t5ihkj/FcffdwH8k97/LzEYDJG93h53J3Xe5e5u7twM/objjtB3Y7u4rk48fISjYUMcpXa6Qx6rDXOA5d9+VfBz2WJ2QKeRx+gCw2d33uHsL8ChBR4TZU11lOr8nHVXwonf3xe4+xt3HEvya9oS7fwJ4Evj75Gb/APy60FlyyHV1yl9+I5iPe6lYmcxskJkN7rgPfCi5/6UEYwRFHqt0mTrGKelKijhO7r4T2GZmE5KLLgbWEeI4ZcoV5lilWMDxUyShjlXScZlCHqetwHlmdlLy337H36kwe6qrTOt71FHuXrQ//O1sMcAZwH8CGwl+dRtQzCwZcj0BrEkO3v3AyUXMcQbwQvLPWuAbyeWnAn8EXgX+HzA8ApnuS47TiwSlMbrI/8+mAg3J/T8GDAtznLLkCnusBgF7gSEpy0IdqzSZwh6n/wm8nPy3fx8wIOyeSpOp2x2lj0AQEYk5vTNWRCTmVPQiIjGnohcRiTkVvYhIzKnoRURiTkUvIhJzKnoRkZj7/59+/+kfl3ZTAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -598,9 +608,13 @@ "y_pred = 1 / (1 + np.exp(-x_pred*w_val - b_val))\n", "plt.plot(x_pred, y_pred)\n", "\n", + "# predicted probabilities\n", "p_1 = 1 / (1 + np.exp(-x*w_val - b_val))\n", - "like = y * np.log(p_1) + (1-y) * np.log(1-p_1)\n", - "print(-np.mean(like))\n", + "\n", + "# cross-entropy loss function\n", + "cross_entropy = -np.mean(y * np.log(p_1) + (1-y) * np.log(1-p_1))\n", + " \n", + "print(cross_entropy)\n", "print(np.round(p_1,3))" ] }, @@ -608,7 +622,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## TODO : set up a Keras model" + "We can see that the value of the cross-entropy has decreased from 3.882916 to 0.9094435." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO : determine the accuracy of this logistic regression model and the value of the cross-entropy function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO : set up a Keras model\n", + "\n", + "If there are two labels, we use `binary_crossentropy` as loss function. In this case, we use" ] }, { @@ -635,8 +665,6 @@ } ], "source": [ - "from keras.utils import to_categorical\n", - "y_binary = to_categorical(y)\n", "l0 = tf.keras.layers.Dense(<--- your code here ---->)\n", "model = tf.keras.Sequential([l0])\n", "model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01))\n", diff --git a/notebooks/Block_2/Solutions to Exercises - Block 2.ipynb b/notebooks/Block_2/Solutions to Exercises - Block 2.ipynb index 6bbe5139f8f44eda4a56489aa50a4d44bc0157a2..e858721b511be9b97159c405339394230626ecc6 100644 --- a/notebooks/Block_2/Solutions to Exercises - Block 2.ipynb +++ b/notebooks/Block_2/Solutions to Exercises - Block 2.ipynb @@ -7,7 +7,7 @@ "id": "YHI3vyhv5p85" }, "source": [ - "# Exercise 1 : Conversion from Celsius to Fahrenheit" + "# Exercise 1 : Conversion from Celsius to Fahrenheit (Simple Regression Analysis)" ] }, { @@ -25,8 +25,8 @@ "Of course, it would be simple enough to create a conventional Python function that directly performs this calculation, but that wouldn't be machine learning.\n", "\n", "\n", - "Instead, we will give `TensorFlow` some sample Celsius values (0, 8, 15, 22, 38) and their corresponding Fahrenheit values (32, 46, 59, 72, 100).\n", - "Then, we will train a model that figures out the above formula through the training process." + "Instead, we will give TensorFlow some sample Celsius values (0, 8, 15, 22, 38) and their corresponding Fahrenheit values (32, 46, 59, 72, 100).\n", + "Then, we will train a model that figures out the above formula through the training process. This is a _simple regression analysis_ problem." ] }, { @@ -454,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", @@ -466,19 +466,19 @@ "output_type": "stream", "text": [ "Finished training the model\n", - "[[211.74744]]\n", - "Model predicts that 100 degrees Celsius is: [[211.74744]] degrees Fahrenheit\n", - "These are the l0 variables: [array([[-0.07715903, -0.20700853, 0.09303203, -0.7815757 ]],\n", - " dtype=float32), array([ 2.2330647, -3.0049088, 2.656292 , -3.0834572], dtype=float32)]\n", - "These are the l1 variables: [array([[ 0.37331566, 0.670332 , -0.6500106 , -0.16718145],\n", - " [-0.13477354, -0.1432596 , 0.85609394, 0.2517057 ],\n", - " [ 1.290541 , 0.86174154, -0.10719326, 0.621717 ],\n", - " [ 0.2648061 , -0.6288689 , 1.0755255 , -0.2527884 ]],\n", - " dtype=float32), array([ 2.6429222, 2.9728847, -2.9935007, 2.8113384], dtype=float32)]\n", - "These are the l2 variables: [array([[ 0.8368167],\n", - " [ 0.8074423],\n", - " [-1.373887 ],\n", - " [ 0.3907403]], dtype=float32), array([2.95269], dtype=float32)]\n" + "[[211.74745]]\n", + "Model predicts that 100 degrees Celsius is: [[211.74745]] degrees Fahrenheit\n", + "These are the l0 variables: [array([[-0.47996262, 0.25047022, -0.1492717 , 0.11854655]],\n", + " dtype=float32), array([-3.2115366, 3.1785958, -2.868187 , 2.7906501], dtype=float32)]\n", + "These are the l1 variables: [array([[ 1.1949005 , 0.80858207, 0.48969162, 0.57684636],\n", + " [-0.31273484, -1.1010896 , -0.36613086, 0.34995782],\n", + " [-0.07984556, 0.8192047 , -0.63080776, -0.01728256],\n", + " [-0.8315819 , 0.24608922, 0.9040395 , 0.02908712]],\n", + " dtype=float32), array([-3.1562395 , -3.0874147 , 2.3403091 , -0.54884386], dtype=float32)]\n", + "These are the l2 variables: [array([[-1.1158108 ],\n", + " [-1.3494587 ],\n", + " [ 0.6974325 ],\n", + " [-0.21758062]], dtype=float32), array([3.0711133], dtype=float32)]\n" ] } ], @@ -523,12 +523,13 @@ "\n", "### Datset\n", "\n", - "We investigate the data set of the challenger flight with broken O-rings (Y=1) vs start temperature." + "We investigate the data set of the challenger flight with broken O-rings (`Y=1`\n", + ") vs start temperature." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -537,7 +538,7 @@ "Text(0, 0.5, 'Broken O-rings')" ] }, - "execution_count": 12, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" }, @@ -572,11 +573,20 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 68, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0. 1.]\n" + ] + } + ], "source": [ - "y_values = data[:,1]" + "y_values = data[:,1]\n", + "print(y_values)" ] }, { @@ -604,7 +614,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -625,10 +635,11 @@ "# Initial Value for the weights\n", "w = -0.20\n", "b = 20.0\n", - "# Log-Likelihood \n", + "# predicted probabilities \n", "p_1 = 1 / (1 + np.exp(-x*w - b))\n", - "like = y * np.log(p_1) + (1-y) * np.log(1-p_1)\n", - "print(-np.mean(like))\n", + "# cross-entropy loss function\n", + "cross_entropy = -np.mean(y * np.log(p_1) + (1-y) * np.log(1-p_1))\n", + "print(cross_entropy)\n", "print(np.round(p_1,3))" ] }, @@ -652,7 +663,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -687,9 +698,13 @@ "y_pred = 1 / (1 + np.exp(-x_pred*w_val - b_val))\n", "plt.plot(x_pred, y_pred)\n", "\n", + "# predicted probabilities\n", "p_1 = 1 / (1 + np.exp(-x*w_val - b_val))\n", - "like = y * np.log(p_1) + (1-y) * np.log(1-p_1)\n", - "print(-np.mean(like))\n", + "\n", + "# cross-entropy loss function\n", + "cross_entropy = -np.mean(y * np.log(p_1) + (1-y) * np.log(1-p_1))\n", + " \n", + "print(cross_entropy)\n", "print(np.round(p_1,3))" ] }, @@ -697,53 +712,92 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## TODO : set up a Keras model" + "We can see that the value of the cross-entropy has decreased from 3.882916 to 0.9094435." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO : determine the accuracy of this logistic regression model" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.8695652173913043\n" + ] + } + ], + "source": [ + "y_pred = np.round(p_1, decimals=0).astype('int')\n", + "accuracy = np.mean(y==y_pred)\n", + "print(\"Accuracy: \", accuracy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO : set up a Keras model\n", + "\n", + "If there are two labels, we use `binary_crossentropy` as loss function. In this case, we use `softmax` as output layer." + ] + }, + { + "cell_type": "code", + "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "<keras.callbacks.History at 0x7fd95118a410>" + "<keras.callbacks.History at 0x7ff9ec4cf890>" ] }, - "execution_count": 16, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from tensorflow.keras.utils import to_categorical\n", - "y_binary = to_categorical(y)\n", - "\n", "l0 = tf.keras.layers.Dense(units=1, activation = tf.nn.sigmoid, input_shape=[1])\n", "model = tf.keras.Sequential([l0])\n", - "model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01))\n", + "model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01), metrics=['accuracy'])\n", "model.fit(x, y, epochs=10000, verbose=False)" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 73, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:5 out of the last 9 calls to <function Model.make_predict_function.<locals>.predict_function at 0x7ff9ec4d09e0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" + ] + }, { "data": { "text/plain": [ - "[<matplotlib.lines.Line2D at 0x7fd950f0bc90>]" + "[<matplotlib.lines.Line2D at 0x7ff9ec50e710>]" ] }, - "execution_count": 21, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -765,14 +819,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[array([[-0.23204683]], dtype=float32), array([15.034954], dtype=float32)]\n" + "[array([[-0.23215847]], dtype=float32), array([15.042496], dtype=float32)]\n" ] } ], @@ -782,21 +836,20 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.4416347\n", - "[[0.43 0.23 0.274 0.322 0.375 0.158 0.13 0.23 0.859 0.603 0.23 0.045\n", - " 0.375 0.939 0.375 0.086 0.23 0.023 0.069 0.036 0.086 0.069 0.829]]\n" + "Cross-entropy: 0.4416346\n", + "Accuracy: 0.8695652173913043\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -817,10 +870,31 @@ "y_pred = 1 / (1 + np.exp(-x_pred*w_val - b_val))\n", "plt.plot(x_pred, y_pred)\n", "\n", + "# predicted probabilities\n", "p_1 = 1 / (1 + np.exp(-x*w_val - b_val))\n", - "like = y * np.log(p_1) + (1-y) * np.log(1-p_1)\n", - "print(-np.mean(like))\n", - "print(np.round(p_1,3))" + "\n", + "# cross-entropy loss function\n", + "cross_entropy = -np.mean(y * np.log(p_1) + (1-y) * np.log(1-p_1))\n", + "print(\"Cross-entropy: \", cross_entropy)\n", + "y_pred = np.round(p_1, decimals=0).astype('int')\n", + "accuracy = np.mean(y==y_pred)\n", + "print(\"Accuracy: \", accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model.evaluate(x, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The value of the cross-entropy loss function could be decreased from " ] }, {