{"nbformat":4,"nbformat_minor":0,"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.1"},"colab":{"name":"linear_regression_autograd.ipynb","provenance":[],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"fdXDkK9gouHa","colab_type":"text"},"source":["#
CS568:Deep Learning
Spring 2020
"]},{"cell_type":"markdown","metadata":{"id":"RycQDEF_ouHj","colab_type":"text"},"source":["## Import libraries"]},{"cell_type":"code","metadata":{"id":"3e71SS20ouHk","colab_type":"code","colab":{}},"source":["import autograd.numpy as np\n","import matplotlib.pyplot as plt"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Srt63_pRouHo","colab_type":"text"},"source":["## Load toy dataset"]},{"cell_type":"code","metadata":{"id":"64UDJApSouHp","colab_type":"code","colab":{},"outputId":"76fa1c53-1069-4701-8a77-771721567c8c"},"source":["data_x = np.linspace(1, 10, 100)[:, np.newaxis] # generate 100 numbers between 1 and 10.\n","print(data_x.shape)\n","data_y = np.sin(data_x) + 0.1 * np.power(data_x, 2) + 0.5 * np.random.randn(100, 1)\n","print(data_y.shape)\n","data_x /= np.max(data_x) # normalize data_x values between 0 and 1\n","data_y /= np.max(data_y)\n","## add bias input \n","data_x = np.hstack((np.full_like(data_x, 0.1), data_x))\n","print(data_x.shape)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["(100, 1)\n","(100, 1)\n","(100, 2)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"cntLIpRmouHs","colab_type":"text"},"source":["## Split data into train and test sets"]},{"cell_type":"code","metadata":{"id":"PUaHxYvWouHt","colab_type":"code","colab":{},"outputId":"011be82c-2a5d-4f3c-f46c-bd0bb1fd62c7"},"source":["order = np.random.permutation(len(data_x)) # randomly permute data_x values\n","# split data into train and test sets\n","split = 20\n","\n","train_x = data_x[order[split:]]\n","train_y = data_y[order[split:]]\n","\n","print(\"train_X, train_Y:\",train_x.shape, train_y.shape)\n","\n","test_x = data_x[order[:split]]\n","test_y = data_y[order[:split]]\n","\n","print(\"test_X, test_Y:\",test_x.shape, test_y.shape)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["train_X, train_Y: (80, 2) (80, 1)\n","test_X, test_Y: (20, 2) (20, 1)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"eUjlBKTwouHw","colab_type":"text"},"source":["## Fit model"]},{"cell_type":"code","metadata":{"id":"26KgNNahouHw","colab_type":"code","colab":{},"outputId":"61f62715-9107-4c81-9de7-b73aa0d105e8"},"source":["def calculate_loss(weights):\n"," pred = np.dot(weights, train_x.T)\n"," loss = (1/2)*np.sum((pred - train_y.T) ** 2).mean()\n"," return loss\n","\n","\n","def plot_results(X, y, c, label):\n"," plt.plot(data_x[:,1], data_x.dot(weights.T), c='g', label='predicted model')\n"," plt.scatter(X[:,1], y, c=c, label=label)\n"," plt.grid()\n"," plt.legend()\n"," plt.xlabel('X')\n"," plt.ylabel('Y')\n"," plt.show()\n","\n","\n","from autograd import grad\n","grad_cost = grad(calculate_loss)\n","\n","W = np.random.randn()\n","b =np.random.randn()\n","weights = np.array([W, b]).reshape((1, 2))\n","lr = 0.01\n","tolerance = 1e-5\n"," \n","# Perform Gradient Descent\n","Epochs = 1\n","while True:\n"," loss = calculate_loss(weights)\n"," new_w = weights - lr * grad_cost(weights) \n"," \n"," # Stopping Condition\n"," if np.sum(abs(new_w - weights)) < tolerance:\n"," print(\"Converged.\")\n"," break\n"," \n"," # Print loss every 100 iterations\n"," if Epochs % 100 == 0:\n"," print(\"Epoch: %d - Loss: %.4f\" %(Epochs, loss))\n"," \n"," Epochs += 1\n"," weights = new_w\n","\n","print(\"weights =\",weights) \n","plot_results(train_x, train_y, 'b', 'training points')"],"execution_count":0,"outputs":[{"output_type":"stream","text":["Epoch: 100 - Loss: 0.9300\n","Epoch: 200 - Loss: 0.8578\n","Epoch: 300 - Loss: 0.8044\n","Epoch: 400 - Loss: 0.7648\n","Epoch: 500 - Loss: 0.7355\n","Epoch: 600 - Loss: 0.7138\n","Epoch: 700 - Loss: 0.6978\n","Epoch: 800 - Loss: 0.6859\n","Epoch: 900 - Loss: 0.6771\n","Epoch: 1000 - Loss: 0.6706\n","Epoch: 1100 - Loss: 0.6658\n","Epoch: 1200 - Loss: 0.6622\n","Epoch: 1300 - Loss: 0.6596\n","Epoch: 1400 - Loss: 0.6576\n","Epoch: 1500 - Loss: 0.6562\n","Epoch: 1600 - Loss: 0.6551\n","Epoch: 1700 - Loss: 0.6543\n","Epoch: 1800 - Loss: 0.6538\n","Epoch: 1900 - Loss: 0.6533\n","Epoch: 2000 - Loss: 0.6530\n","Epoch: 2100 - Loss: 0.6528\n","Epoch: 2200 - Loss: 0.6526\n","Epoch: 2300 - Loss: 0.6525\n","Epoch: 2400 - Loss: 0.6524\n","Epoch: 2500 - Loss: 0.6523\n","Epoch: 2600 - Loss: 0.6522\n","Epoch: 2700 - Loss: 0.6522\n","Epoch: 2800 - Loss: 0.6522\n","Epoch: 2900 - Loss: 0.6521\n","Epoch: 3000 - Loss: 0.6521\n","Epoch: 3100 - Loss: 0.6521\n","Epoch: 3200 - Loss: 0.6521\n","Epoch: 3300 - Loss: 0.6521\n","Epoch: 3400 - Loss: 0.6521\n","Epoch: 3500 - Loss: 0.6521\n","Epoch: 3600 - Loss: 0.6521\n","Epoch: 3700 - Loss: 0.6521\n","Epoch: 3800 - Loss: 0.6521\n","Epoch: 3900 - Loss: 0.6521\n","Converged.\n","weights = [[-2.16316785 1.08075926]]\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":[""]},"metadata":{"tags":[]}}]},{"cell_type":"markdown","metadata":{"id":"fWrqnifFouHz","colab_type":"text"},"source":["## Plot results"]},{"cell_type":"code","metadata":{"id":"P7NEpDOFouH0","colab_type":"code","colab":{},"outputId":"72a167d1-ebb7-4e5a-d74a-49e49a2c24a6"},"source":["plot_results(test_x, test_y, 'r','testing points')"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":[""]},"metadata":{"tags":[]}}]}]}