{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0.4.0'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "torch.__version__" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "study = [1,2,3]\n", "grade = [2,4,6]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "study = torch.tensor(study, dtype=torch.float)\n", "grade = torch.tensor(grade, dtype = torch.float)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([ 0.9836])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = torch.tensor([np.random.rand()], requires_grad=True, dtype=torch.float)\n", "w" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def forward(x):\n", " return x *w" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def loss(x,y):\n", " y_pred = forward(x)\n", " return (y_pred - y)**2" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([ 1.9671])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "forward(2)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "epoch_list = []\n", "loss_list = []" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "epoch = 30\n", "lr = 0.01\n", "for i in range(epoch):\n", " l = 0\n", " for x,y in zip(study,grade):\n", " y_pred = forward(x)\n", " loss_val = loss(x,y)\n", " loss_val.backward()\n", " with torch.no_grad():\n", " w -= lr * w.grad\n", " w.grad.zero_()\n", " l += loss_val.item()\n", " epoch_list.append(i)\n", " loss_list.append(l/3)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(epoch_list, loss_list)" ] } ], "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.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }