From d0b0557acf5eda3deb2b98aaaf35fc59e56110d0 Mon Sep 17 00:00:00 2001 From: Jeong-Yoon Lee Date: Tue, 7 Sep 2021 00:14:26 -0700 Subject: [PATCH] add 07-backprob.ipynb --- notebooks/04-numpy-lr.ipynb | 9 +- notebooks/07-backprop.ipynb | 581 ++++++++++++++++++++++++++++++++++++ 2 files changed, 589 insertions(+), 1 deletion(-) create mode 100644 notebooks/07-backprop.ipynb diff --git a/notebooks/04-numpy-lr.ipynb b/notebooks/04-numpy-lr.ipynb index 6664e11..faf4974 100644 --- a/notebooks/04-numpy-lr.ipynb +++ b/notebooks/04-numpy-lr.ipynb @@ -76,6 +76,13 @@ "## 학습데이터 로드" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "데이터는 [Dacon 단국대 소/중 데이터 분석 AI 경진대회 웹사이트](https://www.dacon.io/competitions/official/235638/data/)에서 다운로드 받아 `../input` 폴더에 저장." + ] + }, { "cell_type": "code", "execution_count": 4, @@ -963,7 +970,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.8.5" }, "toc": { "base_numbering": 1, diff --git a/notebooks/07-backprop.ipynb b/notebooks/07-backprop.ipynb new file mode 100644 index 0000000..1fb0856 --- /dev/null +++ b/notebooks/07-backprop.ipynb @@ -0,0 +1,581 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 선형회귀 데모" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 라이브러리 import 및 설정" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:09.537987Z", + "start_time": "2021-09-07T07:08:09.145618Z" + } + }, + "outputs": [], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:10.292310Z", + "start_time": "2021-09-07T07:08:09.539714Z" + } + }, + "outputs": [], + "source": [ + "from matplotlib import pyplot as plt\n", + "from matplotlib import rcParams\n", + "import numpy as np\n", + "from pathlib import Path\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "from tqdm.notebook import tqdm\n", + "import warnings" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:10.312044Z", + "start_time": "2021-09-07T07:08:10.294207Z" + } + }, + "outputs": [], + "source": [ + "rcParams['figure.figsize'] = (16, 8)\n", + "plt.style.use('fivethirtyeight')\n", + "pd.set_option('max_columns', 100)\n", + "pd.set_option(\"display.precision\", 4)\n", + "warnings.simplefilter('ignore')\n", + "np.set_printoptions(4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 학습데이터 로드" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "데이터는 [Dacon 단국대 소/중 데이터 분석 AI 경진대회 웹사이트](https://www.dacon.io/competitions/official/235638/data/)에서 다운로드 받아 `../input` 폴더에 저장." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:10.331216Z", + "start_time": "2021-09-07T07:08:10.314059Z" + } + }, + "outputs": [], + "source": [ + "data_dir = Path('../input/')\n", + "trn_file = data_dir / 'train.csv'\n", + "seed = 42\n", + "np.random.seed(seed)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:11.140422Z", + "start_time": "2021-09-07T07:08:10.332477Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(320000, 19)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ugrizredshiftdered_udered_gdered_rdered_idered_znObservenDetectairmass_uairmass_gairmass_rairmass_iairmass_zclass
id
023.264020.336819.009517.672416.9396-8.1086e-0523.124320.257818.955117.632116.908918181.18981.19071.18901.18941.19020
115.052114.062013.452413.268413.16894.5061e-0314.966414.004513.411413.236313.1347111.25331.25781.24881.25101.25551
216.786415.825415.536315.393515.35004.7198e-0416.607615.686615.440015.321715.2961221.02251.02411.02101.02171.02330
325.660621.188720.221219.894919.63465.8143e-0625.353620.994720.087319.794719.5552431.20541.20611.20491.20511.20570
424.453420.699219.042418.324217.9826-3.3247e-0523.771420.433818.863018.190317.875913121.19391.19431.19371.19381.19410
\n", + "
" + ], + "text/plain": [ + " u g r i z redshift dered_u dered_g \\\n", + "id \n", + "0 23.2640 20.3368 19.0095 17.6724 16.9396 -8.1086e-05 23.1243 20.2578 \n", + "1 15.0521 14.0620 13.4524 13.2684 13.1689 4.5061e-03 14.9664 14.0045 \n", + "2 16.7864 15.8254 15.5363 15.3935 15.3500 4.7198e-04 16.6076 15.6866 \n", + "3 25.6606 21.1887 20.2212 19.8949 19.6346 5.8143e-06 25.3536 20.9947 \n", + "4 24.4534 20.6992 19.0424 18.3242 17.9826 -3.3247e-05 23.7714 20.4338 \n", + "\n", + " dered_r dered_i dered_z nObserve nDetect airmass_u airmass_g \\\n", + "id \n", + "0 18.9551 17.6321 16.9089 18 18 1.1898 1.1907 \n", + "1 13.4114 13.2363 13.1347 1 1 1.2533 1.2578 \n", + "2 15.4400 15.3217 15.2961 2 2 1.0225 1.0241 \n", + "3 20.0873 19.7947 19.5552 4 3 1.2054 1.2061 \n", + "4 18.8630 18.1903 17.8759 13 12 1.1939 1.1943 \n", + "\n", + " airmass_r airmass_i airmass_z class \n", + "id \n", + "0 1.1890 1.1894 1.1902 0 \n", + "1 1.2488 1.2510 1.2555 1 \n", + "2 1.0210 1.0217 1.0233 0 \n", + "3 1.2049 1.2051 1.2057 0 \n", + "4 1.1937 1.1938 1.1941 0 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trn = pd.read_csv(trn_file, index_col=0)\n", + "print(trn.shape)\n", + "trn.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:11.195777Z", + "start_time": "2021-09-07T07:08:11.141764Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(200004, 1) (200004,)\n" + ] + } + ], + "source": [ + "X = trn[trn['class'] != 0][['u']].values\n", + "y = trn[trn['class'] != 0]['dered_u'].values\n", + "print(X.shape, y.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## NumPy를 이용한 역전파 학습" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:11.216644Z", + "start_time": "2021-09-07T07:08:11.197245Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "w1: [[-0.0013 0.0045]]\n", + "b1: [[0.0023 0.001 ]]\n", + "w2: [[-0.0034]\n", + " [-0.0034]]\n", + "b2: [[-0.0044]]\n" + ] + } + ], + "source": [ + "alpha = .001\n", + "\n", + "n_input = 1\n", + "n_hidden = 2\n", + "n_output = 1\n", + "\n", + "w1 = (np.random.rand(n_input, n_hidden) - .5) * .01\n", + "b1 = (np.random.rand(1, n_hidden) - .5) * .01\n", + "\n", + "w2 = (np.random.rand(n_hidden, n_output) - .5) * .01\n", + "b2 = (np.random.rand(1, n_output) - .5) * .01\n", + "\n", + "epoch = 5\n", + "print(f'w1: {w1}\\nb1: {b1}\\nw2: {w2}\\nb2: {b2}')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2021-09-07T07:08:11.305609Z", + "start_time": "2021-09-07T07:08:11.219429Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ef97998bab9f4209880c66a1f5c9e29a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/5 [00:00" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAINCAYAAADCyV5lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACCM0lEQVR4nOzdeZxcdZ3v/9f3bFXVXb2n09kTknSAhM2gICiIijiKgCgK6uB1xjWjVxlHVGbGXQfcmHEU0ZHrjNu9Loi7P9EZQEEB0ahsAQIhCZCt051eqruqTp1zvr8/TncnHbJ0ekn18n4+HnlATi39PTnVVe/6Lp+v6e7utoiIiIjMEE61GyAiIiIykRRuREREZEZRuBEREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRllyoSba6+9lsbGRq688srhY9Zarr76ao477jjmzZvH+eefz4YNG6rYShEREZnqpkS4ueeee/iv//ov1qxZM+L45z73Oa677jo++clPcsstt9Da2srFF19MX19flVoqIiIiU13Vw01PTw9vfvOb+cIXvkBjY+PwcWst119/PVdccQUXXXQRq1ev5vrrr6dQKHDjjTdWr8EiIiIypVU93AyFl7PPPnvE8S1btrBz505e8IIXDB/L5XKceeaZ3H333Ue7mSIiIjJNeNX84V/72tfYtGkT//Ef//G023bu3AlAa2vriOOtra1s3779qLRPREREpp+qhZuNGzfy0Y9+lF/84hf4vl+tZoiIiMgMU7Vhqd///vd0dnby7Gc/m5aWFlpaWvjtb3/LDTfcQEtLC83NzQB0dHSMeFxHRwdz586tRpOnrI0bN1a7CVUzW899tp436Nxno9l63jC7z308qtZzc/755/OMZzxjxLG3v/3trFixgne/+92sXLmStrY2br31VtauXQtAqVTizjvv5KMf/Wg1miwiIiLTQNXCTWNj44jVUQA1NTU0NTWxevVqANatW8e1115Le3s7K1eu5DOf+Qy1tbVccsklVWixiIiITAdVnVB8OO9617soFotceeWVdHd3c+qpp3LTTTdRV1dX7aaJiIjIFDWlws3PfvazEX83xnDVVVdx1VVXValFIiIiMt1MqXAzmaIoor+/v9rNmBTZbJaenp5qN6MqgiAgiiI8b9a8lEVE5DBmxSdCFEX09fXR2NiIMabazZlwmUyGbDZb7WZURRAE9PX1UVdXp4AjIiLAFKhQfDT09/fP2GAz2xljaGxsnLG9ciIicuRmRbgBFGxmMF1bERHZ16wJNyIiIjI7KNyIiIjIjKJwMw1deumlrFu3rtrNEBERmZIUbma422+/ncbGRjo7O6vdFBERkaNC4UZERERmFIWbKW5gYIB169axcOFC2tvb+exnPzvi9u985zu8+MUvZtGiRaxcuZL/9b/+F9u2bQNgy5YtXHDBBQCsWLGCxsbG4eGs//7v/+YlL3kJS5cuZdmyZbziFa/g4YcfPronJyIis0McYrofwdn9F0z3IxCHk/rjFG6OQBhbHump8JfOkEd6KoSxnfSf+YEPfIDbbruNr3/96/zoRz/i3nvv5Xe/+93eNoUhV155JXfccQff+c536Ozs5I1vfCMAixYt4utf/zoAd911Fw8//DDXXHMNkNb+edvb3sYtt9zCT3/6U+rr67nssssIw8l9wYmIyCwTh7gd6zGVAmAxlQJux/pJDTgq6TpKYWxZ3xESuOAYQyFMWN8RsrY1IHAnp85KoVDgG9/4Bl/4whd44QtfCMB11103vGs6wOWXX06pVCKbzbJs2TKuvfZaTjvtNJ566ikWLlxIU1MTAK2trbS0tAw/7qKLLhrxs6677joWL17MH//4R84444xJOR8REZl9TN9mrBuAGexPMQ7WDdLjjasm5Wcq3IzS5kI0HGwg/W/gWjYXIlY1+JPyMx9//HHCMOS0004bPpbP51mzZs3w3//85z9z9dVX88ADD9Dd3Y21aW/Sk08+ycKFCw/53J/4xCf4wx/+QGdnJ0mSkCQJTz755KSci4iIzE4mKu4NNsMHHUxUZLLGPxRuRqkY2eFgM8QxhmI0+UNTB9Pf388rX/lKzjrrLL785S/T2tpKZ2cnL3nJSw47vHTppZeyYMEC/u3f/o358+fjeR6nn366hqVERGRCWS+XDkntG3BsgvXzk/YzNedmlHKeIbEjg0xiLTlv8kr/H3PMMfi+zz333DN8rL+/nwcffBCAjRs30tnZyVVXXcVznvMcVq1aRUdHx4jnCIIAgDiOh491dXXxyCOP8O53v5tzzjmHY489lr6+PqIomrRzERGR2cnWLcPEIdhk8ECCiUNs3bJJ+5kKN6O0LO8RxgwHnMRawjg9Plny+TyXX345H/7wh7n11lvZsGED73jHO0iS9AWyaNEiMpkMX/3qV9m8eTM333wz//Iv/zLiORYvXowxhptvvpndu3dTKBRobGykpaWFr3/962zatIk77riDd7/73dpVW0REJp4bELeuHeypMVg/T9y6Ftxg0n6kws0oBa5hbWtAPnAwBvKBM6mTiYd87GMf47nPfS5//dd/zQUXXMDxxx/PmWeeCcCcOXO4/vrr+cUvfsHpp5/OJz/5ST7xiU+MePyCBQu46qqr+PjHP057eztXXnkljuPw1a9+lQceeIAzzjiDK6+8kn/6p38ik8lM6rmIiMgs5QbYxlUkc05OJxFPYrABMN3d3dWbNHKU9PT00NDQUO1mTJqh1VKz0dC5z/RrvL+NGzfS3t5e7WZUhc599p37bD1vmN3nPh7quREREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRlF4UZERERmFIUbERERmVEUbkRERGRGUbgRERGRGUXhRoZdeumlrFu3bvjv559/PldeeeW4nnPdunVceuml422aiIjIqGmnRDmob37zm6PeTPP222/nggsu4LHHHqOlpWX4+DXXXIO1M36HDxERmUIUbmaYMAwJgonZkKypqWnczzGb9nsSEZGpQcNSU9z555/P3//93/O+972PpUuXsnTpUj7wgQ+QJAkAJ554Ip/+9Kd5+9vfzpIlS3jzm98MwN13381LX/pS5s+fz/HHH8+73/1uent7h593YGCAdevWsXDhQtrb2/nsZz97wJ+977BUGIZ89KMf5YQTTmDu3LmcfPLJfOlLX2LLli1ccMEFAKxYsYLGxsbh4a39h6XK5TLvf//7aW9vp62tjXPPPZc777xz+Pbbb7+dxsZGfv3rX/PCF76Q+fPnc8455/DnP/954v5RRURkRlO4ORJxiOl+BGf3XzDdj0AcHpUf+73vfY8kSfjVr37Fv/3bv/G1r32NL37xi8O3f/nLX2bVqlXcdtttfPCDH+SBBx7gFa94BS95yUu44447+MY3vsF9993HO97xjuHHfOADH+C2227j61//Oj/60Y+49957+d3vfnfIdqxbt45vf/vbfOITn+D3v/89n//852loaGDRokV8/etfB+Cuu+7i4Ycf5pprrjngc3zwgx/kBz/4AV/4whf4zW9+w+rVq7nkkkvYsWPHiPt95CMf4UMf+hC//vWvaW5u5i1veYuGt0REZFQ0LDVacYjbsR7rBmAcTKWA07GeuHUtuBMzDHQwbW1tfOpTn8IYw6pVq3j00Uf54he/OBxWzjjjDN71rncN3/+tb30rF198Mf/7f//v4WOf/exnOfvss+no6CCXy/GNb3yDL3zhC7zwhS8E4LrrrmP16tUHbcNjjz3G97//fW688UbOPfdcAJYtWzZ8+9AQVmtr64g5N/vq7+/nq1/9Kv/+7//Oi1/8YgD+9V//ld/85jfccMMN/PM///Pwff/pn/6Js88+G4D3vve9/NVf/RXbtm1j4cKFo/53ExGR2UnhZpRM3+bhYJMecLBukB5vXDWpP/uZz3wmxpjhv5922ml84hOfGB5mOvnkk0fc/y9/+QubNm3iBz/4wfCxoV6Pxx9/nFwuRxiGnHbaacO35/N51qxZc9A23HvvvTiOw1lnnTXm83j88cepVCo8+9nPHj7mui6nnXYaDz300Ij77tuWefPmAdDR0aFwIyIih6VwM0omKu4NNsMHHUxUpNqDJTU1NSP+niQJr3/96/m7v/u7p913/vz5PProo0eraaO2b3gD8H3/abdpWEpEREZDc25GyXo5sMl+B5P0+CT74x//OOKD/Z577mH+/PnU19cf8P4nn3wyGzZsYPny5U/7k8vlOOaYY/B9n3vuuWf4Mf39/Tz44IMHbcOJJ55IkiTcfvvtB7x9aIVWHMcHfY5jjjmGIAi46667ho/Fcczvf/97jj322IM+TkRE5Ego3IySrVuGicO9AccmmDjE1i2b9J+9Y8cO3v/+97Nx40Z+9KMf8e///u8H7JUZ8q53vYv169fz93//98NDVL/4xS+44oorgHQI6vLLL+fDH/4wt956Kxs2bOAd73jH8AqsA1m5ciUXX3wx73znO/nRj37E5s2b+d3vfse3v/1tABYvXowxhptvvpndu3dTKBSe9hy1tbX87d/+LR/+8If55S9/ycMPP8y73/1uOjo6eNOb3jS+fyQREZFBGpYaLTcgbl2L6ducDkX5eZLmZZM+mRjgVa96FUmS8MIXvhBjDJdffvkhw80JJ5zAz3/+cz7+8Y/zspe9jDiOWbZsGeeff/7wfT72sY/R39/PX//1X5PL5XjLW97CwMDAIdvxpS99iU984hO8//3vp7OzkwULFgy3Y8GCBVx11VV8/OMf553vfCeXXXYZ119//dOe4yMf+QgAb3/72+np6eGkk07ixhtvHJ5XIyIikyAO935+ebn0i/lR+PyqFtPd3T3jJzL09PRM22Jy559/PqtXr+bTn/70Qe9TKpXIZrNHsVVTx9C5T+drPBYbN26kvb292s2oCp377Dv32XreMEHnvt9q36GRh6Ox2rdaNCwlIiIygx1qte9MpXAjIiIygx1qte9MpTk3U9zPfvazajdBRESmMevlMJXCyIBjE6yfr16jJpl6bkRERGawaq72rRaFGxERkZlscLVv2lNjsH5+Rk8mhlk0LGWtfVoVXJkZVLlYROQw3ADbuKrqFfWPllnRc1NbW0t3d7c+BGcgay3d3d3U1tZWuykiIjJFzIqeG8/zqKurG95ocqbp7e096FYMM113dzcLFy7E82bFS1lEREZh1nwieJ43Y4u87dq1i8WLF1e7GVWxa9cuBRsRERmhasNSX/nKVzjzzDNZvHgxixcv5kUvehE333zz8O3r1q2jsbFxxJ9zzz23Ws0VERGRaaJqX3kXLFjARz7yEVasWEGSJPy///f/eN3rXsdtt93GCSecAMA555zDl7/85eHHDO08LSIiMivNsj2ixqpq4WbfTRwBPvCBD/B//s//4Z577hkON5lMhra2tmo0T0REZGrZb48oUyngdKyf8cu6x2JKbJwZxzE//OEPedvb3sZtt93GmjVrWLduHT/72c8IgoCGhgae85zn8IEPfIDW1tZDPtfGjRuPUqtFRESOnszAFtzo6ZWGYy9PuWZp9Ro2Cca7WWhVw80DDzzAeeedR6lUora2lq985Su8+MUvBuD73/8+uVyOpUuXsnXrVj7+8Y+TJAm33XYbmUymWk2ekrRj7uw799l63qBzn43nPlvPG0aeu7P7L3DASjWGZM7JR7VdU11Vl5m0t7dz++2309vby49+9CPWrVvHT3/6U1avXs0rX/nK4futWbOGU045hRNPPJGbb76ZCy+8sIqtFhEROfpm4x5RY1XVIn5BELB8+XJOOeUUPvShD3HiiSfyxS9+8YD3nT9/PgsWLGDTpk1HuZUiIiLVNxv3iBqrKVWhOEkSwjA84G2dnZ1s375dE4xFRGR2moV7RI1V1YalPvzhD3PeeeexcOFCCoUCN954I3fccQff/e53KRQKXHPNNVx44YW0tbWxdetWPvrRj9La2srLXvayajVZRESkumbZHlFjVbVws3PnTt7y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AYUbmXCmbzPWDcAMvryMg3UDTN/mqrZLRERmB4UbmXAmKu4NNsMHnfS4iIjIJFO4kQlnvRzYZL+DSXpcRERkkincyISzdcswcbg34NgEE4fppGIREZFJpnAjE88NiFvXYv08YLB+nrh1rVZLiYjIUaGl4DI53ADbuApb7XaIiMiso54bERERmVEUbkRERGRGUbgRERGRGUXhRkRERGYUhRsRERGZURRuREREZEZRuBEREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRlFe0sJxCGmbzMmKmK9XLp7tza5FBGRaUo9N7NdHOJ2rMdUCoDFVAq4HeshDqvdMhERkTFRuJnlTN9mrBuAGXwpGAfrBpi+zVVtl4iIyFgp3MxyJiruDTbDB530uIiIyDSkcDPLWS8HNtnvYJIeFxERmYYUbmY5W7cME4d7A45NMHGYTioWERGZhhRuZjs3IG5di/XzgMH6eeLWtVotJSIi05aWggu4AbZxFbba7RAREZkA6rkRERGRGUXhRkRERGYUhRsRERGZURRuREREZEZRuBEREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRlF4UZERERmFIUbERERmVGmdLi5+uqraWxsHPFn1apV1W6WiIiITGFTfuPM9vZ2fvrTnw7/3XXdKrZGREREpropH248z6Otra3azRAREZFpYkoPSwFs3ryZ4447jpNOOom//du/ZfPmzdVukoiIiExhpru721a7EQfzq1/9ikKhQHt7O7t37+bTn/40Gzdu5K677qK5ufmAj9m4ceNRbqWIiIhMpPb29nE9fkqHm/0VCgVOOeUUrrjiCt7xjndUuzlTxsaNG8f9QpiuZuu5z9bzBp37bDz32XreMLvPfTym/LDUvvL5PMcddxybNm2qdlNERERkippW4aZUKrFx40ZNMBYREZGDmtKrpf75n/+Zv/qrv2LRokXDc24GBgZ4zWteU+2miYiIyBQ1pcPNtm3beNOb3kRnZydz5szhmc98Jr/61a9YsmRJtZsmIiIiU9SUDjdf/epXq90EERERmWamdLiZFeIQ07cZExWxXg5btwzcoNqtEhERmbam1YTiGScOcTvWYyoFwGIqBdyO9RCH1W6ZiIjItKVwU0WmbzPWDcAMXgbjYN0A07e5qu0SERGZzhRuqshExb3BZvigkx4XERGRMVG4qSLr5cAm+x1M0uMiIiIyJgo3VWTrlmHicG/AsQkmDtNJxSIiIjImCjfV5AbErWuxfh4wWD9P3LpWq6VERETGQUvBq80NsI2rmDa7l4qIiExx6rkRERGRGUXhRkRERGYUhRsRERGZURRuREREZEZRuBEREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRlF4UZERERmFIUbERERmVEUbkRERGRGUbgRERGRGUXhRkRERGYUhRsRERGZURRuREREZEZRuBEREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRlF4UZERERmFIUbERERmVEUbkRERGRGUbgRERGRGUXhRkRERGYUhRsRERGZURRuREREZEZRuBEREZEZReFGREREZhSFGxEREZlRFG5ERERkRlG4ERERkRlF4UZERERmFIUbERERmVEUbkRERGRGUbgRERGRGUXhRkRERGYUhRsRERGZURRuREREZEaZFuHmhhtu4KSTTqKtrY3nPe95/O53v6t2k0RERGSKmvLh5qabbuL9738///AP/8BvfvMbTjvtNF71qlfxxBNPVLtpIiIiMgWZ7u5uW+1GHMoLX/hC1qxZw7//+78PH1u7di0XXXQRH/rQh6rYMhEREZmKpnTPTRiG/PnPf+YFL3jBiOMveMELuPvuu6vUKhEREZnKpnS46ezsJI5jWltbRxxvbW1l165dVWqViIiITGVTOtyIiIiIHKkpHW5aWlpwXZeOjo4Rxzs6Opg7d26VWiUiIiJT2ZQON0EQcMopp3DrrbeOOH7rrbdy+umnV6lVIiIiMpV51W7A4bz97W/nrW99K6eeeiqnn346X/3qV9mxYwd/8zd/U+2miYiIyBQ0pXtuAF7xildw9dVX8+lPf5qzzjqLu+66i+9+97ssWbJk+D6zscjf1VdfTWNj44g/q1atqnazJtxvf/tbLrvsMo4//ngaGxv51re+NeJ2ay1XX301xx13HPPmzeP8889nw4YNVWrtxDrcua9bt+5pr4Fzzz23Sq2dONdeey3Pf/7zWbx4MStWrODSSy/lwQcfHHGfmXrdR3PuM/W6f+UrX+HMM89k8eLFLF68mBe96EXcfPPNw7fP1Gt+uPOeqdd7f9deey2NjY1ceeWVw8fGc82nfLgBeNOb3sR9993Hrl27+PWvf81znvOc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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 8))\n", + "plt.scatter(X, y, alpha=.2)\n", + "plt.scatter(X, np.maximum(X @ w1 + b1, 0.) @ w2 + b2, alpha=.2, color='darkorange')\n", + "plt.xlim(0, 40)\n", + "plt.ylim(0, 40)\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.legend(['data', 'prediction'])" + ] + } + ], + "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.8.5" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}