From c60a08dc6db0cb11b99c078dbfcefb516afbc79d Mon Sep 17 00:00:00 2001 From: keon Date: Sat, 19 May 2018 05:22:32 -0400 Subject: [PATCH] add readme --- .gitignore | 1 + .../4-fasion-mnist.ipynb | 366 ++++++++++++++++++ 4-fasion-mnist.ipynb | 331 ---------------- README.md | 86 +++- 4 files changed, 452 insertions(+), 332 deletions(-) create mode 100644 04-Neural-Network-For-Fashion/4-fasion-mnist.ipynb delete mode 100644 4-fasion-mnist.ipynb diff --git a/.gitignore b/.gitignore index 5e133c4..cff4749 100644 --- a/.gitignore +++ b/.gitignore @@ -103,3 +103,4 @@ ENV/ # dataset data/ +.data/ diff --git a/04-Neural-Network-For-Fashion/4-fasion-mnist.ipynb b/04-Neural-Network-For-Fashion/4-fasion-mnist.ipynb new file mode 100644 index 0000000..d421ffd --- /dev/null +++ b/04-Neural-Network-For-Fashion/4-fasion-mnist.ipynb @@ -0,0 +1,366 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. 딥러닝으로 패션 아이템 구분하기\n", + "Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import torch\n", + "import torchvision\n", + "import torchvision.transforms as transforms\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import torch.optim as optim\n", + "from torch.autograd import Variable\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "cuda = True" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "batch_size = 256" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "transform = transforms.Compose([\n", + " transforms.RandomHorizontalFlip(),\n", + " transforms.ColorJitter(),\n", + " transforms.RandomRotation(35),\n", + " transforms.ToTensor(),\n", + " transforms.Normalize((0.5,), (0.5,))\n", + "])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [개념] Fashion MNIST 데이터셋 설명" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz\n", + "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz\n", + "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz\n", + "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz\n", + "Processing...\n", + "Done!\n" + ] + } + ], + "source": [ + "trainset = torchvision.datasets.FashionMNIST(\n", + " root = './.data/', \n", + " train = True,\n", + " download = True,\n", + " transform = transform\n", + ")\n", + "trainloader = torch.utils.data.DataLoader(\n", + " dataset = trainset,\n", + " batch_size = batch_size,\n", + " shuffle = True,\n", + " num_workers = 2\n", + ")\n", + "testset = torchvision.datasets.FashionMNIST(\n", + " root = './.data/', \n", + " train = False,\n", + " download = True,\n", + " transform = transform\n", + ")\n", + "testloader = torch.utils.data.DataLoader(\n", + " dataset = testset,\n", + " batch_size = batch_size,\n", + " shuffle = True,\n", + " num_workers = 2\n", + ")\n", + "classes = (\n", + " 'top',\n", + " 'trouser',\n", + " 'pullover',\n", + " 'dress',\n", + " 'coat',\n", + " 'sandal',\n", + " 'shirt',\n", + " 'sneaker',\n", + " 'bag',\n", + " 'boot'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "def show(img):\n", + " img = img / 2 + 0.5\n", + " npimg = img.numpy()\n", + " plt.figure(figsize=(20, 8))\n", + " plt.imshow(np.transpose(npimg, (1,2,0)),\n", + " interpolation='nearest')\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "dataiter = iter(trainloader)\n", + "images, labels = dataiter.next()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "show(torchvision.utils.make_grid(images[:64], padding=0))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pullover, pullover, sneaker, sneaker, trouser, shirt, sandal, sneaker, dress, sandal, dress, dress, top, bag, top, pullover, pullover, sandal, trouser, sneaker, pullover, shirt, top, pullover, coat, coat, top, coat, pullover, boot, trouser, top, top, boot, dress, top, shirt, dress, sneaker, boot, sneaker, trouser, sneaker, coat, shirt, pullover, trouser, dress, sandal, sneaker, top, coat, trouser, coat, trouser, boot, bag, top, top, dress, sandal, shirt, shirt, sneaker, trouser, dress, trouser, shirt, sandal, top, bag, pullover, sneaker, shirt, dress, boot, trouser, dress, sandal, bag, sandal, boot, dress, boot, pullover, sandal, shirt, shirt, shirt, boot, trouser, dress, pullover, boot, boot, dress, dress, bag, coat, sandal, pullover, sneaker, shirt, shirt, trouser, bag, pullover, dress, dress, trouser, coat, bag, trouser, sneaker, sneaker, boot, sneaker, dress, trouser, sneaker, boot, shirt, trouser, shirt, dress, top, dress, top, top, top, shirt, sandal, sneaker, top, sandal, top, top, coat, boot, shirt, coat, bag, dress, bag, boot, sandal, bag, top, coat, coat, dress, bag, bag, top, boot, sandal, sneaker, dress, sandal, trouser, sandal, sandal, trouser, pullover, boot, dress, pullover, dress, trouser, coat, pullover, sandal, top, bag, pullover, sandal, top, sandal, boot, coat, dress, bag, bag, shirt, pullover, dress, top, trouser, coat, dress, bag, bag, bag, top, sneaker, bag, dress, pullover, coat, sneaker, bag, trouser, shirt, pullover, shirt, pullover, trouser, sneaker, dress, shirt, sandal, top, boot, trouser, shirt, boot, coat, trouser, shirt, pullover, sneaker, top, coat, shirt, bag, coat, sneaker, coat, bag, trouser, dress, shirt, sneaker, shirt, sandal, trouser, sneaker, dress, sandal, sneaker, top, dress, trouser, sandal, shirt, coat, top, pullover, trouser, bag, shirt, pullover, top, boot, boot, trouser'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "', '.join(classes[c] for c in labels)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [프로젝트 1] Fashion MNIST 학습하기" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "class CNN(nn.Module):\n", + " def __init__(self):\n", + " super(CNN, self).__init__()\n", + " self.conv1 = nn.Conv2d(1 , 64 , 3, padding = 1)\n", + " self.conv2 = nn.Conv2d(64 , 64 , 3, padding = 1)\n", + " self.conv3 = nn.Conv2d(64 , 64 , 3, padding = 1)\n", + " self.conv4 = nn.Conv2d(64 , 128 , 3, padding = 1)\n", + " self.conv5 = nn.Conv2d(128, 128, 3, padding = 1)\n", + " self.conv6 = nn.Conv2d(128, 128, 3, padding = 1)\n", + " self.fc1 = nn.Linear(128 * 7 * 7, 512)\n", + " self.fc2 = nn.Linear(512, 512)\n", + " self.fc3 = nn.Linear(512, 512)\n", + " self.fc4 = nn.Linear(512, 10)\n", + " self.bn1 = nn.BatchNorm2d(64)\n", + " self.bn2 = nn.BatchNorm2d(64)\n", + " self.bn3 = nn.BatchNorm2d(64)\n", + " self.bn4 = nn.BatchNorm2d(128)\n", + " self.bn5 = nn.BatchNorm2d(128)\n", + " self.bn6 = nn.BatchNorm2d(128)\n", + " self.bn7 = nn.BatchNorm1d(512)\n", + " self.bn8 = nn.BatchNorm1d(512)\n", + " self.bn9 = nn.BatchNorm1d(512)\n", + " \n", + " def forward(self, x):\n", + " x = F.dropout(F.relu(self.bn1(self.conv1(x))), 0.7)\n", + " x = F.dropout(F.relu(self.bn2(self.conv2(x))), 0.7)\n", + " x = F.dropout(F.relu(self.bn3(self.conv3(x))), 0.7)\n", + " x = F.max_pool2d(x, (2, 2))\n", + " x = F.dropout(F.relu(self.bn4(self.conv4(x))), 0.5)\n", + " x = F.dropout(F.relu(self.bn5(self.conv5(x))), 0.5)\n", + " x = F.dropout(F.relu(self.bn6(self.conv6(x))), 0.5)\n", + " x = F.max_pool2d(x, (2, 2))\n", + " x = x.view(-1, 128 * 7 * 7)\n", + " x = F.dropout(F.relu(self.bn7(self.fc1(x))), 0.3)\n", + " x = F.dropout(F.relu(self.bn8(self.fc2(x))), 0.3)\n", + " x = F.dropout(F.relu(self.bn9(self.fc3(x))), 0.3)\n", + " x = self.fc4(x)\n", + " \n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "cnn = CNN().cuda() if cuda else CNN()\n", + "criterion = nn.CrossEntropyLoss()\n", + "optimizer = optim.Adam(cnn.parameters())\n", + "epoch = 40\n", + "print_int = 100" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def validate_model(train = True):\n", + " cnn.eval()\n", + " total_loss = 0.0\n", + " total_prediction = 0\n", + " total_good_prediction = 0\n", + " batch_number = 0\n", + " for X, y in trainloader if train else testloader:\n", + " X, y = Variable(X), Variable(y)\n", + " X, y = (X.cuda(), y.cuda()) if cuda else (X, y)\n", + "\n", + " y_pred = cnn(X)\n", + " total_loss += criterion(y_pred, y).data[0]\n", + " total_prediction += y_pred.size()[0]\n", + " total_good_prediction += (y_pred.max(dim = 1)[1].data.cpu() == y.data.cpu()).sum()\n", + " batch_number += 1\n", + " \n", + " return total_loss / batch_number, 100 * total_good_prediction / total_prediction " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:12: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n", + " if sys.path[0] == '':\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "running_loss: 2.3096609115600586 train_loss: 2.3027710914611816 valid_loss: 2.3027379512786865 valid_acc: 10\n", + "running_loss: 0.6036235809326171 train_loss: 0.45867541432380676 valid_loss: 0.4806478023529053 valid_acc: 81\n", + "running_loss: 0.41543949127197266 train_loss: 0.3720729649066925 valid_loss: 0.40128812193870544 valid_acc: 85\n", + "running_loss: 0.34497180581092834 train_loss: 0.3654119074344635 valid_loss: 0.40196844935417175 valid_acc: 85\n", + "running_loss: 0.34459724426269533 train_loss: 0.36590418219566345 valid_loss: 0.41220685839653015 valid_acc: 85\n", + "running_loss: 0.3207188415527344 train_loss: 0.3225734829902649 valid_loss: 0.3546592891216278 valid_acc: 87\n", + "running_loss: 0.28065937757492065 train_loss: 0.33713236451148987 valid_loss: 0.36395105719566345 valid_acc: 86\n" + ] + } + ], + "source": [ + "for i in range(epoch):\n", + " running_loss = 0\n", + " for j, (X_train, y_train) in enumerate(trainloader):\n", + " cnn.train()\n", + " X_train, y_train = Variable(X_train), Variable(y_train)\n", + " X_train, y_train = (X_train.cuda(), y_train.cuda()) if cuda else (X_train, y_train)\n", + " \n", + " optimizer.zero_grad()\n", + " y_pred = cnn(X_train)\n", + " loss = criterion(y_pred, y_train)\n", + " loss.backward()\n", + " optimizer.step()\n", + " \n", + " running_loss += loss\n", + " if j % print_int == 0:\n", + " train_loss, train_acc = validate_model(True)\n", + " val_loss, val_acc = validate_model(False)\n", + " print(\n", + " \"running_loss:\", running_loss.item() / (print_int if j != 0 else 1),\n", + " \"train_loss:\", train_loss.item(),\n", + " \"valid_loss:\", val_loss.item(), \"valid_acc:\", val_acc.item()\n", + " )\n", + " running_loss = 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/4-fasion-mnist.ipynb b/4-fasion-mnist.ipynb deleted file mode 100644 index 6074448..0000000 --- a/4-fasion-mnist.ipynb +++ /dev/null @@ -1,331 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import torch\n", - "import torchvision\n", - "import torchvision.transforms as transforms\n", - "import torch.nn as nn\n", - "import torch.nn.functional as F\n", - "import torch.optim as optim\n", - "from torch.autograd import Variable\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "cuda = True" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "batch_size = 256" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "transform = transforms.Compose([\n", - " transforms.RandomHorizontalFlip(),\n", - " transforms.ColorJitter(),\n", - " transforms.RandomRotation(35),\n", - " transforms.ToTensor(),\n", - " transforms.Normalize((0.5,), (0.5,))\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "trainset = torchvision.datasets.FashionMNIST(\n", - " root = './data/', \n", - " train = True,\n", - " download = True,\n", - " transform = transform\n", - ")\n", - "trainloader = torch.utils.data.DataLoader(\n", - " dataset = trainset,\n", - " batch_size = batch_size,\n", - " shuffle = True,\n", - " num_workers = 2\n", - ")\n", - "testset = torchvision.datasets.FashionMNIST(\n", - " root = './data/', \n", - " train = False,\n", - " download = True,\n", - " transform = transform\n", - ")\n", - "testloader = torch.utils.data.DataLoader(\n", - " dataset = testset,\n", - " batch_size = batch_size,\n", - " shuffle = True,\n", - " num_workers = 2\n", - ")\n", - "classes = (\n", - " 'top',\n", - " 'trouser',\n", - " 'pullover',\n", - " 'dress',\n", - " 'coat',\n", - " 'sandal',\n", - " 'shirt',\n", - " 'sneaker',\n", - " 'bag',\n", - " 'boot'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "def show(img):\n", - " img = img / 2 + 0.5\n", - " npimg = img.numpy()\n", - " plt.figure(figsize=(20, 3))\n", - " plt.imshow(np.transpose(npimg, (1,2,0)),\n", - " interpolation='nearest')\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "dataiter = iter(trainloader)\n", - "images, labels = dataiter.next()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAADFCAYAAAD35uNoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXeYXGXZ/z9nQwhIkSAWuiig9PJCAAFp0gVUBAGR0KRa\nAPlJE5DmCwICIgIRkC6RJoiEFqoivUgTBCkm0hUhvJRgzu+P3c85M/fuZNucndnwfK8r12Rmz8x5\n+rm/d83yPCchISEhISGhuehodQMSEhISEhJmRKQHbEJCQkJCQgVID9iEhISEhIQKkB6wCQkJCQkJ\nFSA9YBMSEhISEipAesAmJCQkJCRUgPSATUhISEhIqACDesBmWbZRlmVPZln2dJZlBzarUQkJCQkJ\nCcMd2UATTWRZNgJ4ClgfmATcC2yb5/njzWteQkJCQkLC8MRMg/juGODpPM//DpBl2SXAFkDDB2yW\nZS1LG7XQQgsBMNtsswHwxBNPtKopDWHbPv7xjwMwZcqUur8rDNV+/t577w1R6xI+jJhnnnkAmDp1\nKgDvv/8+ALPPPjsA06ZNq3t94403gHKttisWXHDBuvcf+chHAHjhhRcAeOedd4a8TQnDCq/lef7x\n3i4azAN2fuAfNe8nAavEi7Is2w3YbRD3mS4WWGABAF577TUAzjjjDAB23HFHAJ566qm669z4Tz75\nZN3vrLjiilU1sVfMNFPnNCy//PIArLTSSnV/f+yxx4DywbrSSitx5513AvDAAw8MVTMTZkAccMAB\nAMw666wAfPDBBwDcddddQLmffHD+4x+dW979NHHiRADefvttAC6++GIAnnnmmcrb3h/st99+AGy4\n4YZAKSi8+eabQPmAPfzwwwGYeeaZgbLf//73vwGYf/75gfJB7N8TPnR4vi8XDeYB2yfkeT4OGAet\nZbAJCQkJCQlDicE8YCcDtXqWBbo+qxRK2tdffz1Qsr6RI0cCpUQq2/u///s/AP7zn/8A0NHRUfe9\nLMsAePrpp4FSEl9uueUq64P3FH/84x8BePnll4GSsZ544olAyWhVHb/77rsF41588cUBuOSSSypr\nb8KMi9VXXx0oGdqqq65a97n7x32jtmXChAlAyfTmmGMOADbbbDMA7r77bv785z9X3v6+YtKkSQBM\nntx5RLmXvvSlLwEwfvx4AP7yl78A8KlPfQooVeGjR4+u+50RI0YApapZU80rr7xSYS8ShhsG40V8\nL7BYlmWLZFk2M7ANcHVzmpWQkJCQkDC8MWAGm+f5B1mWfQe4HhgBnJPn+WNNa1kPWG655bjuuut6\n/JuS5SyzzAKUThlK3r7+97//BUrJXCy88MJ1n996661AaVMaN27cgNut3Ud76VlnnQWU0u+DDz4I\nwGKLLQbAz3/+c6Bk5bJx2fs777xTSNYyiISE/mDuuecG4KKLLgJKDYjrXBuljGzUqFEAhe1fTY+2\nWK93jbabk9MVV1wBwBJLLAHA8893mtDUhKnBOuywwwC48sorAXjxxRfrfsd+RYdDz5eEhFoMygab\n5/m1wLVNaktCQkJCQsIMgwHHwQ7oZoN0ctprr7044YQTgNKmKlOV7TXqj3ZP//76668D8NGPfhQo\nJW9heEL8fl+w1VZbAbD++usDsNFGGwHw3HPPAfC3v/2t7vrPf/7zQMmula5/8pOfACXbsK2jR48u\nrvXVa84888w+tzMhYe211wZKb2K98dWQ6CWrpuSRRx4B4KWXXgJKW+Wiiy4KlJqk6667rvBEbhXm\nmmuuIjzPc0Jb6TrrrAOUGirDchZZZBGg7J8aMc8N38vY/VwG67mSMMPj/jzPV+rtoqTXSEhISEhI\nqACVh+k0A9ok99hjj262jsgslShltEquviqJNwqg9++PP96ZL2OppZbqdr9GLHnppZeue/+DH/wA\nKO1V3mONNdYAOr2Ba6En54EHHlj3PYP4ZbC17bafMnrH45Of/CRQSuIJCT1Br2A1Ia4n98G8884L\nwL/+9S+g9BaWsXq9ca/aMvWEbwX0gJ46dWrBTN1b8803H1C2d9lllwVKW6txvmqEoi9HZML2X69i\n950RAQkfbiQGm5CQkJCQUAGGBYP97Gc/W/xfSVRJ0gwst99+O1BK1tpKTD+oRK7kKdNTgpeVyhY/\n9rGP9bud2ntkpsbOmUVG/PrXvwZg1113BWD//fcH4IILLqjr4worrFD3Pb2Op0yZUvy2/VpyySWB\nclweffRRIDHYGQGNtDTNgOvce6g1kZHNNddcQJm5aOONNwZKm6V+BWpnXG8xzedQQC982WlPnr1m\ncHMM1WTZH/eT+ygyfKHPht/XVt0fX42EGR+JwSYkJCQkJFSAtvYifuihh4CSlSolQykhK2Eap/f3\nv/8dKCVzcxF/7nOfq7teKKmbg1WpV0nWuNu9994bgLfeequ4RrYrNtlkE6AsJCDLNLuU7ffVe0f7\nkKxbO5Cf+zvajaCM39X2c8QRR9TdQ8m7WcUN/ud//geA888/H+hk58YSRkTPbT1TTz75ZKBk8An9\ng1qbGMs9EBijrce7vgeuOX0QXEc333wzUMa/mlFMG61exs8//zzXXtsZwRd9DZoNzwd9FLSn1vpL\nxHNOhuoa9bv6Mnge+Crc89qi1Vr99a9/BWDOOecESm/qhBkWyYs4ISEhISGhVWhrBmsWGdnkiBEj\niji9mMEoxrFqE1Hylrnec889QJlzVUlUyVQblNDGInvUq7In+JsyNe06SsW2XUSvY1morNvfkcnK\nSrU11f7mPvvsA5R222WWWQYoWfLDDz/csN39gfllldwfffTRIs63t7V03nnnAbDtttsCKQtVIzhn\nrt3dd9+97u/aQ7XZq1Uwfnog0PNWRvvss88C8OlPfxqAz3zmMwBceumlQMnsDjnkEKBkvjK3f/7z\nn/z+978HqvcDcB0ZTy6DnX322Ys94/6Wsdp+16x7yrZGr3y/LxtXiyD8/r333guU8bQx5j1h8Gik\nQezr37Ms63bNAJ6DicEmJCQkJCS0Cm3pRWwsmqzTWLPXXnutW1UPpXy9g2PGFf+undNcpEIJU09l\nv6eNV0lXiX6FFVYocgc3gt+ViWgjUtJWqtbbcc0116xra2R2tbZn6LQza+uRWf/ud78DSvus9utN\nN90UKBn+YLPrKPE5HqNGjeLGG28E4LTTTgPKPK5CL2rtfOeeey4Ap5xyCtBZeQXKrDofNsh6hGvO\n9aDnq9oT7YWOZ8yXOxCo8XHNxrhPMxS53mzTJz7xCaDUNmnrf//997vZL6uC50PMajZlypRuLMbz\nwX7KSPWGVusU41s9X9R4eZ6st956QKlJ0vfD8Zte3HxVUBOmX4oaj3bH97//faA8F4466igADj30\n0H79TiPmKvI87+YVHuFec29985vfBMrc3X1FYrAJCQkJCQkVoC0ZrFDKUBocNWpUIVkqUdZKirWQ\n9fm59R+VSLVzKpHPP//8dd/3urfeeqvu8wcffLChjl92aI1JpeGYJcr8rdp3fb3vvvuAUgLXM9O2\n1LKLKGlbx1JbmTVmZbq9SWyN4O/LYGQur776anGNjOq4444DStazxx57ADBmzBgA/vSnPwGl96tz\ncs455wClvc8czKI3m0q7YYcddgDKikyRyemha7YjtQ3GMttfmYesSK2NfgJqUppRycU5c41FD3jX\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "show(torchvision.utils.make_grid(images[:24], padding=0))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'pullover, pullover, sneaker, sneaker, trouser, shirt, sandal, sneaker, dress, sandal, dress, dress, top, bag, top, pullover, pullover, sandal, trouser, sneaker, pullover, shirt, top, pullover, coat, coat, top, coat, pullover, boot, trouser, top, top, boot, dress, top, shirt, dress, sneaker, boot, sneaker, trouser, sneaker, coat, shirt, pullover, trouser, dress, sandal, sneaker, top, coat, trouser, coat, trouser, boot, bag, top, top, dress, sandal, shirt, shirt, sneaker, trouser, dress, trouser, shirt, sandal, top, bag, pullover, sneaker, shirt, dress, boot, trouser, dress, sandal, bag, sandal, boot, dress, boot, pullover, sandal, shirt, shirt, shirt, boot, trouser, dress, pullover, boot, boot, dress, dress, bag, coat, sandal, pullover, sneaker, shirt, shirt, trouser, bag, pullover, dress, dress, trouser, coat, bag, trouser, sneaker, sneaker, boot, sneaker, dress, trouser, sneaker, boot, shirt, trouser, shirt, dress, top, dress, top, top, top, shirt, sandal, sneaker, top, sandal, top, top, coat, boot, shirt, coat, bag, dress, bag, boot, sandal, bag, top, coat, coat, dress, bag, bag, top, boot, sandal, sneaker, dress, sandal, trouser, sandal, sandal, trouser, pullover, boot, dress, pullover, dress, trouser, coat, pullover, sandal, top, bag, pullover, sandal, top, sandal, boot, coat, dress, bag, bag, shirt, pullover, dress, top, trouser, coat, dress, bag, bag, bag, top, sneaker, bag, dress, pullover, coat, sneaker, bag, trouser, shirt, pullover, shirt, pullover, trouser, sneaker, dress, shirt, sandal, top, boot, trouser, shirt, boot, coat, trouser, shirt, pullover, sneaker, top, coat, shirt, bag, coat, sneaker, coat, bag, trouser, dress, shirt, sneaker, shirt, sandal, trouser, sneaker, dress, sandal, sneaker, top, dress, trouser, sandal, shirt, coat, top, pullover, trouser, bag, shirt, pullover, top, boot, boot, trouser'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "', '.join(classes[c] for c in labels)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "class CNN(nn.Module):\n", - " def __init__(self):\n", - " super(CNN, self).__init__()\n", - " self.conv1 = nn.Conv2d(1 , 64 , 3, padding = 1)\n", - " self.conv2 = nn.Conv2d(64 , 64 , 3, padding = 1)\n", - " self.conv3 = nn.Conv2d(64 , 64 , 3, padding = 1)\n", - " self.conv4 = nn.Conv2d(64 , 128 , 3, padding = 1)\n", - " self.conv5 = nn.Conv2d(128, 128, 3, padding = 1)\n", - " self.conv6 = nn.Conv2d(128, 128, 3, padding = 1)\n", - " self.fc1 = nn.Linear(128 * 7 * 7, 512)\n", - " self.fc2 = nn.Linear(512, 512)\n", - " self.fc3 = nn.Linear(512, 512)\n", - " self.fc4 = nn.Linear(512, 10)\n", - " self.bn1 = nn.BatchNorm2d(64)\n", - " self.bn2 = nn.BatchNorm2d(64)\n", - " self.bn3 = nn.BatchNorm2d(64)\n", - " self.bn4 = nn.BatchNorm2d(128)\n", - " self.bn5 = nn.BatchNorm2d(128)\n", - " self.bn6 = nn.BatchNorm2d(128)\n", - " self.bn7 = nn.BatchNorm1d(512)\n", - " self.bn8 = nn.BatchNorm1d(512)\n", - " self.bn9 = nn.BatchNorm1d(512)\n", - " \n", - " def forward(self, x):\n", - " x = F.dropout(F.relu(self.bn1(self.conv1(x))), 0.7)\n", - " x = F.dropout(F.relu(self.bn2(self.conv2(x))), 0.7)\n", - " x = F.dropout(F.relu(self.bn3(self.conv3(x))), 0.7)\n", - " x = F.max_pool2d(x, (2, 2))\n", - " x = F.dropout(F.relu(self.bn4(self.conv4(x))), 0.5)\n", - " x = F.dropout(F.relu(self.bn5(self.conv5(x))), 0.5)\n", - " x = F.dropout(F.relu(self.bn6(self.conv6(x))), 0.5)\n", - " x = F.max_pool2d(x, (2, 2))\n", - " x = x.view(-1, 128 * 7 * 7)\n", - " x = F.dropout(F.relu(self.bn7(self.fc1(x))), 0.3)\n", - " x = F.dropout(F.relu(self.bn8(self.fc2(x))), 0.3)\n", - " x = F.dropout(F.relu(self.bn9(self.fc3(x))), 0.3)\n", - " x = self.fc4(x)\n", - " \n", - " return x" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "cnn = CNN().cuda() if cuda else CNN()\n", - "criterion = nn.CrossEntropyLoss()\n", - "optimizer = optim.Adam(cnn.parameters())\n", - "epoch = 40\n", - "print_int = 100" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def validate_model(train = True):\n", - " cnn.eval()\n", - " total_loss = 0.0\n", - " total_prediction = 0\n", - " total_good_prediction = 0\n", - " batch_number = 0\n", - " for X, y in trainloader if train else testloader:\n", - " X, y = Variable(X), Variable(y)\n", - " X, y = (X.cuda(), y.cuda()) if cuda else (X, y)\n", - "\n", - " y_pred = cnn(X)\n", - " total_loss += criterion(y_pred, y).data[0]\n", - " total_prediction += y_pred.size()[0]\n", - " total_good_prediction += (y_pred.max(dim = 1)[1].data.cpu() == y.data.cpu()).sum()\n", - " batch_number += 1\n", - " \n", - " return total_loss / batch_number, 100 * total_good_prediction / total_prediction " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:12: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n", - " if sys.path[0] == '':\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "running_loss: 2.3096609115600586 train_loss: 2.3027710914611816 valid_loss: 2.3027379512786865 valid_acc: 10\n", - "running_loss: 0.6036235809326171 train_loss: 0.45867541432380676 valid_loss: 0.4806478023529053 valid_acc: 81\n", - "running_loss: 0.41543949127197266 train_loss: 0.3720729649066925 valid_loss: 0.40128812193870544 valid_acc: 85\n", - "running_loss: 0.34497180581092834 train_loss: 0.3654119074344635 valid_loss: 0.40196844935417175 valid_acc: 85\n", - "running_loss: 0.34459724426269533 train_loss: 0.36590418219566345 valid_loss: 0.41220685839653015 valid_acc: 85\n", - "running_loss: 0.3207188415527344 train_loss: 0.3225734829902649 valid_loss: 0.3546592891216278 valid_acc: 87\n", - "running_loss: 0.28065937757492065 train_loss: 0.33713236451148987 valid_loss: 0.36395105719566345 valid_acc: 86\n" - ] - } - ], - "source": [ - "for i in range(epoch):\n", - " running_loss = 0\n", - " for j, (X_train, y_train) in enumerate(trainloader):\n", - " cnn.train()\n", - " X_train, y_train = Variable(X_train), Variable(y_train)\n", - " X_train, y_train = (X_train.cuda(), y_train.cuda()) if cuda else (X_train, y_train)\n", - " \n", - " optimizer.zero_grad()\n", - " y_pred = cnn(X_train)\n", - " loss = criterion(y_pred, y_train)\n", - " loss.backward()\n", - " optimizer.step()\n", - " \n", - " running_loss += loss\n", - " if j % print_int == 0:\n", - " train_loss, train_acc = validate_model(True)\n", - " val_loss, val_acc = validate_model(False)\n", - " print(\n", - " \"running_loss:\", running_loss.item() / (print_int if j != 0 else 1),\n", - " \"train_loss:\", train_loss.item(),\n", - " \"valid_loss:\", val_loss.item(), \"valid_acc:\", val_acc.item()\n", - " )\n", - " running_loss = 0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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.5.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/README.md b/README.md index ffd45fc..5364c53 100644 --- a/README.md +++ b/README.md @@ -1 +1,85 @@ -# pytorch-tutorials \ No newline at end of file +# 3분 딥러닝 파이토치맛 + +> 저자: [김건우](https://github.com/keon), [염상준](https://github.com/ysangj) + +## 요구사항 + +* PyTorch 1.0 +* Python >= 3.6.1 + +## 목차 + +1. [딥러닝과 파이토치](01-Deep-Learning-And-PyTorch) + + 딥러닝의 기본 지식을 쌓고 파이토치의 장단점에 대해 알아봅니다. + * [개념] 신경망의 원리 + * [개념] 딥러닝과 신경망 + * [개념] 왜 파이토치인가? + +2. [파이토치 시작하기](02-Getting-Started-With-PyTorch) + + 파이토치 환경설정과 사용법을 익혀봅니다. + * [프로젝트 1] 파이토치 설치 & 환경구성 + * [프로젝트 2] 파이토치 예제 내려받고 실행해보기 + * [프로젝트 3] 토치비전과 토치텍스트로 데이터셋 불러오기 + +3. [파이토치로 구현하는 신경망](03-Coding-Neural-Networks-In-PyTorch) + + 파이토치를 이용하여 가장 기본적인 신경망을 만들어봅니다. + * [개념] 텐서와 Autograd + * [Hello World] 신경망 모델 구현하기 + * [Hello World] 모델 저장, 재사용 + +4. [딥러닝으로 패션 아이템 구분하기](04-Neural-Network-For-Fashion) + + Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다. + * [개념] Fashion MNIST 데이터셋 설명 + * [프로젝트 1] [Fashion MNIST 학습하기](04-Neural-Network-For-Fashion/4-fasion-mnist.ipynb) + * [팁] 성능 측정법 알아보기 (Train/Validation/Test) + * [프로젝트 2] Dropout + * 더 보기 + +5. [이미지 인식능력이 탁월한 CNN](05-CNN-For-Image-Classification) + * [개념] CNN 기초 + * [프로젝트 1] 모델 구현하기 + * [프로젝트 2] 컬러 데이터셋에 적용하기 + * [팁] 토치비전으로 복잡한 모델 사용하기 + * 더 보기 + +6. [신경망 깊게 쌓아보기](06-Getting-Deeper) - CNN의 발전사와 함께 발전된 형태의 모델들을 알아봅니다. + * [개념] 복잡한 CNN모델들 + * [개념 or 프로젝트] Alexnet + * [개념 or 프로젝트] Residual Networks (ResNet) + * [개념 or 프로젝트] Inception + * [프로젝트] High Level API 사용법 익히기 + * 더 보기 +7. [사람의 지도 없이 학습하는 Autoencoder](07-Autoencoder) - 레이블이 없는 상태서 특징추출을 하는 오토인코더에 대해 배워봅니다. + * [개념] 오토인코더 기초 + * [프로젝트 1] 오토인코더로 이미지의 특징을 압축해보기 + * [프로젝트 2] Latent 공간 탐험하기 + * 더 보기 +8. [경쟁을 통해 성장하는 GAN](08-Generative-Adversarial-Networks) - GAN을 이용하여 새로운 패션 아이템을 만들어봅니다. + * [개념] GAN 기초 + * [프로젝트 1] GAN으로 새로운 패션아이템 생성하기 + * [프로젝트 2] Conditional GAN으로 생성 컨트롤하기 + * 더 보기 +9. [순차적인 데이터를 처리하는 RNN](09-RNN-For-Sequential-Data) - RNN을 활용하여 영화 리뷰 감정 분석과 기계번역을 해봅니다 + * [개념] RNN 기초 + * [프로젝트 1] 영화 리뷰 감정 분석 + * [프로젝트 2] Seq2Seq 기계 번역 + * 더 보기 +10. [주어진 환경과 상호작용을 통해 성장하는 DQN](10-DQN-Learns-From-Environment) - 간단한 게임환경 안에서 스스로 성장하는 DQN 에이전트를 만들어봅니다. + * [개념] 강화학습과 DQN기초 + * [팁] OpenAI Gym + * [프로젝트 1] 카트폴 게임 마스터하기 + * 더 보기 +11. [간단한 자율주행차 만들기](11-Mini-Self-Driving-Car) - 앞서 배운 CNN, RNN, 그리고 DQN을 활용하여 간단한 자율주행차를 만들어봅니다. + * [개념] 자율주행차란? + * [팁] 자율주행 시뮬레이터 소개 + * [팁] 설치와 환경설정 + * [프로젝트 1] 딥러닝으로 자동차 조종하기 + * 더 보기 + +## 참고 + +[홍콩과기대 김성훈 교수님의 모두를 위한 머신러닝/딥러닝 강의](https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm)