{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from fastai import *\n", "from fastai.vision import *\n", "from fastai.utils.ipython import *\n", "from fastai.callbacks.tracker import SaveModelCallback\n", "from sklearn.model_selection import StratifiedKFold\n", "import matplotlib.pyplot as plt\n", "from functools import partial\n", "import pretrainedmodels" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[PosixPath('../../../Dataset/Herlev Dataset/best-base-rn34-herlev-multiclass-5fold.pkl'),\n", " PosixPath('../../../Dataset/Herlev Dataset/best-base-vgg19-herlev-multiclass-5fold.pkl'),\n", " PosixPath('../../../Dataset/Herlev Dataset/abnormal_moderate-dysplastic'),\n", " PosixPath('../../../Dataset/Herlev Dataset/normal_superficiel'),\n", " PosixPath('../../../Dataset/Herlev Dataset/abnormal_light-dysplastic'),\n", " PosixPath('../../../Dataset/Herlev Dataset/abnormal_severe-dysplastic'),\n", " PosixPath('../../../Dataset/Herlev Dataset/normal_columnar'),\n", " PosixPath('../../../Dataset/Herlev Dataset/normal_intermediate'),\n", " PosixPath('../../../Dataset/Herlev Dataset/abnormal_carcinoma-in-situ'),\n", " PosixPath('../../../Dataset/Herlev Dataset/models')]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = Path(\".\")\n", "data_path = path / \"..\" / \"..\" / \"..\" / \"Dataset\" / \"Herlev Dataset\"\n", "data_path.ls()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LabelLists;\n", "\n", "Train: LabelList (917 items)\n", "x: ImageList\n", "Image (3, 83, 146),Image (3, 106, 116),Image (3, 129, 119),Image (3, 108, 110),Image (3, 209, 173)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (0 items)\n", "x: ImageList\n", "\n", "y: CategoryList\n", "\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_init = (ImageList.from_folder(data_path)\n", " .split_none()\n", " .label_from_folder())\n", "data_init" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "StratifiedKFold(n_splits=5, random_state=0, shuffle=True)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)\n", "skf" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "tfms = get_transforms(flip_vert=True, max_warp=0.0, max_rotate=30.0)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[ .new_type at 0x7f795c1696a8>>,\n", " Precision(average='macro', pos_label=1, eps=1e-09),\n", " Recall(average='macro', pos_label=1, eps=1e-09),\n", " FBeta(average='macro', pos_label=1, eps=1e-09, beta=2),\n", " KappaScore(weights='quadratic')]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "our_metrics = [accuracy, Precision(average=\"macro\"), Recall(average=\"macro\"), FBeta(average=\"macro\"), KappaScore(weights=\"quadratic\")]\n", "our_metrics" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "idxs = [[train_idx, val_idx] for train_idx, val_idx in skf.split(data_init.x.items, data_init.y.items)]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def model_callback(model, model_name):\n", " return [SaveModelCallback(model, every=\"improvement\", monitor=\"accuracy\", name=model_name)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-1" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (733 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (184 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_idxs = idxs[0]\n", "fold_data = (ImageList.from_folder(data_path)\n", " .split_by_idxs(fold_idxs[0], fold_idxs[1])\n", " .label_from_folder()\n", " .transform(tfms, size=64)\n", " .databunch(bs=64)\n", " .normalize(imagenet_stats))\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "model_name = 'resnet101' # could be fbresnet152 or inceptionresnetv2\n", "model_cadene = pretrainedmodels.__dict__[model_name](num_classes=1000, pretrained='imagenet')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ResNet(\n", " (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " (layer1): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer2): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer3): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (4): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (5): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (6): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (7): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (8): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (9): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (10): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (11): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (12): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (13): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (14): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (15): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (16): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (17): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (18): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (19): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (20): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (21): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (22): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer4): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n", " (fc): None\n", " (last_linear): Linear(in_features=2048, out_features=7, bias=True)\n", ")" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_cadene.last_linear = torch.nn.Linear(model_cadene.last_linear.in_features, int(fold_data.c))\n", "model_cadene.input_size = [3, 64, 64]\n", "model_cadene" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Learner(data=ImageDataBunch;\n", "\n", "Train: LabelList (733 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (184 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None, model=ResNet(\n", " (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " (layer1): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer2): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer3): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (4): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (5): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (6): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (7): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (8): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (9): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (10): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (11): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (12): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (13): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (14): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (15): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (16): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (17): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (18): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (19): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (20): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (21): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (22): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer4): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n", " (fc): None\n", " (last_linear): Linear(in_features=2048, out_features=7, bias=True)\n", "), opt_func=functools.partial(, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[, Precision(average='macro', pos_label=1, eps=1e-09), Recall(average='macro', pos_label=1, eps=1e-09), FBeta(average='macro', pos_label=1, eps=1e-09, beta=2), KappaScore(weights='quadratic')], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('../../../Dataset/Herlev Dataset'), model_dir='models', callback_fns=[functools.partial(, add_time=True, silent=False)], callbacks=[MixedPrecision\n", "learn: Learner(data=ImageDataBunch;\n", "\n", "Train: LabelList (733 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (184 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None, model=ResNet(\n", " (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " (layer1): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer2): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer3): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (4): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (5): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (6): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (7): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (8): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (9): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (10): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (11): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (12): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (13): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (14): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (15): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (16): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (17): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (18): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (19): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (20): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (21): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (22): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer4): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n", " (fc): None\n", " (last_linear): Linear(in_features=2048, out_features=7, bias=True)\n", "), opt_func=functools.partial(, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[, Precision(average='macro', pos_label=1, eps=1e-09), Recall(average='macro', pos_label=1, eps=1e-09), FBeta(average='macro', pos_label=1, eps=1e-09, beta=2), KappaScore(weights='quadratic')], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('../../../Dataset/Herlev Dataset'), model_dir='models', callback_fns=[functools.partial(, add_time=True, silent=False)], callbacks=[...], layer_groups=[Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " (4): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (5): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (7): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (8): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (9): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (10): ReLU(inplace=True)\n", " (11): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (12): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (13): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (14): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (15): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (16): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (17): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (21): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (22): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (23): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (24): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (25): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (26): ReLU(inplace=True)\n", " (27): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (28): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (30): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (31): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (32): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (33): ReLU(inplace=True)\n", " (34): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (36): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (37): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (38): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (39): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (40): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (42): ReLU(inplace=True)\n", " (43): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (44): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (45): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (46): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (47): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (48): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (49): ReLU(inplace=True)\n", " (50): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (51): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (52): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (53): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (54): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (55): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (56): ReLU(inplace=True)\n", " (57): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (58): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (59): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (60): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (61): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (62): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (63): ReLU(inplace=True)\n", " (64): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (65): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (66): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (67): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (68): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (69): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (70): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (71): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (72): ReLU(inplace=True)\n", " (73): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (74): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (75): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (76): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (77): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (78): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (79): ReLU(inplace=True)\n", " (80): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (81): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (82): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (83): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (84): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (85): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (86): ReLU(inplace=True)\n", " (87): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (88): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (89): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (90): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (91): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (92): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (93): ReLU(inplace=True)\n", " (94): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (95): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (96): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (97): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (98): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (99): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (100): ReLU(inplace=True)\n", " (101): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (102): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (103): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (104): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (105): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (106): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (107): ReLU(inplace=True)\n", " (108): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (109): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (110): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (111): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (112): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (113): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (114): ReLU(inplace=True)\n", " (115): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (116): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (117): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (118): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (119): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (120): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (121): ReLU(inplace=True)\n", " (122): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (123): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (124): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (125): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (126): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (127): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (128): ReLU(inplace=True)\n", " (129): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (130): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (131): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (132): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (133): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (134): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (135): ReLU(inplace=True)\n", " (136): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (137): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (138): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (139): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (140): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (141): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (142): ReLU(inplace=True)\n", " (143): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (144): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (145): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (146): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (147): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (148): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (149): ReLU(inplace=True)\n", " (150): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (151): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (152): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (153): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (154): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (155): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (156): ReLU(inplace=True)\n", " (157): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (158): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (159): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (160): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (161): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (162): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (163): ReLU(inplace=True)\n", " (164): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (165): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (166): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (167): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (168): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (169): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (170): ReLU(inplace=True)\n", " (171): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (172): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (173): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (174): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (175): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (176): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (177): ReLU(inplace=True)\n", " (178): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (179): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (180): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (181): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (182): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (183): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (184): ReLU(inplace=True)\n", " (185): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (186): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (187): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (188): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (189): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (190): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (191): ReLU(inplace=True)\n", " (192): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (193): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (194): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (195): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (196): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (197): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (198): ReLU(inplace=True)\n", " (199): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (200): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (201): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (202): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (203): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (204): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (205): ReLU(inplace=True)\n", " (206): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (207): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (208): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (209): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (210): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (211): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (212): ReLU(inplace=True)\n", " (213): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (214): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (215): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (216): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (217): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (218): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (219): ReLU(inplace=True)\n", " (220): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (221): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (222): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (223): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (224): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (225): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (226): ReLU(inplace=True)\n", " (227): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (228): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (229): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (230): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (231): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (232): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (233): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (234): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (235): ReLU(inplace=True)\n", " (236): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (237): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (238): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (239): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (240): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (241): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (242): ReLU(inplace=True)\n", " (243): AdaptiveAvgPool2d(output_size=(1, 1))\n", " (244): Linear(in_features=2048, out_features=7, bias=True)\n", ")], add_time=True, silent=False)\n", "loss_scale: 65536\n", "max_noskip: 1000\n", "dynamic: True\n", "clip: None\n", "flat_master: False\n", "max_scale: 16777216\n", "loss_fp32: True], layer_groups=[Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " (4): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (5): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (7): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (8): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (9): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (10): ReLU(inplace=True)\n", " (11): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (12): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (13): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (14): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (15): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (16): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (17): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (21): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (22): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (23): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (24): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (25): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (26): ReLU(inplace=True)\n", " (27): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (28): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (30): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (31): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (32): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (33): ReLU(inplace=True)\n", " (34): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (36): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (37): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (38): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (39): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (40): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (42): ReLU(inplace=True)\n", " (43): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (44): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (45): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (46): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (47): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (48): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (49): ReLU(inplace=True)\n", " (50): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (51): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (52): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (53): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (54): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (55): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (56): ReLU(inplace=True)\n", " (57): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (58): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (59): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (60): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (61): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (62): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (63): ReLU(inplace=True)\n", " (64): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (65): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (66): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (67): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (68): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (69): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (70): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (71): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (72): ReLU(inplace=True)\n", " (73): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (74): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (75): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (76): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (77): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (78): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (79): ReLU(inplace=True)\n", " (80): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (81): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (82): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (83): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (84): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (85): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (86): ReLU(inplace=True)\n", " (87): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (88): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (89): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (90): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (91): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (92): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (93): ReLU(inplace=True)\n", " (94): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (95): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (96): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (97): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (98): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (99): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (100): ReLU(inplace=True)\n", " (101): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (102): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (103): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (104): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (105): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (106): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (107): ReLU(inplace=True)\n", " (108): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (109): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (110): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (111): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (112): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (113): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (114): ReLU(inplace=True)\n", " (115): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (116): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (117): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (118): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (119): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (120): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (121): ReLU(inplace=True)\n", " (122): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (123): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (124): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (125): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (126): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (127): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (128): ReLU(inplace=True)\n", " (129): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (130): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (131): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (132): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (133): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (134): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (135): ReLU(inplace=True)\n", " (136): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (137): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (138): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (139): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (140): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (141): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (142): ReLU(inplace=True)\n", " (143): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (144): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (145): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (146): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (147): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (148): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (149): ReLU(inplace=True)\n", " (150): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (151): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (152): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (153): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (154): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (155): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (156): ReLU(inplace=True)\n", " (157): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (158): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (159): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (160): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (161): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (162): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (163): ReLU(inplace=True)\n", " (164): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (165): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (166): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (167): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (168): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (169): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (170): ReLU(inplace=True)\n", " (171): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (172): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (173): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (174): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (175): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (176): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (177): ReLU(inplace=True)\n", " (178): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (179): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (180): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (181): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (182): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (183): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (184): ReLU(inplace=True)\n", " (185): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (186): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (187): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (188): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (189): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (190): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (191): ReLU(inplace=True)\n", " (192): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (193): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (194): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (195): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (196): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (197): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (198): ReLU(inplace=True)\n", " (199): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (200): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (201): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (202): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (203): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (204): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (205): ReLU(inplace=True)\n", " (206): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (207): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (208): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (209): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (210): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (211): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (212): ReLU(inplace=True)\n", " (213): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (214): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (215): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (216): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (217): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (218): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (219): ReLU(inplace=True)\n", " (220): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (221): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (222): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", " (223): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (224): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (225): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (226): ReLU(inplace=True)\n", " (227): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (228): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (229): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (230): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (231): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (232): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (233): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (234): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (235): ReLU(inplace=True)\n", " (236): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (237): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (238): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (239): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (240): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (241): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (242): ReLU(inplace=True)\n", " (243): AdaptiveAvgPool2d(output_size=(1, 1))\n", " (244): Linear(in_features=2048, out_features=7, bias=True)\n", ")], add_time=True, silent=False)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "learner = Learner(fold_data, model_cadene, metrics=our_metrics).to_fp16()\n", "learner" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ResNet\n", "======================================================================\n", "Layer (type) Output Shape Param # Trainable \n", "======================================================================\n", "Conv2d [64, 32, 32] 9,408 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 32, 32] 128 True \n", "______________________________________________________________________\n", "ReLU [64, 32, 32] 0 False \n", "______________________________________________________________________\n", "MaxPool2d [64, 16, 16] 0 False \n", "______________________________________________________________________\n", "Conv2d [64, 16, 16] 4,096 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 16, 16] 128 True \n", "______________________________________________________________________\n", "Conv2d [64, 16, 16] 36,864 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 16, 16] 128 True \n", "______________________________________________________________________\n", "Conv2d [256, 16, 16] 16,384 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 16, 16] 512 True \n", "______________________________________________________________________\n", "ReLU [256, 16, 16] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 16, 16] 16,384 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 16, 16] 512 True \n", "______________________________________________________________________\n", "Conv2d [64, 16, 16] 16,384 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 16, 16] 128 True \n", "______________________________________________________________________\n", "Conv2d [64, 16, 16] 36,864 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 16, 16] 128 True \n", "______________________________________________________________________\n", "Conv2d [256, 16, 16] 16,384 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 16, 16] 512 True \n", "______________________________________________________________________\n", "ReLU [256, 16, 16] 0 False \n", "______________________________________________________________________\n", "Conv2d [64, 16, 16] 16,384 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 16, 16] 128 True \n", "______________________________________________________________________\n", "Conv2d [64, 16, 16] 36,864 True \n", "______________________________________________________________________\n", "BatchNorm2d [64, 16, 16] 128 True \n", "______________________________________________________________________\n", "Conv2d [256, 16, 16] 16,384 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 16, 16] 512 True \n", "______________________________________________________________________\n", "ReLU [256, 16, 16] 0 False \n", "______________________________________________________________________\n", "Conv2d [128, 16, 16] 32,768 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 16, 16] 256 True \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 147,456 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [512, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 8, 8] 1,024 True \n", "______________________________________________________________________\n", "ReLU [512, 8, 8] 0 False \n", "______________________________________________________________________\n", "Conv2d [512, 8, 8] 131,072 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 8, 8] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 147,456 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [512, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 8, 8] 1,024 True \n", "______________________________________________________________________\n", "ReLU [512, 8, 8] 0 False \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 147,456 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [512, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 8, 8] 1,024 True \n", "______________________________________________________________________\n", "ReLU [512, 8, 8] 0 False \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [128, 8, 8] 147,456 True \n", "______________________________________________________________________\n", "BatchNorm2d [128, 8, 8] 256 True \n", "______________________________________________________________________\n", "Conv2d [512, 8, 8] 65,536 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 8, 8] 1,024 True \n", "______________________________________________________________________\n", "ReLU [512, 8, 8] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 8, 8] 131,072 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 8, 8] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 524,288 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [256, 4, 4] 589,824 True \n", "______________________________________________________________________\n", "BatchNorm2d [256, 4, 4] 512 True \n", "______________________________________________________________________\n", "Conv2d [1024, 4, 4] 262,144 True \n", "______________________________________________________________________\n", "BatchNorm2d [1024, 4, 4] 2,048 True \n", "______________________________________________________________________\n", "ReLU [1024, 4, 4] 0 False \n", "______________________________________________________________________\n", "Conv2d [512, 4, 4] 524,288 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 4, 4] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [512, 2, 2] 2,359,296 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 2, 2] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [2048, 2, 2] 1,048,576 True \n", "______________________________________________________________________\n", "BatchNorm2d [2048, 2, 2] 4,096 True \n", "______________________________________________________________________\n", "ReLU [2048, 2, 2] 0 False \n", "______________________________________________________________________\n", "Conv2d [2048, 2, 2] 2,097,152 True \n", "______________________________________________________________________\n", "BatchNorm2d [2048, 2, 2] 4,096 True \n", "______________________________________________________________________\n", "Conv2d [512, 2, 2] 1,048,576 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 2, 2] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [512, 2, 2] 2,359,296 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 2, 2] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [2048, 2, 2] 1,048,576 True \n", "______________________________________________________________________\n", "BatchNorm2d [2048, 2, 2] 4,096 True \n", "______________________________________________________________________\n", "ReLU [2048, 2, 2] 0 False \n", "______________________________________________________________________\n", "Conv2d [512, 2, 2] 1,048,576 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 2, 2] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [512, 2, 2] 2,359,296 True \n", "______________________________________________________________________\n", "BatchNorm2d [512, 2, 2] 1,024 True \n", "______________________________________________________________________\n", "Conv2d [2048, 2, 2] 1,048,576 True \n", "______________________________________________________________________\n", "BatchNorm2d [2048, 2, 2] 4,096 True \n", "______________________________________________________________________\n", "ReLU [2048, 2, 2] 0 False \n", "______________________________________________________________________\n", "AdaptiveAvgPool2d [2048, 1, 1] 0 False \n", "______________________________________________________________________\n", "Linear [7] 14,343 True \n", "______________________________________________________________________\n", "\n", "Total params: 42,514,503\n", "Total trainable params: 42,514,503\n", "Total non-trainable params: 0\n", "Optimized with 'torch.optim.adam.Adam', betas=(0.9, 0.99)\n", "Using true weight decay as discussed in https://www.fast.ai/2018/07/02/adam-weight-decay/ \n", "Loss function : FlattenedLoss\n", "======================================================================\n", "Callbacks functions applied \n", " MixedPrecision" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "learner.summary()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 80.00% [8/10 00:20<00:05]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
02.014288#na#00:02
12.004577#na#00:02
21.968827#na#00:02
31.813240#na#00:02
41.593242#na#00:02
51.757653#na#00:02
62.040964#na#00:02
72.210543#na#00:02

\n", "\n", "

\n", " \n", " \n", " 36.36% [4/11 00:01<00:02 2.5761]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
01.9088521.7627980.3315220.5029640.3315600.3211220.39177900:03
11.7105571.4411100.4456520.6003140.4681960.4635460.62451500:03
21.4891701.2149210.5054350.5578720.5204870.5089300.65905700:03
31.2900511.1393980.5271740.5875770.5759870.5766520.67411400:03
41.1163991.1938470.5652170.5958410.5687990.5644690.72232000:03
51.0133301.3966350.5597830.5891050.5802400.5768580.69183700:03
60.9833401.6189110.5597830.6088690.5561020.5477080.63389800:03
70.9381391.4139600.5597830.5751000.5951020.5848570.69207300:03
80.8969791.3819830.5489130.6219380.5485020.5282130.70583500:03
90.8544631.2110030.5869570.6444420.6445300.6345770.71285100:03
100.7921091.2335660.5978260.6302700.6319740.6286110.76016400:03
110.7426851.1927670.6467390.7049380.6827060.6824620.76819700:03
120.6902301.1698570.6413040.6861630.6747200.6741110.75281800:03
130.6504971.4240380.5163040.6240190.5846070.5766420.75940700:03
140.6434051.1960610.6304350.6679780.6187340.6132960.79385400:03
150.5942251.0286660.6358700.6922770.6586200.6585020.76649700:03
160.5569571.0765160.6250000.6817680.6600900.6618160.74777700:03
170.5194181.3110390.6086960.6956070.6500010.6556400.75551000:03
180.4864931.0555410.6467390.7067170.6579550.6552520.80660500:03
190.4551591.0952190.6413040.7059980.6641080.6701540.77337800:03
200.4157941.0486150.7119570.7703290.7376210.7422550.81681800:03
210.3725431.1919580.6576090.7090120.6757770.6782920.78206500:03
220.3353781.2521770.6467390.6883180.6640550.6662160.76999100:03
230.3025931.2363620.6793480.7297290.6925030.6952970.79577100:03
240.2702451.2251070.7010870.7456130.7147950.7174780.81843500:03
250.2402271.2375480.6793480.7250340.6999450.7034270.80059500:03
260.2130151.2366550.6739130.7296570.7033280.7074270.80112300:03
270.2007221.2275840.6847830.7381800.7097530.7136170.80916100:03
280.1836231.2306000.6847830.7394840.7097530.7136060.80659200:03
290.1738991.2393600.6847830.7377380.7097530.7134410.80494600:03
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.33152174949645996.\n", "Better model found at epoch 1 with accuracy value: 0.44565218687057495.\n", "Better model found at epoch 2 with accuracy value: 0.5054348111152649.\n", "Better model found at epoch 3 with accuracy value: 0.5271739363670349.\n", "Better model found at epoch 4 with accuracy value: 0.5652173757553101.\n", "Better model found at epoch 9 with accuracy value: 0.5869565010070801.\n", "Better model found at epoch 10 with accuracy value: 0.5978260636329651.\n", "Better model found at epoch 11 with accuracy value: 0.64673912525177.\n", "Better model found at epoch 20 with accuracy value: 0.7119565010070801.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(5e-04), callbacks=model_callback(learner, \"best-base-rn101-herlev-multiclass-fold1\"))\n", "learner.save(\"last-base-rn101-herlev-multiclass-fold1\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-2" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (733 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (184 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_idxs = idxs[1]\n", "fold_data = (ImageList.from_folder(data_path)\n", " .split_by_idxs(fold_idxs[0], fold_idxs[1])\n", " .label_from_folder()\n", " .transform(tfms, size=64)\n", " .databunch(bs=64)\n", " .normalize(imagenet_stats))\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 70.00% [7/10 00:17<00:07]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.455061#na#00:02
10.443732#na#00:02
20.435742#na#00:02
30.414867#na#00:02
40.448629#na#00:02
50.725536#na#00:02
61.335964#na#00:02

\n", "\n", "

\n", " \n", " \n", " 36.36% [4/11 00:01<00:02 1.4574]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-base-rn101-herlev-multiclass-fold1\")\n", "learner.data = fold_data\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.4523430.1173400.9891300.9924760.9924760.9924760.99337400:03
10.4525290.1048830.9836960.9876070.9886150.9883710.99253400:03
20.4366290.1004830.9782610.9829020.9849520.9844600.98513800:03
30.4056260.0985810.9728260.9789840.9800260.9797780.98433700:03
40.3778960.1023360.9782610.9820070.9838870.9834010.99010700:03
50.3504900.1156470.9728260.9793910.9758430.9764280.98917800:03
60.3329110.1466230.9619570.9705020.9681550.9685120.98515800:03
70.3135450.1493740.9402170.9553200.9503700.9508340.96815600:03
80.2979330.2313790.9239130.9448170.9321460.9333060.97921600:03
90.2869630.2346860.9293480.9483230.9405520.9410450.95485000:03
100.2765280.2202820.9130430.9375130.9223720.9240530.96354600:03
110.2583070.1784480.9402170.9528100.9511410.9511790.97118200:03
120.2451160.1964550.9293480.9455590.9357900.9368980.96375900:03
130.2274380.2111160.9293480.9409200.9392360.9392400.93854200:03
140.2136560.2489700.9293480.9369600.9474590.9436440.97523700:03
150.2009890.1994790.9456520.9574460.9482060.9493590.93504200:03
160.1843460.2331870.9130430.9236730.9147460.9155130.92426700:03
170.1791480.2115690.9293480.9406980.9379730.9381740.94903100:03
180.1695700.1845880.9347830.9462740.9472800.9468660.95972700:03
190.1611350.1843460.9184780.9313800.9328110.9323200.96944300:03
200.1459880.1997980.9293480.9408020.9423540.9416070.95904300:03
210.1335950.1813960.9347830.9471990.9461810.9462860.95293300:03
220.1205190.1736580.9456520.9541680.9558690.9553800.95733400:03
230.1187480.1723840.9456520.9537810.9569680.9558640.96406500:03
240.1108240.1780580.9347830.9451460.9485430.9474480.95568700:03
250.1050380.1789390.9347830.9454920.9507600.9493590.96795100:03
260.0999310.1784400.9402170.9495200.9522060.9514240.95651100:03
270.0913160.1761760.9402170.9495200.9522060.9514240.95651100:03
280.0898240.1803510.9402170.9495200.9522060.9514240.95651100:03
290.0817090.1724490.9402170.9495200.9522060.9514240.95651100:03
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.989130437374115.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1e-04), callbacks=model_callback(learner, \"best-base-rn101-herlev-multiclass-fold2\"))\n", "learner.save(\"last-base-rn101-herlev-multiclass-fold2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-3" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (734 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (183 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_idxs = idxs[2]\n", "fold_data = (ImageList.from_folder(data_path)\n", " .split_by_idxs(fold_idxs[0], fold_idxs[1])\n", " .label_from_folder()\n", " .transform(tfms, size=64)\n", " .databunch(bs=64)\n", " .normalize(imagenet_stats))\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 70.00% [7/10 00:17<00:07]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.458337#na#00:02
10.467781#na#00:02
20.462731#na#00:02
30.434823#na#00:02
40.471771#na#00:02
50.797975#na#00:02
61.312296#na#00:02

\n", "\n", "

\n", " \n", " \n", " 63.64% [7/11 00:01<00:00 1.5004]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-base-rn101-herlev-multiclass-fold2\")\n", "learner.data = fold_data\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.3889860.0872950.9781420.9822840.9843600.9837030.98350100:03
10.3858280.0828810.9836070.9872100.9879310.9875910.98432700:03
20.3688740.0974400.9726780.9750340.9803910.9790360.98268000:03
30.3466380.1293920.9562840.9652520.9692800.9678080.97121700:03
40.3208620.1490080.9344260.9485210.9496720.9490730.95982300:03
50.3220150.2120210.9180330.9405140.9391420.9364220.95887300:03
60.3269360.3380200.8688520.8853880.8892280.8872890.90763500:03
70.3323170.4854950.8415300.8753160.8672840.8664560.91238900:03
80.3533920.4991580.8469950.8812930.8670720.8669010.90478100:03
90.3661200.6142530.7923500.8439710.8209650.8198470.85898500:03
100.3826980.5905860.7978140.8328360.8366360.8330850.87269000:03
110.3876190.4541930.8251370.8562040.8612410.8599740.90403100:03
120.3780650.3430150.8797810.9026750.9026070.9019220.91869000:03
130.3573870.4164900.8579240.8807130.8793260.8771600.91992000:03
140.3420430.3784690.8524590.8619360.8685160.8650610.92751100:03
150.3163160.3944530.8633880.8884170.8934330.8901020.91199800:03
160.2986780.3649210.8469950.8731520.8851940.8786190.88544900:03
170.2814040.3680500.8797810.8956980.9106180.9050900.90520400:03
180.2573560.3403740.8852460.9049270.9085390.9061230.94041600:03
190.2400440.4231910.8743170.8933020.9057880.8970160.91202900:03
200.2201220.3896190.8852460.9031110.9180900.9127960.91657300:03
210.1963950.3678360.8688520.8905030.8935280.8896900.91556200:03
220.1775570.3331020.8852460.9034290.9046390.9022290.90861800:03
230.1577910.2998880.9016390.9287800.9181520.9178940.94942700:03
240.1434470.2832280.9180330.9392280.9383490.9366230.96494800:03
250.1291990.2560240.9125680.9349460.9376980.9349260.94382200:03
260.1174320.2559280.9289620.9451180.9488100.9470100.94643100:03
270.1041260.2486030.9234970.9408590.9438830.9425520.94559800:03
280.0963140.2433520.9234970.9408590.9438830.9425520.94559800:03
290.0929160.2501500.9180330.9370680.9403120.9386350.94475700:03
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9781420826911926.\n", "Better model found at epoch 1 with accuracy value: 0.9836065769195557.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(3e-04), callbacks=model_callback(learner, \"best-base-rn101-herlev-multiclass-fold3\"))\n", "learner.save(\"last-base-rn101-herlev-multiclass-fold3\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-4" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (734 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (183 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_idxs = idxs[3]\n", "fold_data = (ImageList.from_folder(data_path)\n", " .split_by_idxs(fold_idxs[0], fold_idxs[1])\n", " .label_from_folder()\n", " .transform(tfms, size=64)\n", " .databunch(bs=64)\n", " .normalize(imagenet_stats))\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 60.00% [6/10 00:15<00:10]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.346469#na#00:02
10.353999#na#00:02
20.335749#na#00:02
30.336070#na#00:02
40.412753#na#00:02
50.838193#na#00:02

\n", "\n", "

\n", " \n", " \n", " 0.00% [0/11 00:00<00:00]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-base-rn101-herlev-multiclass-fold3\")\n", "learner.data = fold_data\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.4234130.0914900.9836070.9817010.9822560.9818500.99090000:03
10.3780590.0937540.9890710.9906300.9924600.9920120.99168600:03
20.3620930.1005640.9781420.9779760.9774940.9773350.98337600:03
30.3473080.1002570.9726780.9744150.9727320.9727750.97577900:03
40.3373620.1105860.9617490.9668490.9651930.9652310.96909700:03
50.3190380.1314390.9508200.9635090.9619050.9616630.95584600:03
60.3025100.1565410.9453550.9583270.9546190.9552310.96227400:03
70.2898050.1946610.9234970.9361700.9344280.9344080.95189700:03
80.2753010.1988610.9289620.9388480.9402160.9392220.96292700:03
90.2639720.2038780.9016390.9174210.9187880.9181640.94885300:03
100.2578930.2323590.9180330.9367740.9211630.9227700.92661300:03
110.2501000.2653380.9180330.9318430.9347060.9324240.95902400:03
120.2433510.2359610.9125680.9230990.9280280.9263530.94364200:03
130.2409290.1678900.9234970.9366430.9351710.9349380.95739700:03
140.2259630.2080140.9125680.9277390.9310890.9302980.94050100:03
150.2099470.2022430.9234970.9309830.9376030.9354330.94719800:03
160.1984510.1871520.9398910.9505600.9520530.9514540.94433700:03
170.1824420.2088560.9289620.9359120.9400970.9386690.94838800:03
180.1678450.1526730.9508200.9624470.9629990.9623790.96399500:03
190.1504460.1741890.9508200.9609240.9643540.9632990.97035200:03
200.1336320.1884000.9453550.9569840.9603860.9591390.96305900:03
210.1276190.1936760.9234970.9398820.9433220.9423170.95034700:03
220.1183190.1946500.9289620.9441780.9476870.9462800.95395600:03
230.1129000.1808550.9344260.9481870.9516560.9502370.95730900:03
240.1022200.1728300.9398910.9536400.9560210.9546800.95194100:03
250.0935550.1620970.9508200.9610340.9631640.9624140.96628700:03
260.0898080.1550390.9562840.9650590.9667350.9662530.97356200:03
270.0841180.1594110.9508200.9610600.9619730.9617540.96596500:03
280.0872060.1594640.9562840.9650590.9667350.9662530.97356200:03
290.0807600.1615090.9508200.9610600.9619730.9617540.96596500:03
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9836065769195557.\n", "Better model found at epoch 1 with accuracy value: 0.9890710115432739.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1.3e-04), callbacks=model_callback(learner, \"best-base-rn101-herlev-multiclass-fold4\"))\n", "learner.save(\"last-base-rn101-herlev-multiclass-fold4\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-5" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (734 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Valid: LabelList (183 items)\n", "x: ImageList\n", "Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64),Image (3, 64, 64)\n", "y: CategoryList\n", "abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic,abnormal_moderate-dysplastic\n", "Path: ../../../Dataset/Herlev Dataset;\n", "\n", "Test: None" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_idxs = idxs[4]\n", "fold_data = (ImageList.from_folder(data_path)\n", " .split_by_idxs(fold_idxs[0], fold_idxs[1])\n", " .label_from_folder()\n", " .transform(tfms, size=64)\n", " .databunch(bs=64)\n", " .normalize(imagenet_stats))\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 60.00% [6/10 00:15<00:10]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.342204#na#00:02
10.352877#na#00:02
20.345789#na#00:02
30.330347#na#00:02
40.388510#na#00:02
50.894378#na#00:02

\n", "\n", "

\n", " \n", " \n", " 45.45% [5/11 00:01<00:01 1.1855]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-base-rn101-herlev-multiclass-fold4\")\n", "learner.data = fold_data\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.3900810.0781740.9836070.9875100.9887060.9884260.99251800:03
10.3778960.0821790.9836070.9876180.9855310.9858330.99501100:03
20.3523110.0902090.9836070.9877190.9879120.9876950.99500400:03
30.3380800.1043140.9726780.9761510.9802810.9792160.98665800:03
40.3123480.1242150.9562840.9650790.9634500.9636340.97733700:03
50.2993330.1799250.9453550.9599980.9545790.9550000.96349600:03
60.2932820.2476090.9125680.9142050.9206170.9174760.91619900:03
70.2965230.2627200.9234970.9422100.9277080.9284390.94427900:03
80.3058520.2833540.8852460.8972250.8902950.8895360.92417000:03
90.3083550.2671370.9180330.9344710.9272430.9279630.95103000:03
100.3031780.1991250.9234970.9334480.9264730.9258420.94624400:03
110.3009490.2435810.9180330.9277180.9243740.9234380.95937700:03
120.2921060.3089230.8907100.9004890.8953720.8923560.91645000:03
130.2755050.2558570.8633880.8891530.8728450.8731070.90205400:03
140.2691860.3646390.8743170.9016230.8829350.8835620.92428900:03
150.2556430.2770740.8961750.9289300.9110500.9115480.91781700:03
160.2453520.4143460.8469950.8841410.8723210.8694790.87900000:03
170.2385900.3433520.8852460.8914160.8964940.8943160.92907800:03
180.2165500.2361760.9234970.9392830.9324700.9329730.96312800:03
190.1932520.2170420.9125680.9235120.9203780.9203170.95691900:03
200.1765290.2460230.9016390.9212180.9097040.9099720.95272100:03
210.1607150.2574610.8907100.9168960.9000160.9007390.94146700:03
220.1447880.2348260.9180330.9346390.9213040.9220450.95540200:03
230.1371940.1972180.9234970.9343400.9267460.9274970.96277600:03
240.1245950.1924980.9289620.9396170.9326300.9328040.96344300:03
250.1179930.1988950.9125680.9288100.9192790.9198930.95138100:03
260.1057620.2084410.9071040.9263650.9145170.9152000.94342500:03
270.0966630.1988130.9125680.9294240.9194430.9198380.94427900:03
280.0928170.2033360.9125680.9294240.9194430.9198380.94427900:03
290.0871740.2047290.9125680.9294240.9194430.9198380.94427900:03
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9836065769195557.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(2e-04), callbacks=model_callback(learner, \"best-base-rn101-herlev-multiclass-fold5\"))\n", "learner.save(\"last-base-rn101-herlev-multiclass-fold5\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exporting model" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "learner.load(\"best-base-rn101-herlev-multiclass-fold5\")\n", "learner.export(\"best-base-rn101-herlev-multiclass-5fold.pkl\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Results (save results.csv first)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " accuracy precision recall f_beta kappa_score\n", "0 0.711957 0.770329 0.737621 0.742255 0.816818\n", "1 0.989130 0.992476 0.992476 0.992476 0.993374\n", "2 0.983607 0.987210 0.987931 0.987591 0.984327\n", "3 0.989071 0.990630 0.992460 0.992012 0.991686\n", "4 0.983607 0.987510 0.988706 0.988426 0.992518\n", "*-**-**-**-**-**-**-**-**-**-*\n", "Results :-\n", "Accuracy : 93.1474 % | 8.7807 %\n", "Precision : 94.5631 % | 7.0121 %\n", "Recall : 93.9839 % | 8.0887 %\n", "F_beta : 94.0552 % | 7.9319 %\n", "Kappa_score : 95.5745 % | 5.5571 %\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "\n", "def compute_results(fname):\n", " df = pd.read_csv(fname)\n", " print(df)\n", " print(\"*-*\" * 10)\n", " print(\"Results :-\")\n", " mean_df = np.mean(df, axis=0)\n", " mean_error_df = np.mean(np.abs(mean_df - df), axis=0)\n", " for col, mean, error in zip(list(df.columns), list(mean_df.values), list(mean_error_df.values)):\n", " print(f\"{col.capitalize()} : {mean * 100:.4f} % | { error * 100:.4f} %\")\n", "\n", "compute_results(\"results.csv\")" ] }, { "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.6.9" } }, "nbformat": 4, "nbformat_minor": 4 }