{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "### AITech — Uczenie maszynowe — laboratoria\n", "# 10. Sieci neuronowe (PyTorch)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Przykład implementacji sieci neuronowej do rozpoznawania cyfr ze [zbioru MNIST](https://en.wikipedia.org/wiki/MNIST_database), według https://github.com/pytorch/examples/tree/master/mnist" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "from torchvision import datasets, transforms\n", "from torch.optim.lr_scheduler import StepLR\n", "\n", "\n", "class Net(nn.Module):\n", " \"\"\"W PyTorchu tworzenie sieci neuronowej\n", " polega na zdefiniowaniu klasy, która dziedziczy z nn.Module.\n", " \"\"\"\n", " \n", " def __init__(self):\n", " super().__init__()\n", " \n", " # Warstwy splotowe\n", " self.conv1 = nn.Conv2d(1, 32, 3, 1)\n", " self.conv2 = nn.Conv2d(32, 64, 3, 1)\n", " \n", " # Warstwy dropout\n", " self.dropout1 = nn.Dropout(0.25)\n", " self.dropout2 = nn.Dropout(0.5)\n", " \n", " # Warstwy liniowe\n", " self.fc1 = nn.Linear(9216, 128)\n", " self.fc2 = nn.Linear(128, 10)\n", "\n", " def forward(self, x):\n", " \"\"\"Definiujemy przechodzenie \"do przodu\" jako kolejne przekształcenia wejścia x\"\"\"\n", " x = self.conv1(x)\n", " x = F.relu(x)\n", " x = self.conv2(x)\n", " x = F.relu(x)\n", " x = F.max_pool2d(x, 2)\n", " x = self.dropout1(x)\n", " x = torch.flatten(x, 1)\n", " x = self.fc1(x)\n", " x = F.relu(x)\n", " x = self.dropout2(x)\n", " x = self.fc2(x)\n", " output = F.log_softmax(x, dim=1)\n", " return output\n", "\n", "\n", "def train(model, device, train_loader, optimizer, epoch, log_interval, dry_run):\n", " \"\"\"Uczenie modelu\"\"\"\n", " model.train()\n", " for batch_idx, (data, target) in enumerate(train_loader):\n", " data, target = data.to(device), target.to(device) # wrzucenie danych na kartę graficzną (jeśli dotyczy)\n", " optimizer.zero_grad() # wyzerowanie gradientu\n", " output = model(data) # przejście \"do przodu\"\n", " loss = F.nll_loss(output, target) # obliczenie funkcji kosztu\n", " loss.backward() # propagacja wsteczna\n", " optimizer.step() # krok optymalizatora\n", " if batch_idx % log_interval == 0:\n", " print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n", " epoch, batch_idx * len(data), len(train_loader.dataset),\n", " 100. * batch_idx / len(train_loader), loss.item()))\n", " if dry_run:\n", " break\n", "\n", "\n", "def test(model, device, test_loader):\n", " \"\"\"Testowanie modelu\"\"\"\n", " model.eval()\n", " test_loss = 0\n", " correct = 0\n", " with torch.no_grad():\n", " for data, target in test_loader:\n", " data, target = data.to(device), target.to(device) # wrzucenie danych na kartę graficzną (jeśli dotyczy)\n", " output = model(data) # przejście \"do przodu\"\n", " test_loss += F.nll_loss(output, target, reduction='sum').item() # suma kosztów z każdego batcha\n", " pred = output.argmax(dim=1, keepdim=True) # predykcja na podstawie maks. logarytmu prawdopodobieństwa\n", " correct += pred.eq(target.view_as(pred)).sum().item()\n", "\n", " test_loss /= len(test_loader.dataset) # obliczenie kosztu na zbiorze testowym\n", "\n", " print('\\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n", " test_loss, correct, len(test_loader.dataset),\n", " 100. * correct / len(test_loader.dataset)))\n", "\n", "\n", "def run(\n", " batch_size=64,\n", " test_batch_size=1000,\n", " epochs=14,\n", " lr=1.0,\n", " gamma=0.7,\n", " no_cuda=False,\n", " dry_run=False,\n", " seed=1,\n", " log_interval=10,\n", " save_model=False,\n", " ):\n", " \"\"\"Main training function.\n", " \n", " Arguments:\n", " batch_size - wielkość batcha podczas uczenia (default: 64),\n", " test_batch_size - wielkość batcha podczas testowania (default: 1000)\n", " epochs - liczba epok uczenia (default: 14)\n", " lr - współczynnik uczenia (learning rate) (default: 1.0)\n", " gamma - współczynnik gamma (dla optymalizatora) (default: 0.7)\n", " no_cuda - wyłącza uczenie na karcie graficznej (default: False)\n", " dry_run - szybko (\"na sucho\") sprawdza pojedyncze przejście (default: False)\n", " seed - ziarno generatora liczb pseudolosowych (default: 1)\n", " log_interval - interwał logowania stanu uczenia (default: 10)\n", " save_model - zapisuje bieżący model (default: False)\n", " \"\"\"\n", " use_cuda = no_cuda and torch.cuda.is_available()\n", "\n", " torch.manual_seed(seed)\n", "\n", " device = torch.device(\"cuda\" if use_cuda else \"cpu\")\n", "\n", " train_kwargs = {'batch_size': batch_size}\n", " test_kwargs = {'batch_size': test_batch_size}\n", " if use_cuda:\n", " cuda_kwargs = {'num_workers': 1,\n", " 'pin_memory': True,\n", " 'shuffle': True}\n", " train_kwargs.update(cuda_kwargs)\n", " test_kwargs.update(cuda_kwargs)\n", "\n", " transform=transforms.Compose([\n", " transforms.ToTensor(),\n", " transforms.Normalize((0.1307,), (0.3081,))\n", " ])\n", " dataset1 = datasets.MNIST('../data', train=True, download=True,\n", " transform=transform)\n", " dataset2 = datasets.MNIST('../data', train=False,\n", " transform=transform)\n", " train_loader = torch.utils.data.DataLoader(dataset1,**train_kwargs)\n", " test_loader = torch.utils.data.DataLoader(dataset2, **test_kwargs)\n", "\n", " model = Net().to(device)\n", " optimizer = optim.Adadelta(model.parameters(), lr=lr)\n", "\n", " scheduler = StepLR(optimizer, step_size=1, gamma=gamma)\n", " for epoch in range(1, epochs + 1):\n", " train(model, device, train_loader, optimizer, epoch, log_interval, dry_run)\n", " test(model, device, test_loader)\n", " scheduler.step()\n", "\n", " if save_model:\n", " torch.save(model.state_dict(), \"mnist_cnn.pt\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Uwaga**: uruchomienie tego przykładu długo trwa. Żeby trwało krócej, można zmniejszyć liczbę epok." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\pawel\\anaconda3\\lib\\site-packages\\torch\\autograd\\__init__.py:130: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 9020). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at ..\\c10\\cuda\\CUDAFunctions.cpp:100.)\n", " Variable._execution_engine.run_backward(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.305400\n", "Train Epoch: 1 [640/60000 (1%)]\tLoss: 1.359776\n", "Train Epoch: 1 [1280/60000 (2%)]\tLoss: 0.842885\n", "Train Epoch: 1 [1920/60000 (3%)]\tLoss: 0.587047\n", "Train Epoch: 1 [2560/60000 (4%)]\tLoss: 0.368678\n", "Train Epoch: 1 [3200/60000 (5%)]\tLoss: 0.468111\n", "Train Epoch: 1 [3840/60000 (6%)]\tLoss: 0.264335\n", "Train Epoch: 1 [4480/60000 (7%)]\tLoss: 0.288264\n", "Train Epoch: 1 [5120/60000 (9%)]\tLoss: 0.579878\n", "Train Epoch: 1 [5760/60000 (10%)]\tLoss: 0.225971\n", "Train Epoch: 1 [6400/60000 (11%)]\tLoss: 0.235435\n", "Train Epoch: 1 [7040/60000 (12%)]\tLoss: 0.334189\n", "Train Epoch: 1 [7680/60000 (13%)]\tLoss: 0.205391\n", "Train Epoch: 1 [8320/60000 (14%)]\tLoss: 0.224400\n", "Train Epoch: 1 [8960/60000 (15%)]\tLoss: 0.265982\n", "Train Epoch: 1 [9600/60000 (16%)]\tLoss: 0.110670\n", "Train Epoch: 1 [10240/60000 (17%)]\tLoss: 0.266168\n", "Train Epoch: 1 [10880/60000 (18%)]\tLoss: 0.086807\n", "Train Epoch: 1 [11520/60000 (19%)]\tLoss: 0.417719\n", "Train Epoch: 1 [12160/60000 (20%)]\tLoss: 0.276456\n", "Train Epoch: 1 [12800/60000 (21%)]\tLoss: 0.242908\n", "Train Epoch: 1 [13440/60000 (22%)]\tLoss: 0.221252\n", "Train Epoch: 1 [14080/60000 (23%)]\tLoss: 0.130435\n", "Train Epoch: 1 [14720/60000 (25%)]\tLoss: 0.371944\n", "Train Epoch: 1 [15360/60000 (26%)]\tLoss: 0.143184\n", "Train Epoch: 1 [16000/60000 (27%)]\tLoss: 0.132785\n", "Train Epoch: 1 [16640/60000 (28%)]\tLoss: 0.167957\n", "Train Epoch: 1 [17280/60000 (29%)]\tLoss: 0.075128\n", "Train Epoch: 1 [17920/60000 (30%)]\tLoss: 0.200841\n", "Train Epoch: 1 [18560/60000 (31%)]\tLoss: 0.176965\n", "Train Epoch: 1 [19200/60000 (32%)]\tLoss: 0.277037\n", "Train Epoch: 1 [19840/60000 (33%)]\tLoss: 0.068315\n", "Train Epoch: 1 [20480/60000 (34%)]\tLoss: 0.035655\n", "Train Epoch: 1 [21120/60000 (35%)]\tLoss: 0.225525\n", "Train Epoch: 1 [21760/60000 (36%)]\tLoss: 0.012368\n", "Train Epoch: 1 [22400/60000 (37%)]\tLoss: 0.077660\n", "Train Epoch: 1 [23040/60000 (38%)]\tLoss: 0.235851\n", "Train Epoch: 1 [23680/60000 (39%)]\tLoss: 0.140474\n", "Train Epoch: 1 [24320/60000 (41%)]\tLoss: 0.014417\n", "Train Epoch: 1 [24960/60000 (42%)]\tLoss: 0.090741\n", "Train Epoch: 1 [25600/60000 (43%)]\tLoss: 0.058374\n", "Train Epoch: 1 [26240/60000 (44%)]\tLoss: 0.073511\n", "Train Epoch: 1 [26880/60000 (45%)]\tLoss: 0.284830\n", "Train Epoch: 1 [27520/60000 (46%)]\tLoss: 0.242107\n", "Train Epoch: 1 [28160/60000 (47%)]\tLoss: 0.106403\n", "Train Epoch: 1 [28800/60000 (48%)]\tLoss: 0.126598\n", "Train Epoch: 1 [29440/60000 (49%)]\tLoss: 0.048677\n", "Train Epoch: 1 [30080/60000 (50%)]\tLoss: 0.170355\n", "Train Epoch: 1 [30720/60000 (51%)]\tLoss: 0.048502\n", "Train Epoch: 1 [31360/60000 (52%)]\tLoss: 0.110658\n", "Train Epoch: 1 [32000/60000 (53%)]\tLoss: 0.209499\n", "Train Epoch: 1 [32640/60000 (54%)]\tLoss: 0.129011\n", "Train Epoch: 1 [33280/60000 (55%)]\tLoss: 0.054514\n", "Train Epoch: 1 [33920/60000 (57%)]\tLoss: 0.022598\n", "Train Epoch: 1 [34560/60000 (58%)]\tLoss: 0.013603\n", "Train Epoch: 1 [35200/60000 (59%)]\tLoss: 0.234786\n", "Train Epoch: 1 [35840/60000 (60%)]\tLoss: 0.159701\n", "Train Epoch: 1 [36480/60000 (61%)]\tLoss: 0.046117\n", "Train Epoch: 1 [37120/60000 (62%)]\tLoss: 0.116941\n", "Train Epoch: 1 [37760/60000 (63%)]\tLoss: 0.135829\n", "Train Epoch: 1 [38400/60000 (64%)]\tLoss: 0.148995\n", "Train Epoch: 1 [39040/60000 (65%)]\tLoss: 0.065900\n", "Train Epoch: 1 [39680/60000 (66%)]\tLoss: 0.025586\n", "Train Epoch: 1 [40320/60000 (67%)]\tLoss: 0.063601\n", "Train Epoch: 1 [40960/60000 (68%)]\tLoss: 0.102640\n", "Train Epoch: 1 [41600/60000 (69%)]\tLoss: 0.105056\n", "Train Epoch: 1 [42240/60000 (70%)]\tLoss: 0.086704\n", "Train Epoch: 1 [42880/60000 (71%)]\tLoss: 0.107370\n", "Train Epoch: 1 [43520/60000 (72%)]\tLoss: 0.253792\n", "Train Epoch: 1 [44160/60000 (74%)]\tLoss: 0.062311\n", "Train Epoch: 1 [44800/60000 (75%)]\tLoss: 0.162836\n", "Train Epoch: 1 [45440/60000 (76%)]\tLoss: 0.199484\n", "Train Epoch: 1 [46080/60000 (77%)]\tLoss: 0.153846\n", "Train Epoch: 1 [46720/60000 (78%)]\tLoss: 0.180161\n", "Train Epoch: 1 [47360/60000 (79%)]\tLoss: 0.136180\n", "Train Epoch: 1 [48000/60000 (80%)]\tLoss: 0.115283\n", "Train Epoch: 1 [48640/60000 (81%)]\tLoss: 0.027290\n", "Train Epoch: 1 [49280/60000 (82%)]\tLoss: 0.042729\n", "Train Epoch: 1 [49920/60000 (83%)]\tLoss: 0.075887\n", "Train Epoch: 1 [50560/60000 (84%)]\tLoss: 0.063403\n", "Train Epoch: 1 [51200/60000 (85%)]\tLoss: 0.313571\n", "Train Epoch: 1 [51840/60000 (86%)]\tLoss: 0.013781\n", "Train Epoch: 1 [52480/60000 (87%)]\tLoss: 0.033717\n", "Train Epoch: 1 [53120/60000 (88%)]\tLoss: 0.182661\n", "Train Epoch: 1 [53760/60000 (90%)]\tLoss: 0.039041\n", "Train Epoch: 1 [54400/60000 (91%)]\tLoss: 0.099427\n", "Train Epoch: 1 [55040/60000 (92%)]\tLoss: 0.016252\n", "Train Epoch: 1 [55680/60000 (93%)]\tLoss: 0.077332\n", "Train Epoch: 1 [56320/60000 (94%)]\tLoss: 0.057406\n", "Train Epoch: 1 [56960/60000 (95%)]\tLoss: 0.107130\n", "Train Epoch: 1 [57600/60000 (96%)]\tLoss: 0.126342\n", "Train Epoch: 1 [58240/60000 (97%)]\tLoss: 0.031756\n", "Train Epoch: 1 [58880/60000 (98%)]\tLoss: 0.009388\n", "Train Epoch: 1 [59520/60000 (99%)]\tLoss: 0.001617\n", "\n", "Test set: Average loss: 0.0452, Accuracy: 9848/10000 (98%)\n", "\n", "Train Epoch: 2 [0/60000 (0%)]\tLoss: 0.128514\n", "Train Epoch: 2 [640/60000 (1%)]\tLoss: 0.056695\n", "Train Epoch: 2 [1280/60000 (2%)]\tLoss: 0.034919\n", "Train Epoch: 2 [1920/60000 (3%)]\tLoss: 0.125458\n", "Train Epoch: 2 [2560/60000 (4%)]\tLoss: 0.052010\n", "Train Epoch: 2 [3200/60000 (5%)]\tLoss: 0.043915\n", "Train Epoch: 2 [3840/60000 (6%)]\tLoss: 0.015439\n", "Train Epoch: 2 [4480/60000 (7%)]\tLoss: 0.063102\n", "Train Epoch: 2 [5120/60000 (9%)]\tLoss: 0.121400\n", "Train Epoch: 2 [5760/60000 (10%)]\tLoss: 0.114424\n", "Train Epoch: 2 [6400/60000 (11%)]\tLoss: 0.212067\n", "Train Epoch: 2 [7040/60000 (12%)]\tLoss: 0.195634\n", "Train Epoch: 2 [7680/60000 (13%)]\tLoss: 0.075988\n", "Train Epoch: 2 [8320/60000 (14%)]\tLoss: 0.032679\n", "Train Epoch: 2 [8960/60000 (15%)]\tLoss: 0.111834\n", "Train Epoch: 2 [9600/60000 (16%)]\tLoss: 0.027801\n", "Train Epoch: 2 [10240/60000 (17%)]\tLoss: 0.073348\n", "Train Epoch: 2 [10880/60000 (18%)]\tLoss: 0.033118\n", "Train Epoch: 2 [11520/60000 (19%)]\tLoss: 0.172008\n", "Train Epoch: 2 [12160/60000 (20%)]\tLoss: 0.057611\n", "Train Epoch: 2 [12800/60000 (21%)]\tLoss: 0.064679\n", "Train Epoch: 2 [13440/60000 (22%)]\tLoss: 0.006825\n", "Train Epoch: 2 [14080/60000 (23%)]\tLoss: 0.019145\n", "Train Epoch: 2 [14720/60000 (25%)]\tLoss: 0.094843\n", "Train Epoch: 2 [15360/60000 (26%)]\tLoss: 0.047758\n", "Train Epoch: 2 [16000/60000 (27%)]\tLoss: 0.179497\n", "Train Epoch: 2 [16640/60000 (28%)]\tLoss: 0.076738\n", "Train Epoch: 2 [17280/60000 (29%)]\tLoss: 0.006352\n", "Train Epoch: 2 [17920/60000 (30%)]\tLoss: 0.051825\n", "Train Epoch: 2 [18560/60000 (31%)]\tLoss: 0.110851\n", "Train Epoch: 2 [19200/60000 (32%)]\tLoss: 0.065105\n", "Train Epoch: 2 [19840/60000 (33%)]\tLoss: 0.135653\n", "Train Epoch: 2 [20480/60000 (34%)]\tLoss: 0.021735\n", "Train Epoch: 2 [21120/60000 (35%)]\tLoss: 0.071245\n", "Train Epoch: 2 [21760/60000 (36%)]\tLoss: 0.003421\n", "Train Epoch: 2 [22400/60000 (37%)]\tLoss: 0.014809\n", "Train Epoch: 2 [23040/60000 (38%)]\tLoss: 0.053631\n", "Train Epoch: 2 [23680/60000 (39%)]\tLoss: 0.082716\n", "Train Epoch: 2 [24320/60000 (41%)]\tLoss: 0.001589\n", "Train Epoch: 2 [24960/60000 (42%)]\tLoss: 0.006215\n", "Train Epoch: 2 [25600/60000 (43%)]\tLoss: 0.042557\n", "Train Epoch: 2 [26240/60000 (44%)]\tLoss: 0.014680\n", "Train Epoch: 2 [26880/60000 (45%)]\tLoss: 0.124249\n", "Train Epoch: 2 [27520/60000 (46%)]\tLoss: 0.029917\n", "Train Epoch: 2 [28160/60000 (47%)]\tLoss: 0.100452\n", "Train Epoch: 2 [28800/60000 (48%)]\tLoss: 0.009274\n", "Train Epoch: 2 [29440/60000 (49%)]\tLoss: 0.076723\n", "Train Epoch: 2 [30080/60000 (50%)]\tLoss: 0.036926\n", "Train Epoch: 2 [30720/60000 (51%)]\tLoss: 0.097355\n", "Train Epoch: 2 [31360/60000 (52%)]\tLoss: 0.113212\n", "Train Epoch: 2 [32000/60000 (53%)]\tLoss: 0.126080\n", "Train Epoch: 2 [32640/60000 (54%)]\tLoss: 0.116121\n", "Train Epoch: 2 [33280/60000 (55%)]\tLoss: 0.053296\n", "Train Epoch: 2 [33920/60000 (57%)]\tLoss: 0.004935\n", "Train Epoch: 2 [34560/60000 (58%)]\tLoss: 0.018139\n", "Train Epoch: 2 [35200/60000 (59%)]\tLoss: 0.083827\n", "Train Epoch: 2 [35840/60000 (60%)]\tLoss: 0.064212\n", "Train Epoch: 2 [36480/60000 (61%)]\tLoss: 0.042852\n", "Train Epoch: 2 [37120/60000 (62%)]\tLoss: 0.053815\n", "Train Epoch: 2 [37760/60000 (63%)]\tLoss: 0.064109\n", "Train Epoch: 2 [38400/60000 (64%)]\tLoss: 0.082490\n", "Train Epoch: 2 [39040/60000 (65%)]\tLoss: 0.001922\n", "Train Epoch: 2 [39680/60000 (66%)]\tLoss: 0.021783\n", "Train Epoch: 2 [40320/60000 (67%)]\tLoss: 0.041218\n", "Train Epoch: 2 [40960/60000 (68%)]\tLoss: 0.037719\n", "Train Epoch: 2 [41600/60000 (69%)]\tLoss: 0.040485\n", "Train Epoch: 2 [42240/60000 (70%)]\tLoss: 0.025866\n", "Train Epoch: 2 [42880/60000 (71%)]\tLoss: 0.079971\n", "Train Epoch: 2 [43520/60000 (72%)]\tLoss: 0.051924\n", "Train Epoch: 2 [44160/60000 (74%)]\tLoss: 0.003454\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train Epoch: 2 [44800/60000 (75%)]\tLoss: 0.059499\n", "Train Epoch: 2 [45440/60000 (76%)]\tLoss: 0.109399\n", "Train Epoch: 2 [46080/60000 (77%)]\tLoss: 0.078003\n", "Train Epoch: 2 [46720/60000 (78%)]\tLoss: 0.111255\n", "Train Epoch: 2 [47360/60000 (79%)]\tLoss: 0.061806\n", "Train Epoch: 2 [48000/60000 (80%)]\tLoss: 0.039426\n", "Train Epoch: 2 [48640/60000 (81%)]\tLoss: 0.035167\n", "Train Epoch: 2 [49280/60000 (82%)]\tLoss: 0.027696\n", "Train Epoch: 2 [49920/60000 (83%)]\tLoss: 0.021057\n", "Train Epoch: 2 [50560/60000 (84%)]\tLoss: 0.040626\n", "Train Epoch: 2 [51200/60000 (85%)]\tLoss: 0.150808\n", "Train Epoch: 2 [51840/60000 (86%)]\tLoss: 0.026038\n", "Train Epoch: 2 [52480/60000 (87%)]\tLoss: 0.014357\n", "Train Epoch: 2 [53120/60000 (88%)]\tLoss: 0.030147\n", "Train Epoch: 2 [53760/60000 (90%)]\tLoss: 0.085780\n", "Train Epoch: 2 [54400/60000 (91%)]\tLoss: 0.028594\n", "Train Epoch: 2 [55040/60000 (92%)]\tLoss: 0.037993\n", "Train Epoch: 2 [55680/60000 (93%)]\tLoss: 0.070294\n", "Train Epoch: 2 [56320/60000 (94%)]\tLoss: 0.035509\n", "Train Epoch: 2 [56960/60000 (95%)]\tLoss: 0.022443\n", "Train Epoch: 2 [57600/60000 (96%)]\tLoss: 0.034794\n", "Train Epoch: 2 [58240/60000 (97%)]\tLoss: 0.017368\n", "Train Epoch: 2 [58880/60000 (98%)]\tLoss: 0.016261\n", "Train Epoch: 2 [59520/60000 (99%)]\tLoss: 0.009625\n", "\n", "Test set: Average loss: 0.0345, Accuracy: 9876/10000 (99%)\n", "\n", "Train Epoch: 3 [0/60000 (0%)]\tLoss: 0.017473\n", "Train Epoch: 3 [640/60000 (1%)]\tLoss: 0.018726\n", "Train Epoch: 3 [1280/60000 (2%)]\tLoss: 0.012606\n", "Train Epoch: 3 [1920/60000 (3%)]\tLoss: 0.078804\n", "Train Epoch: 3 [2560/60000 (4%)]\tLoss: 0.044306\n", "Train Epoch: 3 [3200/60000 (5%)]\tLoss: 0.054774\n", "Train Epoch: 3 [3840/60000 (6%)]\tLoss: 0.028103\n", "Train Epoch: 3 [4480/60000 (7%)]\tLoss: 0.017842\n", "Train Epoch: 3 [5120/60000 (9%)]\tLoss: 0.051417\n", "Train Epoch: 3 [5760/60000 (10%)]\tLoss: 0.021005\n", "Train Epoch: 3 [6400/60000 (11%)]\tLoss: 0.079213\n", "Train Epoch: 3 [7040/60000 (12%)]\tLoss: 0.249057\n", "Train Epoch: 3 [7680/60000 (13%)]\tLoss: 0.021483\n", "Train Epoch: 3 [8320/60000 (14%)]\tLoss: 0.049537\n", "Train Epoch: 3 [8960/60000 (15%)]\tLoss: 0.064109\n", "Train Epoch: 3 [9600/60000 (16%)]\tLoss: 0.121206\n", "Train Epoch: 3 [10240/60000 (17%)]\tLoss: 0.272828\n", "Train Epoch: 3 [10880/60000 (18%)]\tLoss: 0.011667\n", "Train Epoch: 3 [11520/60000 (19%)]\tLoss: 0.074186\n", "Train Epoch: 3 [12160/60000 (20%)]\tLoss: 0.020923\n", "Train Epoch: 3 [12800/60000 (21%)]\tLoss: 0.071615\n", "Train Epoch: 3 [13440/60000 (22%)]\tLoss: 0.032925\n", "Train Epoch: 3 [14080/60000 (23%)]\tLoss: 0.020151\n", "Train Epoch: 3 [14720/60000 (25%)]\tLoss: 0.137694\n", "Train Epoch: 3 [15360/60000 (26%)]\tLoss: 0.014524\n", "Train Epoch: 3 [16000/60000 (27%)]\tLoss: 0.018904\n", "Train Epoch: 3 [16640/60000 (28%)]\tLoss: 0.115159\n", "Train Epoch: 3 [17280/60000 (29%)]\tLoss: 0.001221\n", "Train Epoch: 3 [17920/60000 (30%)]\tLoss: 0.039947\n", "Train Epoch: 3 [18560/60000 (31%)]\tLoss: 0.027275\n", "Train Epoch: 3 [19200/60000 (32%)]\tLoss: 0.115719\n", "Train Epoch: 3 [19840/60000 (33%)]\tLoss: 0.056799\n", "Train Epoch: 3 [20480/60000 (34%)]\tLoss: 0.003543\n", "Train Epoch: 3 [21120/60000 (35%)]\tLoss: 0.093628\n", "Train Epoch: 3 [21760/60000 (36%)]\tLoss: 0.041564\n", "Train Epoch: 3 [22400/60000 (37%)]\tLoss: 0.001555\n", "Train Epoch: 3 [23040/60000 (38%)]\tLoss: 0.047547\n", "Train Epoch: 3 [23680/60000 (39%)]\tLoss: 0.028232\n", "Train Epoch: 3 [24320/60000 (41%)]\tLoss: 0.002724\n", "Train Epoch: 3 [24960/60000 (42%)]\tLoss: 0.014905\n", "Train Epoch: 3 [25600/60000 (43%)]\tLoss: 0.077347\n", "Train Epoch: 3 [26240/60000 (44%)]\tLoss: 0.055335\n", "Train Epoch: 3 [26880/60000 (45%)]\tLoss: 0.034777\n", "Train Epoch: 3 [27520/60000 (46%)]\tLoss: 0.137610\n", "Train Epoch: 3 [28160/60000 (47%)]\tLoss: 0.087771\n", "Train Epoch: 3 [28800/60000 (48%)]\tLoss: 0.031867\n", "Train Epoch: 3 [29440/60000 (49%)]\tLoss: 0.024958\n", "Train Epoch: 3 [30080/60000 (50%)]\tLoss: 0.047101\n", "Train Epoch: 3 [30720/60000 (51%)]\tLoss: 0.094225\n", "Train Epoch: 3 [31360/60000 (52%)]\tLoss: 0.076411\n", "Train Epoch: 3 [32000/60000 (53%)]\tLoss: 0.029375\n", "Train Epoch: 3 [32640/60000 (54%)]\tLoss: 0.003572\n", "Train Epoch: 3 [33280/60000 (55%)]\tLoss: 0.081241\n", "Train Epoch: 3 [33920/60000 (57%)]\tLoss: 0.001588\n", "Train Epoch: 3 [34560/60000 (58%)]\tLoss: 0.002668\n", "Train Epoch: 3 [35200/60000 (59%)]\tLoss: 0.061726\n", "Train Epoch: 3 [35840/60000 (60%)]\tLoss: 0.061300\n", "Train Epoch: 3 [36480/60000 (61%)]\tLoss: 0.012152\n", "Train Epoch: 3 [37120/60000 (62%)]\tLoss: 0.042971\n", "Train Epoch: 3 [37760/60000 (63%)]\tLoss: 0.053396\n", "Train Epoch: 3 [38400/60000 (64%)]\tLoss: 0.072361\n", "Train Epoch: 3 [39040/60000 (65%)]\tLoss: 0.001462\n", "Train Epoch: 3 [39680/60000 (66%)]\tLoss: 0.027137\n", "Train Epoch: 3 [40320/60000 (67%)]\tLoss: 0.054929\n", "Train Epoch: 3 [40960/60000 (68%)]\tLoss: 0.052149\n", "Train Epoch: 3 [41600/60000 (69%)]\tLoss: 0.042770\n", "Train Epoch: 3 [42240/60000 (70%)]\tLoss: 0.022091\n", "Train Epoch: 3 [42880/60000 (71%)]\tLoss: 0.040765\n", "Train Epoch: 3 [43520/60000 (72%)]\tLoss: 0.065408\n", "Train Epoch: 3 [44160/60000 (74%)]\tLoss: 0.002670\n", "Train Epoch: 3 [44800/60000 (75%)]\tLoss: 0.020735\n", "Train Epoch: 3 [45440/60000 (76%)]\tLoss: 0.035558\n", "Train Epoch: 3 [46080/60000 (77%)]\tLoss: 0.086752\n", "Train Epoch: 3 [46720/60000 (78%)]\tLoss: 0.063626\n", "Train Epoch: 3 [47360/60000 (79%)]\tLoss: 0.066880\n", "Train Epoch: 3 [48000/60000 (80%)]\tLoss: 0.028604\n", "Train Epoch: 3 [48640/60000 (81%)]\tLoss: 0.012193\n", "Train Epoch: 3 [49280/60000 (82%)]\tLoss: 0.002023\n", "Train Epoch: 3 [49920/60000 (83%)]\tLoss: 0.005326\n", "Train Epoch: 3 [50560/60000 (84%)]\tLoss: 0.028037\n", "Train Epoch: 3 [51200/60000 (85%)]\tLoss: 0.041471\n", "Train Epoch: 3 [51840/60000 (86%)]\tLoss: 0.034811\n", "Train Epoch: 3 [52480/60000 (87%)]\tLoss: 0.005038\n", "Train Epoch: 3 [53120/60000 (88%)]\tLoss: 0.037799\n", "Train Epoch: 3 [53760/60000 (90%)]\tLoss: 0.159812\n", "Train Epoch: 3 [54400/60000 (91%)]\tLoss: 0.021355\n", "Train Epoch: 3 [55040/60000 (92%)]\tLoss: 0.006514\n", "Train Epoch: 3 [55680/60000 (93%)]\tLoss: 0.058171\n", "Train Epoch: 3 [56320/60000 (94%)]\tLoss: 0.011602\n", "Train Epoch: 3 [56960/60000 (95%)]\tLoss: 0.008109\n", "Train Epoch: 3 [57600/60000 (96%)]\tLoss: 0.068050\n", "Train Epoch: 3 [58240/60000 (97%)]\tLoss: 0.010048\n", "Train Epoch: 3 [58880/60000 (98%)]\tLoss: 0.004794\n", "Train Epoch: 3 [59520/60000 (99%)]\tLoss: 0.000842\n", "\n", "Test set: Average loss: 0.0319, Accuracy: 9889/10000 (99%)\n", "\n", "Train Epoch: 4 [0/60000 (0%)]\tLoss: 0.011954\n", "Train Epoch: 4 [640/60000 (1%)]\tLoss: 0.011093\n", "Train Epoch: 4 [1280/60000 (2%)]\tLoss: 0.022356\n", "Train Epoch: 4 [1920/60000 (3%)]\tLoss: 0.066412\n", "Train Epoch: 4 [2560/60000 (4%)]\tLoss: 0.008823\n", "Train Epoch: 4 [3200/60000 (5%)]\tLoss: 0.006209\n", "Train Epoch: 4 [3840/60000 (6%)]\tLoss: 0.016633\n", "Train Epoch: 4 [4480/60000 (7%)]\tLoss: 0.046557\n", "Train Epoch: 4 [5120/60000 (9%)]\tLoss: 0.236557\n", "Train Epoch: 4 [5760/60000 (10%)]\tLoss: 0.016318\n", "Train Epoch: 4 [6400/60000 (11%)]\tLoss: 0.095599\n", "Train Epoch: 4 [7040/60000 (12%)]\tLoss: 0.109512\n", "Train Epoch: 4 [7680/60000 (13%)]\tLoss: 0.025031\n", "Train Epoch: 4 [8320/60000 (14%)]\tLoss: 0.022703\n", "Train Epoch: 4 [8960/60000 (15%)]\tLoss: 0.072901\n", "Train Epoch: 4 [9600/60000 (16%)]\tLoss: 0.027679\n", "Train Epoch: 4 [10240/60000 (17%)]\tLoss: 0.100027\n", "Train Epoch: 4 [10880/60000 (18%)]\tLoss: 0.022117\n", "Train Epoch: 4 [11520/60000 (19%)]\tLoss: 0.058990\n", "Train Epoch: 4 [12160/60000 (20%)]\tLoss: 0.022886\n", "Train Epoch: 4 [12800/60000 (21%)]\tLoss: 0.014279\n", "Train Epoch: 4 [13440/60000 (22%)]\tLoss: 0.009374\n", "Train Epoch: 4 [14080/60000 (23%)]\tLoss: 0.004224\n", "Train Epoch: 4 [14720/60000 (25%)]\tLoss: 0.128787\n", "Train Epoch: 4 [15360/60000 (26%)]\tLoss: 0.006627\n", "Train Epoch: 4 [16000/60000 (27%)]\tLoss: 0.045232\n", "Train Epoch: 4 [16640/60000 (28%)]\tLoss: 0.126329\n", "Train Epoch: 4 [17280/60000 (29%)]\tLoss: 0.002526\n", "Train Epoch: 4 [17920/60000 (30%)]\tLoss: 0.062796\n", "Train Epoch: 4 [18560/60000 (31%)]\tLoss: 0.006109\n", "Train Epoch: 4 [19200/60000 (32%)]\tLoss: 0.032889\n", "Train Epoch: 4 [19840/60000 (33%)]\tLoss: 0.053419\n", "Train Epoch: 4 [20480/60000 (34%)]\tLoss: 0.003135\n", "Train Epoch: 4 [21120/60000 (35%)]\tLoss: 0.087492\n", "Train Epoch: 4 [21760/60000 (36%)]\tLoss: 0.005437\n", "Train Epoch: 4 [22400/60000 (37%)]\tLoss: 0.001357\n", "Train Epoch: 4 [23040/60000 (38%)]\tLoss: 0.199949\n", "Train Epoch: 4 [23680/60000 (39%)]\tLoss: 0.018877\n", "Train Epoch: 4 [24320/60000 (41%)]\tLoss: 0.016835\n", "Train Epoch: 4 [24960/60000 (42%)]\tLoss: 0.007058\n", "Train Epoch: 4 [25600/60000 (43%)]\tLoss: 0.036731\n", "Train Epoch: 4 [26240/60000 (44%)]\tLoss: 0.013287\n", "Train Epoch: 4 [26880/60000 (45%)]\tLoss: 0.090547\n", "Train Epoch: 4 [27520/60000 (46%)]\tLoss: 0.068249\n", "Train Epoch: 4 [28160/60000 (47%)]\tLoss: 0.065214\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train Epoch: 4 [28800/60000 (48%)]\tLoss: 0.005579\n", "Train Epoch: 4 [29440/60000 (49%)]\tLoss: 0.010757\n", "Train Epoch: 4 [30080/60000 (50%)]\tLoss: 0.013080\n", "Train Epoch: 4 [30720/60000 (51%)]\tLoss: 0.004695\n", "Train Epoch: 4 [31360/60000 (52%)]\tLoss: 0.009816\n", "Train Epoch: 4 [32000/60000 (53%)]\tLoss: 0.097901\n", "Train Epoch: 4 [32640/60000 (54%)]\tLoss: 0.008036\n", "Train Epoch: 4 [33280/60000 (55%)]\tLoss: 0.025720\n", "Train Epoch: 4 [33920/60000 (57%)]\tLoss: 0.007743\n", "Train Epoch: 4 [34560/60000 (58%)]\tLoss: 0.010240\n", "Train Epoch: 4 [35200/60000 (59%)]\tLoss: 0.040739\n", "Train Epoch: 4 [35840/60000 (60%)]\tLoss: 0.046888\n", "Train Epoch: 4 [36480/60000 (61%)]\tLoss: 0.002148\n", "Train Epoch: 4 [37120/60000 (62%)]\tLoss: 0.018123\n", "Train Epoch: 4 [37760/60000 (63%)]\tLoss: 0.138039\n", "Train Epoch: 4 [38400/60000 (64%)]\tLoss: 0.092445\n", "Train Epoch: 4 [39040/60000 (65%)]\tLoss: 0.004439\n", "Train Epoch: 4 [39680/60000 (66%)]\tLoss: 0.059561\n", "Train Epoch: 4 [40320/60000 (67%)]\tLoss: 0.016702\n", "Train Epoch: 4 [40960/60000 (68%)]\tLoss: 0.048608\n", "Train Epoch: 4 [41600/60000 (69%)]\tLoss: 0.043941\n", "Train Epoch: 4 [42240/60000 (70%)]\tLoss: 0.028248\n", "Train Epoch: 4 [42880/60000 (71%)]\tLoss: 0.004207\n", "Train Epoch: 4 [43520/60000 (72%)]\tLoss: 0.050349\n", "Train Epoch: 4 [44160/60000 (74%)]\tLoss: 0.004836\n", "Train Epoch: 4 [44800/60000 (75%)]\tLoss: 0.039172\n", "Train Epoch: 4 [45440/60000 (76%)]\tLoss: 0.060112\n", "Train Epoch: 4 [46080/60000 (77%)]\tLoss: 0.038748\n", "Train Epoch: 4 [46720/60000 (78%)]\tLoss: 0.027801\n", "Train Epoch: 4 [47360/60000 (79%)]\tLoss: 0.043409\n", "Train Epoch: 4 [48000/60000 (80%)]\tLoss: 0.023842\n", "Train Epoch: 4 [48640/60000 (81%)]\tLoss: 0.043613\n", "Train Epoch: 4 [49280/60000 (82%)]\tLoss: 0.005819\n", "Train Epoch: 4 [49920/60000 (83%)]\tLoss: 0.013224\n", "Train Epoch: 4 [50560/60000 (84%)]\tLoss: 0.008549\n", "Train Epoch: 4 [51200/60000 (85%)]\tLoss: 0.115843\n", "Train Epoch: 4 [51840/60000 (86%)]\tLoss: 0.012308\n", "Train Epoch: 4 [52480/60000 (87%)]\tLoss: 0.024157\n", "Train Epoch: 4 [53120/60000 (88%)]\tLoss: 0.003395\n", "Train Epoch: 4 [53760/60000 (90%)]\tLoss: 0.084941\n", "Train Epoch: 4 [54400/60000 (91%)]\tLoss: 0.057644\n", "Train Epoch: 4 [55040/60000 (92%)]\tLoss: 0.002062\n", "Train Epoch: 4 [55680/60000 (93%)]\tLoss: 0.038266\n", "Train Epoch: 4 [56320/60000 (94%)]\tLoss: 0.006398\n", "Train Epoch: 4 [56960/60000 (95%)]\tLoss: 0.007706\n", "Train Epoch: 4 [57600/60000 (96%)]\tLoss: 0.027255\n", "Train Epoch: 4 [58240/60000 (97%)]\tLoss: 0.044076\n", "Train Epoch: 4 [58880/60000 (98%)]\tLoss: 0.000889\n", "Train Epoch: 4 [59520/60000 (99%)]\tLoss: 0.001196\n", "\n", "Test set: Average loss: 0.0311, Accuracy: 9886/10000 (99%)\n", "\n", "Train Epoch: 5 [0/60000 (0%)]\tLoss: 0.015992\n", "Train Epoch: 5 [640/60000 (1%)]\tLoss: 0.012034\n", "Train Epoch: 5 [1280/60000 (2%)]\tLoss: 0.012463\n", "Train Epoch: 5 [1920/60000 (3%)]\tLoss: 0.053295\n", "Train Epoch: 5 [2560/60000 (4%)]\tLoss: 0.013971\n", "Train Epoch: 5 [3200/60000 (5%)]\tLoss: 0.008351\n", "Train Epoch: 5 [3840/60000 (6%)]\tLoss: 0.000522\n", "Train Epoch: 5 [4480/60000 (7%)]\tLoss: 0.056046\n", "Train Epoch: 5 [5120/60000 (9%)]\tLoss: 0.226117\n", "Train Epoch: 5 [5760/60000 (10%)]\tLoss: 0.024622\n", "Train Epoch: 5 [6400/60000 (11%)]\tLoss: 0.114540\n", "Train Epoch: 5 [7040/60000 (12%)]\tLoss: 0.164275\n", "Train Epoch: 5 [7680/60000 (13%)]\tLoss: 0.015020\n", "Train Epoch: 5 [8320/60000 (14%)]\tLoss: 0.009615\n", "Train Epoch: 5 [8960/60000 (15%)]\tLoss: 0.060808\n", "Train Epoch: 5 [9600/60000 (16%)]\tLoss: 0.021185\n", "Train Epoch: 5 [10240/60000 (17%)]\tLoss: 0.071090\n", "Train Epoch: 5 [10880/60000 (18%)]\tLoss: 0.004819\n", "Train Epoch: 5 [11520/60000 (19%)]\tLoss: 0.044744\n", "Train Epoch: 5 [12160/60000 (20%)]\tLoss: 0.036432\n", "Train Epoch: 5 [12800/60000 (21%)]\tLoss: 0.007292\n", "Train Epoch: 5 [13440/60000 (22%)]\tLoss: 0.005680\n", "Train Epoch: 5 [14080/60000 (23%)]\tLoss: 0.003425\n", "Train Epoch: 5 [14720/60000 (25%)]\tLoss: 0.055383\n", "Train Epoch: 5 [15360/60000 (26%)]\tLoss: 0.007300\n", "Train Epoch: 5 [16000/60000 (27%)]\tLoss: 0.034897\n", "Train Epoch: 5 [16640/60000 (28%)]\tLoss: 0.126585\n", "Train Epoch: 5 [17280/60000 (29%)]\tLoss: 0.001609\n", "Train Epoch: 5 [17920/60000 (30%)]\tLoss: 0.011380\n", "Train Epoch: 5 [18560/60000 (31%)]\tLoss: 0.031130\n", "Train Epoch: 5 [19200/60000 (32%)]\tLoss: 0.030126\n", "Train Epoch: 5 [19840/60000 (33%)]\tLoss: 0.111376\n", "Train Epoch: 5 [20480/60000 (34%)]\tLoss: 0.005547\n", "Train Epoch: 5 [21120/60000 (35%)]\tLoss: 0.123237\n", "Train Epoch: 5 [21760/60000 (36%)]\tLoss: 0.023191\n", "Train Epoch: 5 [22400/60000 (37%)]\tLoss: 0.001363\n", "Train Epoch: 5 [23040/60000 (38%)]\tLoss: 0.057234\n", "Train Epoch: 5 [23680/60000 (39%)]\tLoss: 0.015569\n", "Train Epoch: 5 [24320/60000 (41%)]\tLoss: 0.000795\n", "Train Epoch: 5 [24960/60000 (42%)]\tLoss: 0.000723\n", "Train Epoch: 5 [25600/60000 (43%)]\tLoss: 0.014871\n", "Train Epoch: 5 [26240/60000 (44%)]\tLoss: 0.007171\n", "Train Epoch: 5 [26880/60000 (45%)]\tLoss: 0.117038\n", "Train Epoch: 5 [27520/60000 (46%)]\tLoss: 0.111855\n", "Train Epoch: 5 [28160/60000 (47%)]\tLoss: 0.018824\n", "Train Epoch: 5 [28800/60000 (48%)]\tLoss: 0.012503\n", "Train Epoch: 5 [29440/60000 (49%)]\tLoss: 0.056160\n", "Train Epoch: 5 [30080/60000 (50%)]\tLoss: 0.043957\n", "Train Epoch: 5 [30720/60000 (51%)]\tLoss: 0.001754\n", "Train Epoch: 5 [31360/60000 (52%)]\tLoss: 0.091498\n", "Train Epoch: 5 [32000/60000 (53%)]\tLoss: 0.018654\n", "Train Epoch: 5 [32640/60000 (54%)]\tLoss: 0.023146\n", "Train Epoch: 5 [33280/60000 (55%)]\tLoss: 0.036612\n", "Train Epoch: 5 [33920/60000 (57%)]\tLoss: 0.002565\n", "Train Epoch: 5 [34560/60000 (58%)]\tLoss: 0.003447\n", "Train Epoch: 5 [35200/60000 (59%)]\tLoss: 0.110711\n", "Train Epoch: 5 [35840/60000 (60%)]\tLoss: 0.031876\n", "Train Epoch: 5 [36480/60000 (61%)]\tLoss: 0.009661\n", "Train Epoch: 5 [37120/60000 (62%)]\tLoss: 0.053748\n", "Train Epoch: 5 [37760/60000 (63%)]\tLoss: 0.079816\n", "Train Epoch: 5 [38400/60000 (64%)]\tLoss: 0.052890\n", "Train Epoch: 5 [39040/60000 (65%)]\tLoss: 0.001838\n", "Train Epoch: 5 [39680/60000 (66%)]\tLoss: 0.032443\n", "Train Epoch: 5 [40320/60000 (67%)]\tLoss: 0.016371\n", "Train Epoch: 5 [40960/60000 (68%)]\tLoss: 0.032993\n", "Train Epoch: 5 [41600/60000 (69%)]\tLoss: 0.009191\n", "Train Epoch: 5 [42240/60000 (70%)]\tLoss: 0.012432\n", "Train Epoch: 5 [42880/60000 (71%)]\tLoss: 0.021050\n", "Train Epoch: 5 [43520/60000 (72%)]\tLoss: 0.014490\n", "Train Epoch: 5 [44160/60000 (74%)]\tLoss: 0.003937\n", "Train Epoch: 5 [44800/60000 (75%)]\tLoss: 0.023810\n", "Train Epoch: 5 [45440/60000 (76%)]\tLoss: 0.024212\n", "Train Epoch: 5 [46080/60000 (77%)]\tLoss: 0.032333\n", "Train Epoch: 5 [46720/60000 (78%)]\tLoss: 0.081611\n", "Train Epoch: 5 [47360/60000 (79%)]\tLoss: 0.055151\n", "Train Epoch: 5 [48000/60000 (80%)]\tLoss: 0.046237\n", "Train Epoch: 5 [48640/60000 (81%)]\tLoss: 0.007069\n", "Train Epoch: 5 [49280/60000 (82%)]\tLoss: 0.004486\n", "Train Epoch: 5 [49920/60000 (83%)]\tLoss: 0.021935\n", "Train Epoch: 5 [50560/60000 (84%)]\tLoss: 0.009369\n", "Train Epoch: 5 [51200/60000 (85%)]\tLoss: 0.133733\n", "Train Epoch: 5 [51840/60000 (86%)]\tLoss: 0.004490\n", "Train Epoch: 5 [52480/60000 (87%)]\tLoss: 0.004431\n", "Train Epoch: 5 [53120/60000 (88%)]\tLoss: 0.022499\n", "Train Epoch: 5 [53760/60000 (90%)]\tLoss: 0.111768\n", "Train Epoch: 5 [54400/60000 (91%)]\tLoss: 0.021636\n", "Train Epoch: 5 [55040/60000 (92%)]\tLoss: 0.002808\n", "Train Epoch: 5 [55680/60000 (93%)]\tLoss: 0.007162\n", "Train Epoch: 5 [56320/60000 (94%)]\tLoss: 0.012326\n", "Train Epoch: 5 [56960/60000 (95%)]\tLoss: 0.002056\n", "Train Epoch: 5 [57600/60000 (96%)]\tLoss: 0.003829\n", "Train Epoch: 5 [58240/60000 (97%)]\tLoss: 0.013328\n", "Train Epoch: 5 [58880/60000 (98%)]\tLoss: 0.000146\n", "Train Epoch: 5 [59520/60000 (99%)]\tLoss: 0.000575\n", "\n", "Test set: Average loss: 0.0299, Accuracy: 9903/10000 (99%)\n", "\n" ] } ], "source": [ "run(epochs=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Polecam również bibliotekę [PyTorch-Lightning](https://www.pytorchlightning.ai), dzięki któej kod PyTorcha staje się trochę bardziej \"uporządkowany\"." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tutaj artykuł o tym, jak stworzyć dataloader dla danych z własnego pliku CSV: https://androidkt.com/load-pandas-dataframe-using-dataset-and-dataloader-in-pytorch" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zadanie 10 (6 punktów)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zaimplementuj rozwiązanie wybranego problemu klasyfikacyjnego za pomocą prostej sieci neuronowej stworzonej przy użyciu biblioteki PyTorch." ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.6" }, "livereveal": { "start_slideshow_at": "selected", "theme": "amu" } }, "nbformat": 4, "nbformat_minor": 4 }