[f757a9]: / notebooks / PytorchNoteBook.ipynb

Download this file

1186 lines (1186 with data), 86.3 kB

{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from Classes.Data import augmentation, LeukemiaDataset, augmentation_alb\n",
    "from Classes.Helpers import Helpers\n",
    "from Classes.Model_2020 import LuekemiaNet, learner\n",
    "from Classes.model_api import plot_training_history, show_predictions,\\\n",
    "    confusion_matrix2, get_predictions, predict_probability, show_prediction_confidence\n",
    "from Classes.interpretability import interpret_model\n",
    "from torch.utils.data import DataLoader\n",
    "from torch.utils.data.sampler import SubsetRandomSampler\n",
    "import torch.optim as optim\n",
    "import pandas as pd\n",
    "from torch import nn\n",
    "import random\n",
    "import torch\n",
    "import os\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import confusion_matrix, classification_report\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "SEED = 323\n",
    "def seed_everything(seed=SEED):\n",
    "    random.seed(seed)\n",
    "    os.environ['PYHTONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "    torch.manual_seed(seed)\n",
    "    torch.cuda.manual_seed(seed)\n",
    "    torch.backends.cudnn.deterministic = True\n",
    "\n",
    "\n",
    "seed_everything(SEED)\n",
    "# helper class\n",
    "helper = Helpers(\"Test Model\", False)\n",
    "# train data directory\n",
    "train_dir = 'C:/Peter Moss AML Leukemia Research/Dataset/all_train/'\n",
    "# train label directoy\n",
    "train_csv = 'C:/Peter Moss AML Leukemia Research/Dataset/train.csv'\n",
    "# labels\n",
    "class_name = [\"neg\", \"pos\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "image_path = 'C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Model\\Data\\Test\\Im047_0.jpg'\n",
    "image_path2 = 'C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Model\\Data\\Test\\Im006_1.jpg'\n",
    "label_idx = 'C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Model\\class_idx.json'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    49\n",
      "1    39\n",
      "Name: label, dtype: int64\n",
      "      data  label\n",
      "0  Im001_1      1\n",
      "1  Im002_1      1\n",
      "2  Im003_1      1\n",
      "3  Im004_1      1\n",
      "4  Im005_1      1\n",
      "79 9\n"
     ]
    }
   ],
   "source": [
    "# training batch size\n",
    "batch_size = helper.config[\"classifier\"][\"train\"][\"batch\"]\n",
    "# accuracy and loss save directory\n",
    "acc_loss_png = helper.config[\"classifier\"][\"model_params\"][\"plot_loss_and_acc\"]\n",
    "# confusion matrix save directory\n",
    "confusion_png = helper.config[\"classifier\"][\"model_params\"][\"confusion_matrix\"]\n",
    "# number of epoch\n",
    "epochs = helper.config[\"classifier\"][\"train\"][\"epochs\"]\n",
    "# learning rate\n",
    "learn_rate = helper.config[\"classifier\"][\"train\"][\"learning_rate_adam\"]\n",
    "# decay\n",
    "decay = helper.config[\"classifier\"][\"train\"][\"decay_adam\"]\n",
    "# read train CSV file\n",
    "labels = pd.read_csv(train_csv)\n",
    "# print label count\n",
    "labels_count = labels.label.value_counts()\n",
    "print(labels_count)\n",
    "# print 5 label header\n",
    "print(labels.head())\n",
    "# splitting data into training and validation set\n",
    "train, valid = train_test_split(labels, stratify = labels.label, test_size = 0.1, shuffle=True)\n",
    "print(len(train),len(valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "79 9\n"
     ]
    }
   ],
   "source": [
    "#data augmentation\n",
    "training_transforms, validation_transforms = augmentation()\n",
    "\n",
    "# Read Acute Lymphoblastic Leukemia dataset from disk\n",
    "trainset = LeukemiaDataset(df_data=train, data_dir=train_dir, transform=training_transforms)\n",
    "validset = LeukemiaDataset(df_data=valid, data_dir=train_dir, transform=validation_transforms)\n",
    "\n",
    "train_size, valid_size = len(trainset), len(validset)\n",
    "print(train_size, valid_size)\n",
    "\n",
    "train_sampler = SubsetRandomSampler(list(train.index))\n",
    "valid_sampler = SubsetRandomSampler(list(valid.index))\n",
    "\n",
    "# Prepare dataset for neural networks\n",
    "train_data_loader = DataLoader(trainset, batch_size=batch_size, shuffle=True)\n",
    "valid_data_loader = DataLoader(validset, batch_size=batch_size, shuffle=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Set:\n",
      "\n",
      "Image batch dimensions: torch.Size([10, 3, 100, 100])\n",
      "Image label dimensions: torch.Size([10])\n",
      "\n",
      "\n",
      "The labels:  tensor([1, 1, 0, 0, 0, 0, 0, 1, 1])\n"
     ]
    }
   ],
   "source": [
    "# Checking the dataset\n",
    "print('Training Set:\\n')\n",
    "for images, labels in train_data_loader:\n",
    "    print('Image batch dimensions:', images.size())\n",
    "    print('Image label dimensions:', labels.size())\n",
    "    break\n",
    "print(\"\\n\")\n",
    "\n",
    "# loop through our validation data and output the labels\n",
    "for images, labels in valid_data_loader:\n",
    "    print(\"The labels: \",labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CUDA is available and training on GPU ...\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# Define model\n",
    "model = LuekemiaNet()\n",
    "# check if CUDA is available\n",
    "train_on_gpu = torch.cuda.is_available()\n",
    "# Move our model to CUDA for gpu training\n",
    "model.cuda()\n",
    "\n",
    "\n",
    "if not train_on_gpu:\n",
    "    print('CUDA is not available and training on CPU ...')\n",
    "else:\n",
    "    print('CUDA is available and training on GPU ...')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Cross entropy loss function\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "# specify optimizer (stochastic gradient descent) and learning rate = 0.001\n",
    "optimizer = optim.Adam(model.parameters(), weight_decay=decay, lr=learn_rate)\n",
    "# scheduler = CyclicLR(optimizer, base_lr=lr, max_lr=0.01, step_size=5, mode='triangular2')\n",
    "scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=7, gamma=helper.config[\"classifier\"][\"model_params\"][\"gamma\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2020-12-31 03:09:27,061 - Model - INFO - Epoch 1/10\n",
      "2020-12-31 03:09:27,091 - Model - INFO - ----------\n",
      "2020-12-31 03:09:38,622 - Model - INFO - Train loss: 0.5225205793976784 Accuracy: 0.7341772317886353\n",
      "2020-12-31 03:09:39,573 - Model - INFO - Valid loss: 0.7080000042915344 Accuracy: 0.5555555820465088\n",
      "\n",
      "2020-12-31 03:09:39,761 - Model - INFO - Epoch 2/10\n",
      "2020-12-31 03:09:39,774 - Model - INFO - ----------\n",
      "2020-12-31 03:09:47,664 - Model - INFO - Train loss: 0.3280406277626753 Accuracy: 0.8607594966888428\n",
      "2020-12-31 03:09:48,575 - Model - INFO - Valid loss: 0.8643777370452881 Accuracy: 0.5555555820465088\n",
      "\n",
      "2020-12-31 03:09:48,645 - Model - INFO - Epoch 3/10\n",
      "2020-12-31 03:09:48,651 - Model - INFO - ----------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 152, in learner\n",
      "    helper.logger.info(f'Epoch {epoch + 1}/{n_epochs}')\n",
      "Message: 'Epoch 1/10'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 153, in learner\n",
      "    helper.logger.info('-' * 10)\n",
      "Message: '----------'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 165, in learner\n",
      "    helper.logger.info(f'Train loss: {train_loss} Accuracy: {train_acc}')\n",
      "Message: 'Train loss: 0.5225205793976784 Accuracy: 0.7341772317886353'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 175, in learner\n",
      "    helper.logger.info(f'Valid loss: {val_loss} Accuracy: {val_acc}')\n",
      "Message: 'Valid loss: 0.7080000042915344 Accuracy: 0.5555555820465088'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 152, in learner\n",
      "    helper.logger.info(f'Epoch {epoch + 1}/{n_epochs}')\n",
      "Message: 'Epoch 2/10'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 153, in learner\n",
      "    helper.logger.info('-' * 10)\n",
      "Message: '----------'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 165, in learner\n",
      "    helper.logger.info(f'Train loss: {train_loss} Accuracy: {train_acc}')\n",
      "Message: 'Train loss: 0.3280406277626753 Accuracy: 0.8607594966888428'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 175, in learner\n",
      "    helper.logger.info(f'Valid loss: {val_loss} Accuracy: {val_acc}')\n",
      "Message: 'Valid loss: 0.8643777370452881 Accuracy: 0.5555555820465088'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 152, in learner\n",
      "    helper.logger.info(f'Epoch {epoch + 1}/{n_epochs}')\n",
      "Message: 'Epoch 3/10'\n",
      "Arguments: ()\n",
      "--- Logging error ---\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 69, in emit\n",
      "    self.doRollover()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 393, in doRollover\n",
      "    self.rotate(self.baseFilename, dfn)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\logging\\handlers.py\", line 110, in rotate\n",
      "    os.rename(source, dest)\n",
      "PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log' -> 'C:\\\\Peter Moss AML Leukemia Research\\\\ALL-PyTorch-2020\\\\Classifier\\\\Logs\\\\all.log.2020-12-30_00'\n",
      "Call stack:\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\traitlets\\config\\application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelapp.py\", line 505, in start\n",
      "    self.io_loop.start()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\platform\\asyncio.py\", line 148, in start\n",
      "    self.asyncio_loop.run_forever()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 539, in run_forever\n",
      "    self._run_once()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\base_events.py\", line 1775, in _run_once\n",
      "    handle._run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\asyncio\\events.py\", line 88, in _run\n",
      "    self._context.run(self._callback, *self._args)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 690, in <lambda>\n",
      "    lambda f: self._run_callback(functools.partial(callback, future))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 743, in _run_callback\n",
      "    ret = callback()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 787, in inner\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 378, in dispatch_queue\n",
      "    yield self.process_one()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 225, in wrapper\n",
      "    runner = Runner(result, future, yielded)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 714, in __init__\n",
      "    self.run()\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 748, in run\n",
      "    yielded = self.gen.send(value)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 365, in process_one\n",
      "    yield gen.maybe_future(dispatch(*args))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 272, in dispatch_shell\n",
      "    yield gen.maybe_future(handler(stream, idents, msg))\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\", line 542, in execute_request\n",
      "    user_expressions, allow_stdin,\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\tornado\\gen.py\", line 209, in wrapper\n",
      "    yielded = next(result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py\", line 294, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\ipykernel\\zmqshell.py\", line 536, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2854, in run_cell\n",
      "    raw_cell, store_history, silent, shell_futures)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 2880, in _run_cell\n",
      "    return runner(coro)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\async_helpers.py\", line 68, in _pseudo_sync_runner\n",
      "    coro.send(None)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3057, in run_cell_async\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3248, in run_ast_nodes\n",
      "    if (await self.run_code(code, result,  async_=asy)):\n",
      "  File \"C:\\Users\\Allen\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\", line 3325, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-9-afcd5a747e46>\", line 7, in <module>\n",
      "    train_on_gpu=True, n_epochs=epochs)\n",
      "  File \"C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\", line 153, in learner\n",
      "    helper.logger.info('-' * 10)\n",
      "Message: '----------'\n",
      "Arguments: ()\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mKeyboardInterrupt\u001B[0m                         Traceback (most recent call last)",
      "\u001B[1;32m<ipython-input-9-afcd5a747e46>\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m      5\u001B[0m                               \u001B[0mcriterion\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mtrain_size\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m      6\u001B[0m                               \u001B[0mvalid_size\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 7\u001B[1;33m                               train_on_gpu=True, n_epochs=epochs)\n\u001B[0m\u001B[0;32m      8\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32mC:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\u001B[0m in \u001B[0;36mlearner\u001B[1;34m(model, train_data_loader, valid_data_loader, optimizer, scheduler, loss_function, trainset_size, validset_size, train_on_gpu, n_epochs)\u001B[0m\n\u001B[0;32m    160\u001B[0m             \u001B[0mscheduler\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    161\u001B[0m             \u001B[0mtrainset_size\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 162\u001B[1;33m             \u001B[0mtrain_on_gpu\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m    163\u001B[0m         )\n\u001B[0;32m    164\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32mC:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Model_2020.py\u001B[0m in \u001B[0;36mtrain_epoch\u001B[1;34m(model, data_loader, loss_function, optimizer, scheduler, trainset_size, train_on_gpu)\u001B[0m\n\u001B[0;32m     73\u001B[0m     \u001B[0mcorrect_predictions\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;36m0\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     74\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 75\u001B[1;33m     \u001B[1;32mfor\u001B[0m \u001B[0mi\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mdataset\u001B[0m \u001B[1;32min\u001B[0m \u001B[0menumerate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mdata_loader\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m     76\u001B[0m         \u001B[0minputs\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mlabels\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mdataset\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     77\u001B[0m         \u001B[1;32mif\u001B[0m \u001B[0mtrain_on_gpu\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\Anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py\u001B[0m in \u001B[0;36m__next__\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m    344\u001B[0m     \u001B[1;32mdef\u001B[0m \u001B[0m__next__\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    345\u001B[0m         \u001B[0mindex\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_next_index\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m  \u001B[1;31m# may raise StopIteration\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 346\u001B[1;33m         \u001B[0mdata\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_dataset_fetcher\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfetch\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mindex\u001B[0m\u001B[1;33m)\u001B[0m  \u001B[1;31m# may raise StopIteration\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m    347\u001B[0m         \u001B[1;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_pin_memory\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    348\u001B[0m             \u001B[0mdata\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0m_utils\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpin_memory\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpin_memory\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\Anaconda3\\lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py\u001B[0m in \u001B[0;36mfetch\u001B[1;34m(self, possibly_batched_index)\u001B[0m\n\u001B[0;32m     42\u001B[0m     \u001B[1;32mdef\u001B[0m \u001B[0mfetch\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     43\u001B[0m         \u001B[1;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mauto_collation\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 44\u001B[1;33m             \u001B[0mdata\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;33m[\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0midx\u001B[0m\u001B[1;33m]\u001B[0m \u001B[1;32mfor\u001B[0m \u001B[0midx\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m     45\u001B[0m         \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     46\u001B[0m             \u001B[0mdata\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mpossibly_batched_index\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\Anaconda3\\lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py\u001B[0m in \u001B[0;36m<listcomp>\u001B[1;34m(.0)\u001B[0m\n\u001B[0;32m     42\u001B[0m     \u001B[1;32mdef\u001B[0m \u001B[0mfetch\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     43\u001B[0m         \u001B[1;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mauto_collation\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 44\u001B[1;33m             \u001B[0mdata\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;33m[\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0midx\u001B[0m\u001B[1;33m]\u001B[0m \u001B[1;32mfor\u001B[0m \u001B[0midx\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m     45\u001B[0m         \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     46\u001B[0m             \u001B[0mdata\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mpossibly_batched_index\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32mC:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Classes\\Data.py\u001B[0m in \u001B[0;36m__getitem__\u001B[1;34m(self, index)\u001B[0m\n\u001B[0;32m     46\u001B[0m         \u001B[0mimg_name\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mlabel\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdf\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mindex\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     47\u001B[0m         \u001B[0mimg_path\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mos\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpath\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mjoin\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdata_dir\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mimg_name\u001B[0m \u001B[1;33m+\u001B[0m \u001B[1;34m'.jpg'\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 48\u001B[1;33m         \u001B[0mimage\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mImage\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mopen\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mimg_path\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m     49\u001B[0m         \u001B[1;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mtransform\u001B[0m \u001B[1;32mis\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[1;32mNone\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m     50\u001B[0m             \u001B[0mimage\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mtransform\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mimage\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;32m~\\Anaconda3\\lib\\site-packages\\PIL\\Image.py\u001B[0m in \u001B[0;36mopen\u001B[1;34m(fp, mode)\u001B[0m\n\u001B[0;32m   2777\u001B[0m         \u001B[0mexclusive_fp\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   2778\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 2779\u001B[1;33m     \u001B[0mprefix\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mfp\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;36m16\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m   2780\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   2781\u001B[0m     \u001B[0mpreinit\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;31mKeyboardInterrupt\u001B[0m: "
     ]
    }
   ],
   "source": [
    "# begin training\n",
    "real_model, history = learner(model, train_data_loader,\n",
    "                              valid_data_loader,\n",
    "                              optimizer, scheduler,\n",
    "                              criterion, train_size,\n",
    "                              valid_size,\n",
    "                              train_on_gpu=True, n_epochs=epochs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# plot model loss and accuracy\n",
    "plot_training_history(history, save_path=acc_loss_png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get model prediction\n",
    "y_pred, y_test = get_predictions(real_model,valid_data_loader)\n",
    "# Get model precision, recall and f1_score\n",
    "helper.logger.info(classification_report(y_test, y_pred, target_names=class_name))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get model confusion matrix\n",
    "cm = confusion_matrix(y_test, y_pred)\n",
    "confusion_matrix2(cm, class_name,save_path=confusion_png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prediction = predict_probability(real_model,validation_transforms, 'C:\\Peter Moss AML Leukemia Research\\ALL-PyTorch-2020\\Classifier\\Model\\Data\\Test\\Im047_0.jpg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_prediction_confidence(prediction, class_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Model Interpretation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#prediction = predict_probability(real_model, validation_transforms, image_path)\n",
    "interpret_model(real_model,validation_transforms, image_path, label_idx, use_cpu=True, intrepret_type=\"integrated gradients\")\n",
    "interpret_model(real_model,validation_transforms, image_path, label_idx, use_cpu=True, intrepret_type=\"gradient shap\")\n",
    "interpret_model(real_model,validation_transforms, image_path, label_idx, use_cpu=True, intrepret_type=\"saliency\")\n",
    "\n",
    "interpret_model(real_model,validation_transforms, image_path2, label_idx, use_cpu=True, intrepret_type=\"integrated gradients\")\n",
    "interpret_model(real_model,validation_transforms, image_path2, label_idx, use_cpu=True, intrepret_type=\"gradient shap\")\n",
    "interpret_model(real_model,validation_transforms, image_path2, label_idx, use_cpu=True, intrepret_type=\"saliency\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#train data directory\n",
    "test_dir = 'C:/Peter Moss AML Leukemia Research/Dataset/all_test/'\n",
    "test_csv = 'C:/Peter Moss AML Leukemia Research/Dataset/test.csv'\n",
    "label_csv = pd.read_csv(test_csv)\n",
    "testset = LeukemiaDataset(df_data=label_csv, data_dir=test_dir, transform=validation_transforms)\n",
    "test_data_loader = DataLoader(testset, batch_size=batch_size, shuffle=True)\n",
    "show_predictions(model=real_model, class_names=class_name, test_data_loader=test_data_loader, n_images=6)"
   ]
  },
  {
   "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.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}