Full Code of moboehle/Pytorch-LRP for AI

master b96e2beb965d cached
36 files
4.8 MB
1.3M tokens
209 symbols
1 requests
Download .txt
Showing preview only (5,038K chars total). Download the full file or copy to clipboard to get everything.
Repository: moboehle/Pytorch-LRP
Branch: master
Commit: b96e2beb965d
Files: 36
Total size: 4.8 MB

Directory structure:
gitextract_z6hk80dj/

├── .gitignore
├── ADNI Training.ipynb
├── Beta Correlation.ipynb
├── Compare intersection of top 10 regions.ipynb
├── Data Split ADNI.ipynb
├── Evaluate GB and LRP.ipynb
├── MNIST example.ipynb
├── Plotting brain maps.ipynb
├── Plotting result graphs.ipynb
├── README.md
├── docker/
│   ├── Dockerfile
│   └── docker-compose.yml
├── innvestigator.py
├── inverter_util.py
├── jrieke/
│   ├── datasets.py
│   ├── interpretation.py
│   ├── models.py
│   └── utils.py
├── license.txt
├── mnist_test.py
├── mymodel
├── nitorch/
│   ├── callbacks.py
│   ├── data.py
│   ├── inference.py
│   ├── initialization.py
│   ├── license.txt
│   ├── loss.py
│   ├── metrics.py
│   ├── models.py
│   ├── trainer.py
│   ├── transforms.py
│   └── utils.py
├── nmm_mask_areas.py
├── requirements.txt
├── settings.py
└── utils.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
__pychache__/
__pycache__
.ipynb_checkpoints/
.nfs*


================================================
FILE: ADNI Training.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/fabiane/anaconda2/envs/mort1/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import glob\n",
    "import h5py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "import time\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# pytorch\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim\n",
    "from torchvision import transforms\n",
    "from torch.utils.data import Dataset, DataLoader, SubsetRandomSampler\n",
    "\n",
    "# sklearn functions\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.model_selection import train_test_split, KFold, GroupShuffleSplit\n",
    "\n",
    "# load functions from nitorch\n",
    "from nitorch.data import load_nifti\n",
    "from nitorch.transforms import  ToTensor, SagittalTranslate, SagittalFlip, \\\n",
    "                                AxialTranslate, normalization_factors, Normalize, \\\n",
    "                                IntensityRescale\n",
    "from nitorch.callbacks import EarlyStopping, ModelCheckpoint\n",
    "from nitorch.trainer import Trainer\n",
    "from nitorch.initialization import weights_init\n",
    "from nitorch.metrics import balanced_accuracy, sensitivity, specificity\n",
    "from nitorch.utils import count_parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from settings import settings\n",
    "for k in settings.keys():\n",
    "    print(\"Adding \" + k + \" to namespace\")\n",
    "    globals()[k] = settings[k]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.0.0'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "gpu = 5\n",
    "b = 4\n",
    "num_classes = 2\n",
    "\n",
    "dtype = np.float64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train_h5_ = h5py.File(train_h5, 'r')\n",
    "val_h5_ = h5py.File(val_h5, 'r')\n",
    "holdout_h5_ = h5py.File(holdout_h5, 'r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train, y_train = train_h5_['X'], train_h5_['y']\n",
    "X_val, y_val = val_h5_['X'], val_h5_['y']\n",
    "X_holdout, y_holdout = holdout_h5_['X'], holdout_h5_['y']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mean_std_normalization = False\n",
    "min_max_normalization = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# normalize min-max\n",
    "X_train = np.array(X_train)\n",
    "X_val = np.array(X_val)\n",
    "X_holdout = np.array(X_holdout)\n",
    "\n",
    "y_train = np.array(y_train)\n",
    "y_val = np.array(y_val)\n",
    "y_holdout = np.array(y_holdout)\n",
    "\n",
    "if mean_std_normalization:\n",
    "    mean = np.mean(X_train)\n",
    "    std = np.std(X_train)\n",
    "    X_train = (X_train - mean) / std\n",
    "    X_val = (X_val - mean) / std\n",
    "    X_holdout = (X_holdout - mean) / std\n",
    "    \n",
    "if min_max_normalization:\n",
    "    for i in range(len(X_train)):\n",
    "        X_train[i] -= np.min(X_train[i])\n",
    "        X_train[i] /= np.max(X_train[i])\n",
    "\n",
    "    for i in range(len(X_val)):\n",
    "        X_val[i] -= np.min(X_val[i])\n",
    "        X_val[i] /= np.max(X_val[i])\n",
    "\n",
    "    for i in range(len(X_holdout)):\n",
    "        X_holdout[i] -= np.min(X_holdout[i])\n",
    "        X_holdout[i] /= np.max(X_holdout[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class ADNIDataset(Dataset):\n",
    "    def __init__(self, X, y, transform=None, target_transform=None, mask=None, z_factor=None, dtype=np.float32, num_classes=2):\n",
    "        self.X = np.copy(X)\n",
    "        self.y = np.copy(y)\n",
    "        self.X = X\n",
    "        self.y = y\n",
    "        self.transform = transform\n",
    "        self.target_transform = target_transform\n",
    "        self.mask = mask\n",
    "        self.z_factor = z_factor\n",
    "        self.dtype = dtype\n",
    "        self.num_classes = num_classes\n",
    "        \n",
    "    def __len__(self):\n",
    "        return len(self.X)\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        image = self.X[idx]\n",
    "        label_tensor = np.zeros(shape=(self.num_classes,))\n",
    "        label = self.y[idx] >= 0.5\n",
    "        label = torch.LongTensor([label])\n",
    "        \n",
    "        if self.transform:\n",
    "            image = self.transform(image)\n",
    "            \n",
    "        sample = {\"image\" : image,\n",
    "                 \"label\" : label}\n",
    "        return sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "augmentations = [SagittalFlip(), SagittalTranslate(dist=(-2, 3))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "adni_data_train = ADNIDataset(X_train, y_train, transform=transforms.Compose(augmentations + [ToTensor()]), dtype=dtype)\n",
    "adni_data_val = ADNIDataset(X_val, y_val, transform=transforms.Compose([ToTensor()]), dtype=dtype)\n",
    "adni_data_test = ADNIDataset(X_holdout, y_holdout, transform=transforms.Compose([ToTensor()]), dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sample = adni_data_train[400]\n",
    "img = sample[\"image\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7ff090007b00>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(img[0][:,:,70], cmap='gray')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Define the classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class ClassificationModel3D(nn.Module):\n",
    "    \"\"\"The model we use in the paper.\"\"\"\n",
    "\n",
    "    def __init__(self, dropout=0.4, dropout2=0.4):\n",
    "        nn.Module.__init__(self)\n",
    "        self.Conv_1 = nn.Conv3d(1, 8, 3)\n",
    "        self.Conv_1_bn = nn.BatchNorm3d(8)\n",
    "        self.Conv_1_mp = nn.MaxPool3d(2)\n",
    "        self.Conv_2 = nn.Conv3d(8, 16, 3)\n",
    "        self.Conv_2_bn = nn.BatchNorm3d(16)\n",
    "        self.Conv_2_mp = nn.MaxPool3d(3)\n",
    "        self.Conv_3 = nn.Conv3d(16, 32, 3)\n",
    "        self.Conv_3_bn = nn.BatchNorm3d(32)\n",
    "        self.Conv_3_mp = nn.MaxPool3d(2)\n",
    "        self.Conv_4 = nn.Conv3d(32, 64, 3)\n",
    "        self.Conv_4_bn = nn.BatchNorm3d(64)\n",
    "        self.Conv_4_mp = nn.MaxPool3d(3)\n",
    "        self.dense_1 = nn.Linear(5120, 128)\n",
    "        self.dense_2 = nn.Linear(128, 2)\n",
    "        self.relu = nn.ReLU()\n",
    "        self.dropout = nn.Dropout(dropout)\n",
    "        self.dropout2 = nn.Dropout(dropout2)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.relu(self.Conv_1_bn(self.Conv_1(x)))\n",
    "        x = self.Conv_1_mp(x)\n",
    "        x = self.relu(self.Conv_2_bn(self.Conv_2(x)))\n",
    "        x = self.Conv_2_mp(x)\n",
    "        x = self.relu(self.Conv_3_bn(self.Conv_3(x)))\n",
    "        x = self.Conv_3_mp(x)\n",
    "        x = self.relu(self.Conv_4_bn(self.Conv_4(x)))\n",
    "        x = self.Conv_4_mp(x)\n",
    "        x = x.view(x.size(0), -1)\n",
    "        x = self.dropout(x)\n",
    "        x = self.relu(self.dense_1(x))\n",
    "        x = self.dropout2(x)\n",
    "        x = self.dense_2(x)\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "net = ClassificationModel3D().cuda(gpu)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Trainable model parameters: 728898\n"
     ]
    }
   ],
   "source": [
    "print(\"Trainable model parameters: {}\".format(count_parameters(net)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def run(\n",
    "    net,\n",
    "    data,\n",
    "    shape,\n",
    "    callbacks=[],\n",
    "    augmentations=[],\n",
    "    masked=False,\n",
    "    metrics=[],\n",
    "    k_folds=None,\n",
    "    b=4,\n",
    "    num_epochs=35,\n",
    "    retain_metric=None\n",
    "):      \n",
    "   \n",
    "    fold_metric = []\n",
    "    models = []\n",
    "    fold = 0\n",
    "    initial_prepend = None\n",
    "    \n",
    "    for trial in range(4):\n",
    "        print(\"Starting trial {}\".format(trial))\n",
    "\n",
    "        # add current fold number to model checkpoint path\n",
    "        if callbacks is not None:\n",
    "            for idx, callback in enumerate(callbacks):\n",
    "                if isinstance(callback, ModelCheckpoint):\n",
    "                    if initial_prepend is None:\n",
    "                        initial_prepend = callbacks[idx].prepend\n",
    "                    callbacks[idx].prepend = initial_prepend + \"cv_fold_{}_\".format(fold)\n",
    "        fold += 1\n",
    "\n",
    "        # restart model\n",
    "        del net\n",
    "        net = ClassificationModel3D().cuda(gpu)\n",
    "        \n",
    "        # reset hyperparameters\n",
    "        lr = 1e-4\n",
    "        wd = 1e-4\n",
    "        criterion = nn.CrossEntropyLoss().cuda(gpu)\n",
    "        optimizer = optim.Adam(net.parameters(), lr=lr, weight_decay=wd)\n",
    "\n",
    "        train_loader = DataLoader(\n",
    "            adni_data_train, batch_size=b, num_workers=4, shuffle=True\n",
    "        )\n",
    "        val_loader = DataLoader(\n",
    "            adni_data_val, batch_size=1, num_workers=1, shuffle=True\n",
    "        )\n",
    "\n",
    "        sample = next(iter(train_loader))\n",
    "        img = sample[\"image\"][0]\n",
    "        lbl = sample[\"label\"][0]\n",
    "        plt.imshow(img.squeeze()[:,:,70], cmap='gray')\n",
    "        plt.title(lbl.item())\n",
    "        plt.show()\n",
    "        trainer = Trainer(\n",
    "            net,\n",
    "            criterion,\n",
    "            optimizer,\n",
    "            metrics=metrics,\n",
    "            callbacks=callbacks,\n",
    "            device=gpu,\n",
    "            prediction_type=\"classification\"\n",
    "        )\n",
    "        # train model and store results\n",
    "        net, report = trainer.train_model(\n",
    "            train_loader,\n",
    "            val_loader,\n",
    "            num_epochs=num_epochs,\n",
    "            show_train_steps=60,\n",
    "            show_validation_epochs=1,\n",
    "        )\n",
    "        # append validation score of the retain metric\n",
    "        if isinstance(retain_metric, str):\n",
    "            fold_metric.append(report[\"val_metrics\"][retain_metric][-1])\n",
    "        else:\n",
    "            fold_metric.append(report[\"val_metrics\"][retain_metric.__name__][-1])\n",
    "\n",
    "        models.append(net)\n",
    "        print(\"Finished fold.\")\n",
    "\n",
    "        # visualize result\n",
    "        trainer.visualize_training(report, metrics)\n",
    "        trainer.evaluate_model(val_loader, gpu)\n",
    "\n",
    "    print(\"################################\")\n",
    "    print(\"################################\")\n",
    "    print(\"All accuracies: {}\".format(fold_metric))\n",
    "    return fold_metric, models\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "num_epochs = 200\n",
    "min_iters = 3\n",
    "ignore_epochs = 15\n",
    "normalize = False\n",
    "retain_metric = accuracy_score\n",
    "metrics = [accuracy_score]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "r = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1_OHE\n"
     ]
    }
   ],
   "source": [
    "check = ModelCheckpoint(path=model_path,\n",
    "                             prepend=\"repeat_{}\".format(r),\n",
    "                             store_best=True,\n",
    "                             ignore_before=ignore_epochs,\n",
    "                             retain_metric=retain_metric)\n",
    "callbacks = [check, EarlyStopping(patience=8, ignore_before=ignore_epochs, retain_metric=\"loss\", mode='min')]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Starting trial 0\n",
      "torch.Size([1, 193, 229, 193])\n",
      "175\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0,    60] loss: 0.77046\n",
      "[0,   120] loss: 0.72945\n",
      "Time elapsed: 0h:1m:43s\n",
      "train accuracy_score: 50.93 %\n",
      "tensor([[[[[ 2.7221e-03, -2.3426e-03, -4.9928e-03],\n",
      "           [ 7.2687e-03,  2.1895e-03, -9.9231e-04],\n",
      "           [ 5.0693e-03,  1.1742e-03, -9.7307e-04]],\n",
      "\n",
      "          [[ 1.0745e-02, -4.3186e-04,  1.5243e-03],\n",
      "           [ 3.8719e-03, -5.3556e-03, -7.9576e-03],\n",
      "           [-8.2282e-03, -8.7681e-03, -2.9832e-03]],\n",
      "\n",
      "          [[ 7.3162e-03, -4.6082e-04, -4.1793e-03],\n",
      "           [ 1.3357e-03, -1.0075e-02,  9.4900e-04],\n",
      "           [-1.2312e-03, -1.2214e-02, -6.5313e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.7730e-03, -7.8781e-04, -6.2785e-04],\n",
      "           [ 7.9231e-04, -1.3995e-03, -9.6758e-04],\n",
      "           [ 9.1635e-04,  3.7616e-04, -6.7217e-05]],\n",
      "\n",
      "          [[ 1.5894e-03,  8.4799e-04, -2.4266e-04],\n",
      "           [ 7.8274e-04, -1.5266e-04,  8.1652e-05],\n",
      "           [ 9.0051e-04,  1.2808e-03,  6.6106e-04]],\n",
      "\n",
      "          [[ 6.8734e-04,  4.8240e-04,  1.0291e-03],\n",
      "           [ 1.1977e-03,  1.3444e-03,  7.4090e-04],\n",
      "           [ 3.5483e-03,  2.8902e-03,  1.5653e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 7.1590e-02,  1.0071e-01,  1.2848e-02],\n",
      "           [ 8.7946e-02,  6.1027e-02, -3.2667e-02],\n",
      "           [ 7.7709e-02,  3.1118e-02,  4.4848e-03]],\n",
      "\n",
      "          [[ 4.0502e-02,  4.9018e-02,  1.5662e-02],\n",
      "           [ 4.1684e-02,  6.3206e-02, -1.8465e-03],\n",
      "           [ 7.2267e-02, -4.5830e-03,  4.5449e-02]],\n",
      "\n",
      "          [[-2.1092e-02, -2.0349e-02,  1.6682e-02],\n",
      "           [-1.4339e-02, -1.7723e-03,  2.5060e-02],\n",
      "           [ 4.8745e-02,  1.4286e-02,  2.5077e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.4239e-02, -9.8297e-04, -2.0611e-02],\n",
      "           [ 1.2665e-02,  1.1523e-02, -1.9523e-02],\n",
      "           [ 2.7978e-02,  2.5733e-03,  3.8068e-03]],\n",
      "\n",
      "          [[-8.2117e-03, -1.6788e-02, -4.0979e-02],\n",
      "           [-2.7235e-03, -1.1259e-02, -2.5511e-02],\n",
      "           [ 1.6184e-02,  9.2201e-03, -7.6581e-03]],\n",
      "\n",
      "          [[-3.6789e-02, -4.2164e-02, -5.0115e-02],\n",
      "           [-1.8809e-02, -2.9938e-02, -3.0981e-02],\n",
      "           [-2.3406e-02, -2.1684e-02, -2.5703e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.1711e-02, -1.0396e-02,  1.5377e-02],\n",
      "           [ 1.9324e-03,  1.8760e-02,  1.7304e-02],\n",
      "           [ 3.0152e-02,  4.0763e-02,  3.6730e-02]],\n",
      "\n",
      "          [[-2.9967e-02,  1.9211e-02,  1.0357e-02],\n",
      "           [ 4.4292e-04,  1.7039e-02,  9.6121e-03],\n",
      "           [ 3.0547e-02,  1.2460e-02,  2.4193e-02]],\n",
      "\n",
      "          [[ 1.4929e-02,  2.1474e-02, -6.7426e-03],\n",
      "           [ 1.3854e-02,  9.7724e-03,  2.5532e-02],\n",
      "           [ 2.6497e-02,  1.1244e-02,  2.0984e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.0217e-02, -9.3339e-02, -8.9514e-02],\n",
      "           [-6.5392e-02, -1.0298e-01, -1.5707e-01],\n",
      "           [-1.4591e-01, -1.9476e-01, -1.3713e-01]],\n",
      "\n",
      "          [[-1.1004e-02, -3.3931e-02, -1.1022e-01],\n",
      "           [-9.5908e-02, -7.4950e-02, -1.1220e-01],\n",
      "           [-1.0737e-01, -1.3857e-01, -1.4344e-01]],\n",
      "\n",
      "          [[-1.6006e-02, -7.2949e-03, -6.0536e-02],\n",
      "           [-5.9262e-02, -5.5727e-02, -4.4026e-02],\n",
      "           [-9.4763e-02, -7.9315e-02, -1.0301e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.1356e-02, -2.1935e-02, -2.9925e-02],\n",
      "           [-1.3265e-02, -2.2284e-02, -1.8857e-02],\n",
      "           [-1.9964e-02, -8.8339e-03, -4.7833e-03]],\n",
      "\n",
      "          [[-7.7302e-03, -2.3389e-02, -2.7019e-02],\n",
      "           [-1.2288e-02, -1.4467e-02, -1.9736e-02],\n",
      "           [-3.2509e-02, -1.1792e-02, -1.9762e-02]],\n",
      "\n",
      "          [[-3.2540e-03, -1.7294e-02, -3.3219e-02],\n",
      "           [-1.2043e-02, -2.9645e-02, -2.6166e-02],\n",
      "           [-2.8043e-02, -2.7313e-02, -3.1156e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-9.1544e-03, -7.8267e-03, -6.1361e-03],\n",
      "           [-1.1465e-02, -2.1223e-02, -2.5235e-02],\n",
      "           [-1.0276e-02, -1.3119e-02, -2.8322e-02]],\n",
      "\n",
      "          [[ 1.1968e-02, -2.4747e-03,  1.0112e-02],\n",
      "           [ 6.3849e-03,  1.3388e-03,  1.7962e-02],\n",
      "           [-8.3232e-03, -1.7708e-02, -1.0786e-02]],\n",
      "\n",
      "          [[ 1.9424e-02,  1.3540e-02,  1.9060e-02],\n",
      "           [-5.3721e-03,  2.8265e-03,  1.2461e-02],\n",
      "           [-7.7020e-03, -1.4549e-02, -7.5710e-03]]]]], device='cuda:5')\n",
      "val accuracy_score: 40.00 %\n",
      "Val loss: 0.708377\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[1,    60] loss: 0.69267\n",
      "[1,   120] loss: 0.71795\n",
      "Time elapsed: 0h:3m:35s\n",
      "train accuracy_score: 51.65 %\n",
      "tensor([[[[[-3.0643e-03, -3.4232e-03, -1.5428e-03],\n",
      "           [-4.6975e-04, -2.2131e-04, -1.9041e-03],\n",
      "           [ 3.4050e-03,  3.1443e-04, -2.9809e-03]],\n",
      "\n",
      "          [[ 1.0919e-03, -5.9018e-04, -3.2822e-04],\n",
      "           [ 7.7742e-04, -1.4528e-03, -3.9635e-03],\n",
      "           [ 3.8027e-04, -5.8253e-04, -3.4171e-03]],\n",
      "\n",
      "          [[ 6.2975e-04,  5.5857e-04,  1.0652e-03],\n",
      "           [ 7.5994e-04, -1.0174e-03, -9.5373e-05],\n",
      "           [ 2.4613e-03, -2.7814e-03, -1.7514e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.0200e-04,  4.9445e-04,  1.6841e-04],\n",
      "           [ 1.7736e-04,  2.5019e-04,  1.9399e-08],\n",
      "           [ 1.8798e-04,  1.2850e-05,  1.6936e-04]],\n",
      "\n",
      "          [[ 3.8709e-04,  2.2361e-04,  2.0229e-04],\n",
      "           [ 4.6828e-04,  3.8873e-04,  2.2356e-04],\n",
      "           [ 2.6167e-04,  4.0541e-05,  3.0819e-04]],\n",
      "\n",
      "          [[ 1.9713e-04,  2.5289e-04,  3.7217e-04],\n",
      "           [ 1.0014e-03,  3.4756e-04, -7.7678e-05],\n",
      "           [ 7.3152e-04,  3.6794e-04,  3.5350e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-8.9940e-03, -6.7362e-03,  8.2507e-05],\n",
      "           [-1.4954e-02,  8.4101e-03,  3.1206e-02],\n",
      "           [-9.1263e-03,  1.9130e-02,  3.3406e-02]],\n",
      "\n",
      "          [[-2.2706e-02, -2.6493e-03,  1.2737e-02],\n",
      "           [-3.1115e-03,  2.0911e-02,  1.1576e-02],\n",
      "           [ 1.1409e-02,  1.9569e-02,  3.4068e-02]],\n",
      "\n",
      "          [[-3.3846e-02, -6.9486e-03,  1.4660e-02],\n",
      "           [ 2.7466e-03,  1.7902e-02,  2.2535e-03],\n",
      "           [ 1.4570e-02,  2.0452e-02,  2.5962e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-9.5239e-03, -1.7384e-02, -1.3855e-02],\n",
      "           [-6.0046e-03, -1.0328e-02, -9.2352e-03],\n",
      "           [-6.1330e-03, -5.5843e-03, -3.9912e-03]],\n",
      "\n",
      "          [[-9.8116e-03, -8.0060e-03, -8.8921e-03],\n",
      "           [-8.0380e-03, -1.4394e-03, -3.2713e-03],\n",
      "           [-1.6386e-03,  4.4082e-03, -1.1490e-04]],\n",
      "\n",
      "          [[-2.0167e-03, -7.5728e-03, -8.7922e-03],\n",
      "           [ 6.1013e-04,  3.1107e-03,  4.1427e-04],\n",
      "           [ 2.3568e-03,  5.2986e-03,  3.7772e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.7361e-03,  3.5806e-03,  4.0739e-03],\n",
      "           [ 1.3802e-02,  1.7588e-03,  7.7251e-03],\n",
      "           [ 2.2180e-02,  9.3035e-03,  4.3664e-03]],\n",
      "\n",
      "          [[-1.2377e-03,  6.8819e-03, -2.3888e-05],\n",
      "           [ 6.9914e-03,  9.1079e-03,  2.2931e-03],\n",
      "           [ 1.7430e-02,  1.3805e-02,  1.2205e-02]],\n",
      "\n",
      "          [[ 2.8800e-03,  6.0421e-04,  1.6836e-03],\n",
      "           [-1.4376e-03,  9.2180e-03,  4.8607e-03],\n",
      "           [ 1.8131e-02,  1.6860e-02,  5.7582e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.2562e-02,  2.0626e-02,  2.7309e-02],\n",
      "           [ 2.8939e-02,  2.5483e-02,  2.7293e-02],\n",
      "           [ 1.0897e-02,  1.6417e-02,  2.7047e-02]],\n",
      "\n",
      "          [[ 2.4365e-02,  2.6811e-02,  2.7645e-02],\n",
      "           [ 2.3141e-02,  2.2036e-02,  3.6239e-02],\n",
      "           [ 4.0527e-02,  2.1517e-02,  2.5407e-02]],\n",
      "\n",
      "          [[ 1.7887e-02,  8.0259e-03,  1.5803e-02],\n",
      "           [ 2.6385e-02,  2.7975e-03,  1.4330e-02],\n",
      "           [ 5.3272e-02,  1.1136e-02,  1.3186e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-7.5161e-05, -2.8969e-03, -4.1544e-03],\n",
      "           [ 8.0516e-04, -1.2242e-03, -4.9403e-03],\n",
      "           [ 1.8416e-03, -1.9994e-03, -4.0912e-03]],\n",
      "\n",
      "          [[ 1.8330e-03, -3.0297e-03, -3.2453e-03],\n",
      "           [ 3.5643e-03, -2.3876e-03, -1.4953e-03],\n",
      "           [ 1.4824e-03, -3.5125e-03, -3.7619e-03]],\n",
      "\n",
      "          [[ 4.8243e-03,  3.5364e-04,  1.9288e-05],\n",
      "           [ 2.3075e-03, -1.5177e-03, -3.8834e-03],\n",
      "           [ 5.1646e-04, -3.5586e-03, -3.3649e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.9836e-03, -1.8373e-03, -6.0961e-03],\n",
      "           [ 6.5237e-03,  1.6906e-03, -2.2735e-03],\n",
      "           [ 9.0623e-03,  6.4753e-03, -1.2113e-03]],\n",
      "\n",
      "          [[ 8.5333e-03, -2.8434e-06, -4.6472e-03],\n",
      "           [ 1.0829e-02,  9.8649e-03,  2.4547e-03],\n",
      "           [ 1.3366e-02,  1.1223e-02,  4.3164e-03]],\n",
      "\n",
      "          [[ 1.2623e-02,  2.9697e-03, -3.7423e-04],\n",
      "           [ 9.0934e-03,  7.0207e-03,  4.5313e-03],\n",
      "           [ 9.5970e-03,  1.1337e-02,  4.5281e-03]]]]], device='cuda:5')\n",
      "val accuracy_score: 40.00 %\n",
      "Val loss: 0.707614\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[2,    60] loss: 0.69596\n",
      "[2,   120] loss: 0.69488\n",
      "Time elapsed: 0h:5m:28s\n",
      "train accuracy_score: 52.51 %\n",
      "tensor([[[[[-4.7889e-03, -6.8642e-03, -8.8356e-03],\n",
      "           [ 1.1909e-03,  1.7182e-03, -6.2580e-04],\n",
      "           [ 1.3776e-02,  2.2064e-03,  1.1468e-03]],\n",
      "\n",
      "          [[ 1.1604e-03,  2.5393e-03,  8.4712e-04],\n",
      "           [ 3.8908e-03, -7.7131e-04,  1.1780e-03],\n",
      "           [ 2.2896e-03, -3.8589e-03, -2.2979e-03]],\n",
      "\n",
      "          [[ 3.6228e-04,  1.2628e-03,  2.8336e-04],\n",
      "           [-2.1825e-04, -3.0103e-04, -4.4355e-04],\n",
      "           [ 4.3467e-03, -1.4258e-03, -3.7024e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 6.0758e-05, -1.9076e-04,  6.9687e-05],\n",
      "           [ 3.7954e-06, -6.0695e-04, -8.0562e-04],\n",
      "           [-1.9615e-04, -9.4320e-04, -5.3425e-04]],\n",
      "\n",
      "          [[ 5.1386e-04, -4.7264e-05,  1.5397e-04],\n",
      "           [-4.0732e-04, -8.8119e-04, -6.0483e-04],\n",
      "           [-1.2373e-04, -6.2761e-04, -7.8477e-04]],\n",
      "\n",
      "          [[ 1.3501e-03,  9.4062e-04,  1.2626e-03],\n",
      "           [ 1.4083e-03,  1.2859e-04, -3.3909e-04],\n",
      "           [ 5.3555e-05, -3.1547e-04,  3.9614e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.5510e-01,  1.3898e-01,  7.6121e-02],\n",
      "           [ 8.7152e-02,  1.1798e-01,  7.3193e-02],\n",
      "           [ 7.7615e-02,  1.0866e-01,  6.7264e-02]],\n",
      "\n",
      "          [[ 4.6566e-02,  8.3916e-02,  8.5857e-02],\n",
      "           [ 6.1114e-02,  9.7261e-02,  4.8895e-02],\n",
      "           [ 9.4726e-02,  1.0568e-01,  5.5040e-02]],\n",
      "\n",
      "          [[ 2.8103e-02,  3.6260e-02,  6.5627e-02],\n",
      "           [ 3.2092e-02,  7.0826e-02,  4.1163e-02],\n",
      "           [ 6.7846e-02,  7.3731e-02,  5.3278e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.9547e-02, -3.8764e-02, -2.2894e-02],\n",
      "           [-1.6970e-02, -2.3596e-02, -1.5129e-02],\n",
      "           [-4.5921e-03, -6.3794e-03,  9.2934e-03]],\n",
      "\n",
      "          [[-1.4283e-02, -1.5407e-02, -1.6685e-02],\n",
      "           [-1.0233e-02, -1.2537e-02, -7.2433e-03],\n",
      "           [-8.0866e-04,  5.6191e-03,  1.4749e-02]],\n",
      "\n",
      "          [[-8.5473e-03, -2.2745e-02, -6.8571e-03],\n",
      "           [-4.7022e-03, -2.3025e-03, -1.0918e-02],\n",
      "           [ 1.6963e-03,  8.4551e-03,  1.2557e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-9.3699e-03,  2.4319e-03,  6.3655e-03],\n",
      "           [ 1.0169e-02,  6.7785e-03,  1.9842e-02],\n",
      "           [ 6.7228e-02,  5.3797e-02,  3.1331e-02]],\n",
      "\n",
      "          [[-6.7711e-03,  1.6589e-02,  1.1435e-02],\n",
      "           [ 1.0278e-02,  2.2775e-02,  1.8144e-02],\n",
      "           [ 4.2112e-02,  3.6141e-02,  2.8930e-02]],\n",
      "\n",
      "          [[-1.8154e-02,  1.3968e-02,  1.4532e-02],\n",
      "           [ 1.2338e-02,  8.3529e-03,  1.0795e-02],\n",
      "           [ 3.9892e-02,  2.5574e-02,  2.1718e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-5.4988e-02, -3.7754e-02,  1.8564e-02],\n",
      "           [-5.1372e-02, -4.9353e-02,  8.6507e-03],\n",
      "           [-2.8160e-02, -3.6715e-02,  1.2111e-02]],\n",
      "\n",
      "          [[-1.2682e-02, -5.5172e-02,  6.5142e-03],\n",
      "           [-6.4713e-02, -2.2049e-02,  3.5704e-02],\n",
      "           [-4.7282e-03,  1.4865e-02,  2.2121e-02]],\n",
      "\n",
      "          [[ 4.8737e-03, -8.5682e-03, -6.4683e-04],\n",
      "           [-4.4351e-02, -5.3044e-03, -1.3699e-03],\n",
      "           [-1.7656e-02, -2.6655e-03,  1.6255e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.0089e-03, -1.0175e-02, -1.1623e-02],\n",
      "           [-5.3850e-03, -6.2567e-03, -1.9123e-03],\n",
      "           [-1.2584e-02, -5.8470e-03, -2.0001e-03]],\n",
      "\n",
      "          [[-7.1409e-03, -1.5422e-02, -1.4552e-02],\n",
      "           [-7.2859e-03, -1.5395e-02, -1.0837e-02],\n",
      "           [-1.4204e-02, -1.7336e-02, -6.8284e-03]],\n",
      "\n",
      "          [[-8.6307e-03, -1.2640e-02, -2.0409e-02],\n",
      "           [-1.0298e-02, -1.3491e-02, -1.2077e-02],\n",
      "           [-9.9675e-03, -4.1597e-03, -9.0865e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 5.7445e-03, -1.4249e-03,  5.2351e-03],\n",
      "           [ 1.1575e-02,  1.4338e-02,  3.3071e-04],\n",
      "           [ 1.6313e-02,  3.2700e-03,  7.2611e-04]],\n",
      "\n",
      "          [[-2.8977e-03, -1.0806e-02, -6.9727e-03],\n",
      "           [ 1.4080e-02,  5.2365e-03,  9.4517e-03],\n",
      "           [ 2.0211e-02,  9.5190e-03,  9.0600e-03]],\n",
      "\n",
      "          [[ 3.2078e-03, -5.3508e-03,  8.7414e-03],\n",
      "           [ 1.1903e-02, -5.5527e-03,  9.4370e-03],\n",
      "           [ 1.2612e-02,  7.5377e-03,  1.2523e-02]]]]], device='cuda:5')\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "val accuracy_score: 60.00 %\n",
      "Val loss: 0.676732\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[3,    60] loss: 0.69582\n",
      "[3,   120] loss: 0.69822\n",
      "Time elapsed: 0h:7m:18s\n",
      "train accuracy_score: 47.78 %\n",
      "tensor([[[[[ 4.4019e-04, -4.2944e-04, -1.1478e-04],\n",
      "           [ 2.1512e-04, -3.5999e-04, -6.5329e-04],\n",
      "           [-1.8476e-03, -3.9075e-04, -5.5727e-04]],\n",
      "\n",
      "          [[-5.1329e-04, -2.8179e-04, -1.5882e-05],\n",
      "           [-1.0250e-03, -1.3188e-03, -2.5725e-04],\n",
      "           [-1.2628e-03, -2.2454e-04,  3.5691e-04]],\n",
      "\n",
      "          [[-8.8981e-04, -1.0456e-05,  8.2314e-05],\n",
      "           [-2.5531e-04, -3.5256e-04, -4.5992e-04],\n",
      "           [-2.5773e-03, -8.2342e-04, -1.2640e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.4555e-04, -1.1651e-04, -3.2884e-04],\n",
      "           [-4.5790e-05, -1.5493e-04, -1.5467e-04],\n",
      "           [-1.5763e-04, -3.7271e-04, -3.6286e-04]],\n",
      "\n",
      "          [[-4.2965e-05, -1.1277e-04, -1.5334e-04],\n",
      "           [-1.1808e-04, -1.9941e-04,  4.9272e-05],\n",
      "           [-2.4667e-04, -2.8065e-04, -3.2343e-04]],\n",
      "\n",
      "          [[-1.4522e-04, -3.3435e-05,  1.0754e-04],\n",
      "           [-2.8871e-04,  7.7554e-06,  9.0195e-05],\n",
      "           [-2.2841e-04,  2.3080e-05,  1.5253e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.0924e-02,  1.2836e-02,  6.9168e-03],\n",
      "           [ 1.1311e-02,  5.6721e-03, -2.1746e-03],\n",
      "           [ 8.3137e-03,  5.9176e-04, -3.2183e-03]],\n",
      "\n",
      "          [[ 1.8159e-02,  1.3473e-02,  6.9647e-03],\n",
      "           [ 3.2979e-03,  2.4507e-03,  2.9591e-03],\n",
      "           [ 3.5422e-03, -7.4805e-05,  7.7009e-04]],\n",
      "\n",
      "          [[ 1.1731e-02,  4.4810e-03, -7.0474e-05],\n",
      "           [ 9.2783e-04,  4.0191e-03, -2.3924e-03],\n",
      "           [ 4.0947e-04,  1.7004e-03,  3.0982e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 7.5642e-03,  1.5433e-02,  1.4194e-02],\n",
      "           [ 2.7835e-03,  8.9831e-03,  9.6239e-03],\n",
      "           [ 1.4922e-03,  3.5595e-03,  2.2295e-03]],\n",
      "\n",
      "          [[ 6.2137e-03,  1.0437e-02,  1.4108e-02],\n",
      "           [ 4.1122e-03,  5.2131e-03,  6.4943e-03],\n",
      "           [ 2.4065e-03, -1.9502e-03, -2.3372e-03]],\n",
      "\n",
      "          [[ 6.5028e-03,  8.8749e-03,  1.2921e-02],\n",
      "           [ 2.0176e-03,  1.8053e-03,  5.0122e-03],\n",
      "           [-1.4906e-03, -2.9350e-03, -3.4809e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.4171e-03, -1.4029e-03, -4.8981e-03],\n",
      "           [-1.4092e-02, -4.4773e-03, -3.2137e-03],\n",
      "           [-2.1552e-02, -9.6872e-03, -7.9258e-03]],\n",
      "\n",
      "          [[-2.0865e-03, -1.4979e-03, -3.8350e-03],\n",
      "           [-4.3817e-03, -3.8538e-03, -3.1937e-04],\n",
      "           [-1.4130e-02, -8.6425e-03, -3.7363e-03]],\n",
      "\n",
      "          [[ 1.1666e-03, -9.8099e-04, -4.4336e-03],\n",
      "           [-3.7579e-03, -3.9377e-03, -5.0782e-03],\n",
      "           [-9.0301e-03, -1.0447e-02, -5.2353e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.7833e-02,  1.0163e-02,  1.2145e-02],\n",
      "           [ 1.4365e-02,  8.2042e-03,  8.7606e-04],\n",
      "           [ 6.8522e-03, -2.6457e-03, -7.4796e-03]],\n",
      "\n",
      "          [[ 2.1842e-02,  1.0085e-02,  7.0517e-03],\n",
      "           [ 1.4107e-02,  8.6131e-03,  7.5126e-04],\n",
      "           [-2.6897e-03, -3.8516e-03, -8.2974e-03]],\n",
      "\n",
      "          [[ 2.0278e-02,  4.4808e-03, -2.2588e-03],\n",
      "           [ 7.5593e-03,  6.0422e-04,  4.6099e-04],\n",
      "           [-1.2540e-02,  1.0250e-03, -4.0721e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-9.4327e-04,  2.9005e-05,  9.0832e-04],\n",
      "           [-9.2082e-04,  9.6568e-04,  1.3426e-03],\n",
      "           [ 1.0881e-03,  2.3686e-04,  2.3674e-04]],\n",
      "\n",
      "          [[ 7.7389e-04,  2.1145e-03,  1.7745e-03],\n",
      "           [ 2.2937e-03,  2.4870e-03,  9.4858e-04],\n",
      "           [ 2.5304e-03,  1.8989e-03, -3.7167e-05]],\n",
      "\n",
      "          [[ 1.4983e-03,  1.9848e-03,  2.3454e-03],\n",
      "           [ 3.5752e-03,  2.5948e-03,  2.2234e-03],\n",
      "           [ 4.0814e-03,  3.4959e-03,  7.4313e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.8852e-03, -3.3066e-03, -3.8020e-03],\n",
      "           [-3.3156e-04, -4.3269e-03, -1.7014e-03],\n",
      "           [-8.7485e-04, -1.7034e-03, -2.4976e-03]],\n",
      "\n",
      "          [[ 2.7330e-03,  1.3304e-03, -1.7470e-03],\n",
      "           [ 4.5326e-03,  1.0225e-03, -2.8449e-03],\n",
      "           [-7.4504e-04, -1.9768e-03, -8.0871e-04]],\n",
      "\n",
      "          [[ 3.1184e-03,  3.5353e-04, -1.6857e-03],\n",
      "           [ 5.2518e-03,  2.6567e-03,  8.6996e-04],\n",
      "           [-3.2011e-04,  2.4172e-03,  2.9924e-03]]]]], device='cuda:5')\n",
      "val accuracy_score: 40.00 %\n",
      "Val loss: 0.695125\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[4,    60] loss: 0.69211\n",
      "[4,   120] loss: 0.69528\n",
      "Time elapsed: 0h:9m:11s\n",
      "train accuracy_score: 51.79 %\n",
      "tensor([[[[[-9.1483e-04,  1.0130e-03,  2.0885e-03],\n",
      "           [-1.0456e-04,  5.2086e-04,  1.7278e-03],\n",
      "           [ 3.3424e-03,  2.3985e-03,  2.0810e-03]],\n",
      "\n",
      "          [[-6.9126e-05,  3.6494e-05,  8.9620e-04],\n",
      "           [ 1.2307e-03,  3.5878e-04, -1.3666e-04],\n",
      "           [ 1.7964e-03,  1.8796e-03,  2.7707e-03]],\n",
      "\n",
      "          [[ 6.9528e-04,  7.3827e-04,  6.5463e-04],\n",
      "           [ 1.1875e-03,  3.7712e-04,  1.1606e-03],\n",
      "           [ 2.4690e-03, -5.9478e-05,  1.2871e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.1116e-04,  7.3721e-05,  2.6062e-04],\n",
      "           [-2.2378e-04,  2.3757e-04,  2.1290e-04],\n",
      "           [-2.0948e-04, -1.4088e-04, -3.8991e-05]],\n",
      "\n",
      "          [[-4.2391e-04,  2.1899e-05, -4.7339e-05],\n",
      "           [-2.6913e-04, -1.3225e-04, -1.0837e-04],\n",
      "           [-1.5478e-04, -3.4089e-04, -3.0203e-04]],\n",
      "\n",
      "          [[-2.9156e-04, -3.8606e-04, -1.6940e-04],\n",
      "           [-4.5269e-04, -1.3355e-04, -4.5415e-05],\n",
      "           [-4.0368e-04,  3.8209e-05, -1.8526e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.4843e-03, -1.5820e-03,  9.7852e-03],\n",
      "           [-4.1019e-03,  5.9944e-03,  1.4167e-02],\n",
      "           [-3.5052e-03,  7.7615e-05,  6.4824e-03]],\n",
      "\n",
      "          [[-1.8198e-02, -2.5539e-03,  5.7338e-03],\n",
      "           [-1.3658e-02, -5.8082e-03,  6.7681e-04],\n",
      "           [-2.7181e-03, -7.5489e-03, -6.2978e-03]],\n",
      "\n",
      "          [[-1.4461e-02, -1.2606e-02, -6.8112e-03],\n",
      "           [-1.2524e-02, -1.3599e-02, -2.8553e-03],\n",
      "           [-1.4206e-02, -1.4466e-02, -4.6733e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.2371e-02, -1.8140e-02, -1.3686e-02],\n",
      "           [-5.3452e-03, -1.0185e-02, -1.1613e-02],\n",
      "           [-2.0909e-03, -5.1929e-03, -6.2243e-03]],\n",
      "\n",
      "          [[-7.2576e-03, -1.0448e-02, -1.0443e-02],\n",
      "           [-4.7717e-03, -2.3643e-03, -2.6727e-03],\n",
      "           [-1.4445e-03,  9.6224e-04,  2.8172e-03]],\n",
      "\n",
      "          [[-4.9512e-03, -6.2983e-03, -5.1193e-03],\n",
      "           [-8.0445e-04, -1.4516e-03, -3.5437e-04],\n",
      "           [-4.7877e-03,  2.3412e-03,  4.1287e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.7661e-03, -1.7604e-03, -3.2349e-03],\n",
      "           [ 9.7415e-03,  5.5630e-03, -1.6011e-03],\n",
      "           [ 1.9796e-02,  1.7295e-02,  5.3030e-03]],\n",
      "\n",
      "          [[ 3.8359e-04, -1.9509e-05, -2.9921e-03],\n",
      "           [ 9.9979e-03,  6.4710e-03, -1.6979e-04],\n",
      "           [ 1.2415e-02,  1.8096e-02,  8.1845e-03]],\n",
      "\n",
      "          [[-5.2532e-03, -8.2229e-03, -7.8411e-03],\n",
      "           [ 5.8375e-04,  5.5899e-03, -1.0920e-03],\n",
      "           [ 9.4636e-03,  1.1787e-02,  6.5794e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.5650e-03,  1.6651e-02,  2.1703e-02],\n",
      "           [-7.9639e-04,  1.2271e-02,  1.5969e-02],\n",
      "           [-5.7837e-03, -7.2351e-03,  5.2111e-03]],\n",
      "\n",
      "          [[-1.5036e-03,  1.1590e-02,  1.8634e-02],\n",
      "           [ 4.8538e-05,  3.9872e-03,  1.0971e-02],\n",
      "           [-7.5141e-03,  1.6277e-04,  5.0108e-03]],\n",
      "\n",
      "          [[-8.2170e-03,  1.3011e-02,  1.6977e-02],\n",
      "           [ 1.1268e-02,  1.0971e-02,  8.0232e-03],\n",
      "           [ 2.5902e-03,  2.2402e-03,  2.7450e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.0144e-03,  9.8982e-04,  3.3139e-04],\n",
      "           [ 1.4059e-03, -3.3757e-04, -4.9246e-04],\n",
      "           [ 1.4725e-03, -3.3786e-04, -1.2718e-03]],\n",
      "\n",
      "          [[ 8.1488e-04, -6.1564e-04, -1.0028e-03],\n",
      "           [-5.5333e-04, -5.3942e-04, -2.0900e-03],\n",
      "           [-1.9473e-03, -1.9691e-03, -6.9688e-05]],\n",
      "\n",
      "          [[-1.2703e-03, -2.3918e-04, -3.5519e-04],\n",
      "           [-3.5456e-03, -1.8605e-03, -9.1988e-04],\n",
      "           [-3.0625e-03, -3.7058e-03, -4.1097e-05]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.7093e-03,  3.8942e-03,  2.9159e-03],\n",
      "           [ 2.8259e-03,  3.8373e-04,  9.1826e-04],\n",
      "           [ 4.4682e-03,  2.2085e-03,  1.6051e-03]],\n",
      "\n",
      "          [[-1.6394e-03, -1.3622e-03, -8.4814e-04],\n",
      "           [ 2.7824e-05, -3.1131e-03, -2.5998e-03],\n",
      "           [-4.4810e-04, -1.4194e-03, -1.9084e-03]],\n",
      "\n",
      "          [[-3.1098e-03, -1.4685e-03, -2.9335e-03],\n",
      "           [-2.6580e-03, -2.0653e-03, -1.7103e-03],\n",
      "           [-2.8861e-03, -1.9730e-03, -2.6718e-03]]]]], device='cuda:5')\n",
      "val accuracy_score: 40.00 %\n",
      "Val loss: 0.695751\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[5,    60] loss: 0.69449\n",
      "[5,   120] loss: 0.69399\n",
      "Time elapsed: 0h:11m:1s\n",
      "train accuracy_score: 54.81 %\n",
      "tensor([[[[[ 4.1890e-03,  3.4730e-04, -4.0182e-03],\n",
      "           [ 1.3071e-03, -5.3122e-03, -4.5729e-03],\n",
      "           [-5.6348e-03,  2.5529e-03, -2.4043e-03]],\n",
      "\n",
      "          [[-1.2350e-03, -3.2579e-03, -2.0125e-03],\n",
      "           [ 9.2520e-04, -1.6700e-03, -5.2942e-03],\n",
      "           [-2.3441e-03, -2.3440e-04, -2.7797e-03]],\n",
      "\n",
      "          [[-4.5546e-03, -3.9639e-03,  5.1559e-04],\n",
      "           [-2.3595e-03, -6.5492e-04, -3.6344e-03],\n",
      "           [-1.0179e-02, -3.7451e-03, -2.6258e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 4.7772e-03,  2.4010e-03, -6.6054e-04],\n",
      "           [ 3.3175e-03,  1.9078e-03,  1.9663e-04],\n",
      "           [ 1.6383e-03,  1.0777e-03,  6.3847e-04]],\n",
      "\n",
      "          [[ 5.1384e-03,  1.9757e-03,  4.6205e-04],\n",
      "           [ 2.1185e-03,  1.8283e-03,  1.0592e-04],\n",
      "           [ 7.5035e-04,  1.3728e-03,  4.5401e-04]],\n",
      "\n",
      "          [[ 2.2856e-03,  6.4405e-04, -1.2596e-04],\n",
      "           [ 1.4583e-03,  9.7416e-04,  3.3437e-04],\n",
      "           [ 8.7211e-04, -5.9296e-04, -1.0638e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.8687e-02, -4.3717e-02, -4.3768e-02],\n",
      "           [-4.8859e-02, -7.5722e-02, -2.0636e-02],\n",
      "           [-9.1666e-02, -7.3670e-02, -4.0221e-02]],\n",
      "\n",
      "          [[-3.1700e-02, -6.7575e-03, -3.0237e-02],\n",
      "           [-1.9689e-02, -2.9343e-02, -2.3020e-02],\n",
      "           [-5.8315e-02, -3.0836e-02, -2.8252e-02]],\n",
      "\n",
      "          [[-2.0846e-02, -1.1091e-02, -2.7290e-02],\n",
      "           [ 3.2620e-03, -5.5599e-03, -2.1699e-02],\n",
      "           [ 2.4267e-04, -1.4705e-02, -1.0429e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.9573e-02,  4.7572e-02,  3.9129e-02],\n",
      "           [ 2.4181e-02,  2.9711e-02,  3.5489e-02],\n",
      "           [ 2.4595e-02,  2.1633e-02,  1.8755e-02]],\n",
      "\n",
      "          [[ 3.1495e-02,  2.8376e-02,  3.3914e-02],\n",
      "           [ 1.6962e-02,  1.1587e-02,  1.0053e-02],\n",
      "           [ 7.5354e-03,  1.3709e-03, -3.5722e-03]],\n",
      "\n",
      "          [[ 3.8363e-02,  3.9243e-02,  3.0398e-02],\n",
      "           [ 1.0287e-02,  1.3669e-02,  5.8003e-03],\n",
      "           [ 7.6141e-03, -1.9927e-02, -2.2643e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-5.1375e-02, -2.2474e-02, -2.2500e-02],\n",
      "           [-6.6349e-02, -2.5742e-02, -2.7280e-02],\n",
      "           [-1.0672e-01, -4.6575e-02, -2.7713e-02]],\n",
      "\n",
      "          [[-5.7764e-02, -3.9653e-02, -2.8093e-02],\n",
      "           [-6.9982e-02, -6.5793e-02, -4.9277e-02],\n",
      "           [-6.9470e-02, -6.8494e-02, -5.1658e-02]],\n",
      "\n",
      "          [[-6.1533e-02, -4.6229e-02, -3.6598e-02],\n",
      "           [-5.5139e-02, -5.9954e-02, -6.3197e-02],\n",
      "           [-7.0339e-02, -9.4175e-02, -5.1070e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-8.0871e-02, -5.7010e-02, -4.5943e-02],\n",
      "           [-9.9685e-02, -9.1444e-02, -8.2518e-02],\n",
      "           [-1.0356e-01, -9.1660e-02, -1.2460e-01]],\n",
      "\n",
      "          [[-3.8787e-02, -4.7555e-02, -6.6022e-02],\n",
      "           [-8.8936e-02, -1.7913e-02, -1.0608e-01],\n",
      "           [-6.5336e-02, -8.3607e-02, -8.8802e-02]],\n",
      "\n",
      "          [[-6.2916e-02, -2.2256e-02, -2.4411e-02],\n",
      "           [-9.7354e-02,  2.0095e-03, -5.9550e-02],\n",
      "           [-1.5521e-01, -2.9469e-02, -7.2321e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.2571e-02, -6.9242e-03,  5.4950e-03],\n",
      "           [ 1.2584e-03,  1.2249e-02,  7.2653e-03],\n",
      "           [ 9.2706e-03,  1.7766e-02,  1.4462e-02]],\n",
      "\n",
      "          [[-3.5392e-03,  1.0506e-02,  1.1706e-02],\n",
      "           [ 5.6925e-03,  1.3744e-02,  9.7675e-03],\n",
      "           [ 1.1268e-02,  1.3064e-02,  9.1983e-03]],\n",
      "\n",
      "          [[ 1.1318e-02,  1.3174e-02,  1.3035e-02],\n",
      "           [ 1.2855e-02,  8.0451e-03,  5.0978e-03],\n",
      "           [ 1.3931e-02,  1.3838e-02,  1.3268e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.3994e-02, -1.2014e-02, -1.0937e-02],\n",
      "           [-2.4122e-02, -1.2498e-02, -6.7546e-03],\n",
      "           [-2.8147e-02, -2.6769e-02, -1.3895e-02]],\n",
      "\n",
      "          [[-1.0754e-02, -5.7895e-03,  5.2691e-03],\n",
      "           [-1.9472e-02,  3.3613e-03,  7.4988e-03],\n",
      "           [-2.6184e-02, -9.2692e-03, -2.6054e-04]],\n",
      "\n",
      "          [[-2.1521e-02,  4.9818e-04,  1.2930e-02],\n",
      "           [-1.9322e-02,  1.6696e-02,  2.1713e-02],\n",
      "           [-1.1728e-02,  3.3053e-03,  1.0775e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 68.00 %\n",
      "Val loss: 0.670632\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[6,    60] loss: 0.68246\n",
      "[6,   120] loss: 0.70781\n",
      "Time elapsed: 0h:12m:52s\n",
      "train accuracy_score: 54.23 %\n",
      "tensor([[[[[ 2.9743e-03,  2.2253e-03,  2.5064e-03],\n",
      "           [ 1.4774e-03,  3.4152e-03,  6.0238e-03],\n",
      "           [ 7.8410e-03,  4.6897e-03,  4.6147e-03]],\n",
      "\n",
      "          [[ 2.3186e-03,  3.1189e-03,  8.5141e-04],\n",
      "           [ 4.9721e-03,  9.2222e-04,  1.5894e-04],\n",
      "           [ 3.4512e-03,  1.0151e-03,  3.3934e-03]],\n",
      "\n",
      "          [[ 2.7931e-03,  1.0666e-03,  5.1474e-04],\n",
      "           [ 5.1265e-03,  2.1061e-03,  1.7002e-03],\n",
      "           [ 5.0802e-03,  2.7956e-04, -1.8503e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.5370e-03, -1.2696e-03, -4.9553e-04],\n",
      "           [-6.1986e-04, -1.4088e-03, -2.6599e-04],\n",
      "           [-1.3973e-03, -1.1964e-03,  2.2600e-04]],\n",
      "\n",
      "          [[-1.5692e-03, -1.8340e-03,  1.8877e-04],\n",
      "           [-1.0318e-03, -1.0954e-03,  1.1322e-04],\n",
      "           [-7.3908e-04, -6.2206e-04,  1.7974e-04]],\n",
      "\n",
      "          [[-1.5243e-03, -3.2500e-04, -4.4769e-04],\n",
      "           [-1.9821e-03, -1.2821e-03,  1.9359e-04],\n",
      "           [-2.0729e-03, -1.3695e-04,  7.6027e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-4.7084e-02, -1.6455e-02,  4.6419e-03],\n",
      "           [-4.1819e-02, -1.6691e-02,  2.2570e-03],\n",
      "           [-4.2413e-02, -5.1351e-02, -3.9442e-02]],\n",
      "\n",
      "          [[-7.3758e-02, -3.1217e-02, -2.8745e-03],\n",
      "           [-5.8534e-02, -3.4079e-02, -4.8619e-03],\n",
      "           [-5.9181e-02, -3.3372e-02, -4.3313e-02]],\n",
      "\n",
      "          [[-4.3356e-02, -4.2115e-02, -9.7526e-03],\n",
      "           [-7.5663e-02, -5.0472e-02, -1.8698e-02],\n",
      "           [-5.6644e-02, -3.1783e-02, -1.7341e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.2246e-02, -2.8007e-02, -1.1566e-02],\n",
      "           [-3.4825e-03, -3.3394e-03, -1.2314e-02],\n",
      "           [-1.2044e-02,  4.5655e-03,  1.4759e-02]],\n",
      "\n",
      "          [[-1.2876e-02, -1.4421e-02, -1.4930e-03],\n",
      "           [-1.0373e-02,  1.3252e-03, -2.6345e-03],\n",
      "           [-1.1936e-02,  1.7768e-03,  1.5287e-02]],\n",
      "\n",
      "          [[-2.2115e-02, -7.4168e-03,  5.0435e-03],\n",
      "           [-1.8168e-02, -2.1342e-03,  2.0188e-03],\n",
      "           [-2.3480e-02, -1.7699e-03,  1.9325e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.7324e-04, -2.7629e-03,  5.8669e-03],\n",
      "           [ 1.8583e-02, -2.8341e-03, -1.0317e-02],\n",
      "           [ 3.4931e-02,  1.8365e-02,  1.0104e-02]],\n",
      "\n",
      "          [[-2.5548e-03, -1.1159e-03, -4.5970e-03],\n",
      "           [ 1.8107e-02, -7.2319e-03, -1.9589e-02],\n",
      "           [ 1.3354e-02,  8.8485e-03, -5.1537e-04]],\n",
      "\n",
      "          [[-9.4944e-03, -7.7017e-03, -9.9150e-03],\n",
      "           [-3.6273e-03,  3.4189e-04, -1.5577e-03],\n",
      "           [ 1.5962e-03, -6.5279e-03, -9.9764e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 7.3139e-02,  1.1928e-01,  1.9533e-01],\n",
      "           [ 6.9394e-02,  1.1618e-01,  1.9433e-01],\n",
      "           [ 3.8001e-02,  9.1382e-02,  1.7241e-01]],\n",
      "\n",
      "          [[ 5.0397e-02,  7.9071e-02,  2.1579e-01],\n",
      "           [ 5.9392e-02,  8.4949e-02,  2.0661e-01],\n",
      "           [ 5.5841e-02,  8.7295e-02,  1.8475e-01]],\n",
      "\n",
      "          [[ 5.9964e-02,  9.1218e-02,  1.9032e-01],\n",
      "           [ 7.1388e-02,  8.6135e-02,  1.9876e-01],\n",
      "           [ 5.7400e-02,  9.8254e-02,  1.4991e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.0375e-02,  9.2043e-03,  1.0158e-02],\n",
      "           [ 6.2809e-03,  7.5945e-03,  1.1520e-02],\n",
      "           [ 8.0889e-03,  1.0346e-02,  4.6247e-03]],\n",
      "\n",
      "          [[ 6.4661e-03,  1.2149e-02,  1.1193e-02],\n",
      "           [ 6.9586e-03,  8.9404e-03,  8.4748e-03],\n",
      "           [ 3.1607e-03,  7.0145e-03,  7.1960e-03]],\n",
      "\n",
      "          [[ 9.6856e-03,  3.6855e-03,  7.1725e-03],\n",
      "           [ 1.5505e-03,  5.3456e-03,  1.0203e-02],\n",
      "           [ 2.7809e-04,  9.0216e-03,  1.3501e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.7468e-02,  1.7032e-02,  6.3799e-03],\n",
      "           [ 3.3492e-03, -1.2080e-03, -1.1584e-03],\n",
      "           [-3.4806e-04, -9.2058e-03,  9.7391e-03]],\n",
      "\n",
      "          [[-1.6632e-03, -1.2088e-03, -1.3380e-03],\n",
      "           [-8.9645e-03, -1.4944e-02, -7.9418e-03],\n",
      "           [-1.8060e-02, -2.5317e-02, -7.0856e-03]],\n",
      "\n",
      "          [[-1.9402e-02, -1.5392e-02, -5.6944e-03],\n",
      "           [-1.9043e-02, -1.5165e-02, -6.3237e-03],\n",
      "           [-2.6128e-02, -2.1354e-02, -1.4057e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 47.00 %\n",
      "Val loss: 0.686003\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[7,    60] loss: 0.67969\n",
      "[7,   120] loss: 0.67345\n",
      "Time elapsed: 0h:14m:42s\n",
      "train accuracy_score: 58.54 %\n",
      "tensor([[[[[-2.2860e-03, -4.7019e-03, -1.6897e-03],\n",
      "           [-5.5692e-03, -3.1104e-03, -8.7784e-04],\n",
      "           [-9.8300e-03, -3.4627e-03,  1.4488e-03]],\n",
      "\n",
      "          [[ 7.7160e-04,  6.1571e-04,  1.1596e-03],\n",
      "           [-2.1766e-03, -2.6597e-03,  2.1402e-03],\n",
      "           [-6.7162e-03, -1.7218e-03,  4.9066e-04]],\n",
      "\n",
      "          [[ 2.2164e-04,  2.1122e-03,  2.5152e-03],\n",
      "           [ 1.6871e-03, -1.2992e-03,  1.9791e-05],\n",
      "           [-2.5708e-03,  4.7192e-04,  1.1739e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.0136e-03,  5.6309e-04, -4.0109e-04],\n",
      "           [ 5.6325e-04,  7.0088e-04, -1.6704e-04],\n",
      "           [ 1.5523e-03,  6.5003e-05, -2.3459e-04]],\n",
      "\n",
      "          [[ 4.9614e-04,  5.7932e-04, -7.9001e-04],\n",
      "           [-3.0129e-04,  1.8082e-04, -5.0975e-05],\n",
      "           [ 1.4037e-03,  5.6511e-04, -1.5225e-04]],\n",
      "\n",
      "          [[ 7.0164e-05, -4.7928e-04, -6.7093e-04],\n",
      "           [ 2.2223e-04, -7.9735e-04, -3.3912e-04],\n",
      "           [ 1.1193e-04,  5.1054e-04,  2.1776e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 4.1447e-02,  2.7262e-02, -4.5564e-03],\n",
      "           [ 5.3847e-02,  4.2850e-02, -1.5848e-02],\n",
      "           [ 7.7687e-02,  3.7728e-02, -3.0432e-03]],\n",
      "\n",
      "          [[ 3.8182e-02,  4.1646e-04,  8.8307e-03],\n",
      "           [ 4.5752e-02,  2.4758e-02,  7.5316e-03],\n",
      "           [ 3.6090e-02,  3.6984e-02,  3.9801e-03]],\n",
      "\n",
      "          [[ 2.6294e-02,  1.4853e-02,  5.3654e-03],\n",
      "           [ 3.0788e-02,  2.2481e-02,  1.1612e-02],\n",
      "           [ 2.0630e-02,  2.2694e-02,  2.0392e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.0102e-02,  2.6539e-02,  2.2244e-02],\n",
      "           [ 2.3276e-02,  2.3033e-02,  2.3264e-02],\n",
      "           [ 1.0427e-02,  6.8091e-03,  1.0193e-02]],\n",
      "\n",
      "          [[ 2.5070e-02,  1.5369e-02,  8.7243e-03],\n",
      "           [ 2.1743e-02,  3.2913e-03, -3.2669e-03],\n",
      "           [ 9.4077e-03, -3.3664e-03, -1.2012e-02]],\n",
      "\n",
      "          [[ 1.6847e-02,  1.8207e-02,  1.8261e-03],\n",
      "           [ 1.5566e-02, -3.8004e-03, -1.2716e-02],\n",
      "           [ 1.5581e-02, -5.5748e-03, -2.4263e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.2903e-02, -1.3174e-02, -1.9156e-02],\n",
      "           [-2.7172e-02, -1.8345e-02, -1.7874e-02],\n",
      "           [-4.2299e-02, -3.9084e-02, -1.7047e-02]],\n",
      "\n",
      "          [[-2.9756e-02, -1.1014e-02, -2.3187e-02],\n",
      "           [-2.8654e-02, -3.4406e-02, -2.7585e-02],\n",
      "           [-4.5787e-02, -3.8397e-02, -4.3587e-02]],\n",
      "\n",
      "          [[-4.3156e-02, -3.7502e-02, -3.2945e-02],\n",
      "           [-3.0781e-02, -2.7658e-02, -3.5828e-02],\n",
      "           [-2.9666e-02, -2.9969e-02, -3.6069e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.0842e-02, -1.0320e-01, -1.6448e-01],\n",
      "           [-4.6323e-02, -1.1387e-01, -1.7775e-01],\n",
      "           [-2.9147e-02, -8.9223e-02, -1.7070e-01]],\n",
      "\n",
      "          [[-3.7147e-02, -8.2329e-02, -1.6951e-01],\n",
      "           [-3.4585e-02, -9.8864e-02, -1.6706e-01],\n",
      "           [-5.7459e-02, -8.6816e-02, -1.6945e-01]],\n",
      "\n",
      "          [[-5.3677e-02, -4.1861e-02, -1.1347e-01],\n",
      "           [-5.5575e-02, -4.4080e-02, -1.3192e-01],\n",
      "           [-5.8188e-02, -7.1382e-02, -1.1716e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.9742e-03, -5.2791e-03, -7.2511e-03],\n",
      "           [-5.1375e-03, -4.6051e-03, -4.1697e-03],\n",
      "           [ 2.7464e-03,  1.2012e-03,  2.2475e-03]],\n",
      "\n",
      "          [[-1.0348e-02, -8.1312e-03, -6.0552e-03],\n",
      "           [-7.4751e-03, -4.6174e-03, -6.5145e-03],\n",
      "           [-1.3262e-03, -1.7997e-04,  8.8732e-04]],\n",
      "\n",
      "          [[-7.8940e-03, -6.8707e-03, -1.0612e-02],\n",
      "           [-4.6978e-03, -6.1815e-03, -1.2905e-02],\n",
      "           [-4.3564e-03, -4.9690e-03, -5.7857e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.3150e-02, -9.1216e-03,  1.1238e-03],\n",
      "           [-1.0783e-02, -4.3695e-03, -7.1029e-04],\n",
      "           [-4.7406e-04,  5.7465e-03,  6.6232e-03]],\n",
      "\n",
      "          [[-1.0437e-02, -5.1992e-03, -9.4575e-04],\n",
      "           [-4.7965e-03,  6.2423e-03, -5.4447e-03],\n",
      "           [ 3.8350e-04,  1.8814e-03,  5.5792e-04]],\n",
      "\n",
      "          [[-7.9671e-03,  1.8396e-03,  1.0676e-02],\n",
      "           [-2.4442e-03,  6.8426e-03,  5.9161e-03],\n",
      "           [ 7.0462e-03,  2.3222e-03, -4.2909e-05]]]]], device='cuda:5')\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "val accuracy_score: 40.00 %\n",
      "Val loss: 0.718239\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[8,    60] loss: 0.66700\n",
      "[8,   120] loss: 0.64206\n",
      "Time elapsed: 0h:16m:32s\n",
      "train accuracy_score: 61.41 %\n",
      "tensor([[[[[-3.3230e-03, -2.1179e-03,  3.2768e-03],\n",
      "           [-6.6261e-03, -3.7610e-03,  1.2782e-03],\n",
      "           [-1.7262e-02, -6.4756e-03, -3.6899e-03]],\n",
      "\n",
      "          [[-4.1094e-03, -2.0204e-03,  4.2462e-03],\n",
      "           [-3.8529e-03, -3.9512e-03, -1.4300e-04],\n",
      "           [-4.0657e-03, -1.3106e-03, -1.7339e-03]],\n",
      "\n",
      "          [[ 1.3362e-04, -3.5785e-04,  4.1645e-03],\n",
      "           [ 4.4598e-03,  6.9674e-04,  4.5031e-03],\n",
      "           [-6.1116e-03,  9.3723e-04,  1.8389e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.4189e-03,  4.3774e-04, -4.2303e-04],\n",
      "           [ 9.5557e-04,  4.6352e-05, -7.0420e-04],\n",
      "           [ 6.5462e-04, -1.7121e-04, -1.1346e-03]],\n",
      "\n",
      "          [[ 1.5522e-03,  1.6883e-03, -4.5254e-05],\n",
      "           [ 1.0842e-03,  7.4115e-06, -1.3027e-04],\n",
      "           [-1.9596e-04, -1.4639e-04, -1.6228e-03]],\n",
      "\n",
      "          [[-8.3456e-04,  1.6704e-03,  1.8836e-06],\n",
      "           [-7.9884e-04, -1.9059e-04, -1.0682e-03],\n",
      "           [-5.9006e-04, -1.6461e-03, -1.7049e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-7.5626e-03, -1.0985e-02, -2.8114e-02],\n",
      "           [ 2.2536e-02,  1.3236e-02, -2.8365e-02],\n",
      "           [ 5.3743e-02,  3.8474e-02,  7.7436e-03]],\n",
      "\n",
      "          [[ 3.4372e-03, -2.9682e-02, -8.9258e-03],\n",
      "           [ 3.3208e-03,  1.8527e-02,  9.9082e-03],\n",
      "           [ 5.3232e-02,  5.4251e-02,  2.4644e-02]],\n",
      "\n",
      "          [[-3.9941e-02, -5.3446e-02, -3.6064e-02],\n",
      "           [-1.3862e-02, -1.4612e-03, -4.5047e-03],\n",
      "           [ 2.3175e-02,  4.4012e-02,  9.8861e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.9348e-02,  5.9185e-02,  6.7211e-02],\n",
      "           [ 1.5645e-02,  3.8796e-02,  6.0204e-02],\n",
      "           [ 7.7486e-03,  2.0118e-02,  1.6191e-02]],\n",
      "\n",
      "          [[ 3.3798e-02,  4.4255e-02,  4.0724e-02],\n",
      "           [ 1.5891e-02,  2.0700e-02,  3.2391e-02],\n",
      "           [ 6.7751e-03,  6.2354e-03,  3.1836e-03]],\n",
      "\n",
      "          [[ 3.4324e-02,  4.1764e-02,  2.2895e-02],\n",
      "           [ 4.8168e-03,  5.6607e-03,  8.6634e-03],\n",
      "           [-8.7891e-03, -1.2025e-02, -1.9058e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.5440e-02, -1.5902e-02, -1.4206e-02],\n",
      "           [-5.0024e-02, -2.0728e-02, -9.2128e-03],\n",
      "           [-9.0590e-02, -6.1769e-02, -2.4870e-02]],\n",
      "\n",
      "          [[-1.6220e-02, -2.5299e-02, -1.8751e-02],\n",
      "           [-5.6984e-02, -4.7421e-02, -3.0628e-02],\n",
      "           [-8.0719e-02, -6.2002e-02, -5.4591e-02]],\n",
      "\n",
      "          [[-4.8787e-02, -4.9930e-02, -5.3262e-02],\n",
      "           [-5.2916e-02, -6.4486e-02, -7.2916e-02],\n",
      "           [-7.8019e-02, -8.9733e-02, -6.4202e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.1371e-01, -1.1104e-01, -1.1155e-01],\n",
      "           [-5.3496e-02, -5.4015e-02, -9.7734e-02],\n",
      "           [-1.2734e-03, -1.0890e-02, -6.2810e-02]],\n",
      "\n",
      "          [[-8.8111e-02, -7.4114e-02, -1.0744e-01],\n",
      "           [-5.0377e-02, -6.8016e-02, -1.0400e-01],\n",
      "           [ 3.5827e-03, -3.4836e-02, -6.8578e-02]],\n",
      "\n",
      "          [[-1.2317e-01, -6.3997e-02, -8.6983e-02],\n",
      "           [-4.7948e-02, -3.7671e-02, -1.0192e-01],\n",
      "           [-5.8789e-03, -2.1709e-02, -6.7750e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.9028e-02, -1.5022e-02, -1.2059e-02],\n",
      "           [-5.4795e-03, -1.9775e-04,  1.0576e-03],\n",
      "           [ 2.2777e-03,  4.7773e-03,  4.8706e-03]],\n",
      "\n",
      "          [[-1.8770e-02, -1.2987e-02, -8.4685e-03],\n",
      "           [-2.6365e-03, -1.5353e-03, -5.2690e-03],\n",
      "           [ 3.8204e-03,  6.1228e-03,  5.9664e-03]],\n",
      "\n",
      "          [[-2.0668e-02, -2.1487e-02, -1.6139e-02],\n",
      "           [-5.1543e-03, -8.1799e-03, -9.1575e-03],\n",
      "           [ 3.7938e-03,  4.3494e-03,  4.6384e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.8051e-02, -2.6906e-02, -1.1822e-02],\n",
      "           [-8.8388e-03,  4.5348e-03,  7.2788e-03],\n",
      "           [ 8.1720e-03,  1.5072e-02,  2.2994e-02]],\n",
      "\n",
      "          [[-1.1485e-02, -1.1182e-02, -6.5638e-03],\n",
      "           [ 1.3240e-02,  1.9352e-02,  1.9975e-02],\n",
      "           [ 3.4068e-02,  4.0409e-02,  3.5675e-02]],\n",
      "\n",
      "          [[ 1.8514e-02,  1.4743e-02,  1.0314e-02],\n",
      "           [ 2.6768e-02,  3.6633e-02,  2.9264e-02],\n",
      "           [ 4.0764e-02,  3.8391e-02,  3.6145e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 61.00 %\n",
      "Val loss: 0.638837\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[9,    60] loss: 0.65549\n",
      "[9,   120] loss: 0.63233\n",
      "Time elapsed: 0h:18m:25s\n",
      "train accuracy_score: 64.99 %\n",
      "tensor([[[[[-1.1875e-02, -1.3798e-02, -1.7340e-02],\n",
      "           [-1.1217e-02, -1.0786e-02, -1.9816e-02],\n",
      "           [-3.2616e-02, -1.3682e-02, -2.3199e-02]],\n",
      "\n",
      "          [[-1.4101e-04, -3.0685e-03, -4.3214e-03],\n",
      "           [-5.2864e-03, -6.3344e-03, -5.1559e-03],\n",
      "           [-1.7605e-02, -7.2476e-03, -1.0335e-02]],\n",
      "\n",
      "          [[-1.8382e-03, -3.5173e-03,  3.0387e-04],\n",
      "           [-3.9603e-03, -4.5746e-03, -1.5137e-03],\n",
      "           [-2.4382e-02, -4.6955e-03,  1.0323e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 4.9552e-04,  7.2889e-05,  3.6631e-04],\n",
      "           [ 1.1550e-03, -4.5865e-04,  9.4429e-05],\n",
      "           [ 2.2119e-03, -1.5561e-04,  9.7163e-05]],\n",
      "\n",
      "          [[-2.2622e-03, -1.0965e-03, -8.3765e-04],\n",
      "           [ 5.9413e-05, -8.2973e-04, -2.9927e-04],\n",
      "           [ 1.1715e-03, -1.4280e-03, -1.4545e-03]],\n",
      "\n",
      "          [[-2.1935e-03, -1.6650e-03, -6.1216e-04],\n",
      "           [-9.3899e-04, -1.7683e-03, -9.7531e-04],\n",
      "           [ 5.7092e-04, -1.5941e-03, -1.3504e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.1733e-01, -1.3911e-01, -1.8872e-01],\n",
      "           [ 7.0310e-03, -3.6998e-02, -1.3122e-01],\n",
      "           [ 1.6605e-01,  1.0061e-01, -1.5454e-02]],\n",
      "\n",
      "          [[-7.6461e-02, -1.3699e-01, -1.1473e-01],\n",
      "           [ 4.2384e-02,  2.6738e-02, -4.1885e-02],\n",
      "           [ 1.4445e-01,  1.2564e-01,  4.4564e-02]],\n",
      "\n",
      "          [[-9.8699e-02, -1.1124e-01, -9.4732e-02],\n",
      "           [ 6.9817e-03,  1.2308e-02, -2.6662e-02],\n",
      "           [ 8.6062e-02,  8.8561e-02,  2.0742e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 5.0020e-02,  7.2759e-02,  6.3386e-02],\n",
      "           [ 3.2824e-02,  5.2788e-02,  4.6914e-02],\n",
      "           [ 2.1263e-02,  1.5793e-02,  2.6325e-03]],\n",
      "\n",
      "          [[ 3.2301e-02,  5.3348e-02,  4.6390e-02],\n",
      "           [ 1.3461e-02,  1.7955e-02,  1.3157e-02],\n",
      "           [ 7.4201e-03, -3.2678e-03, -1.8107e-02]],\n",
      "\n",
      "          [[ 1.9778e-02,  3.6948e-02,  1.6227e-02],\n",
      "           [-8.8687e-03, -3.7407e-03, -1.0039e-03],\n",
      "           [-7.3828e-03, -2.0660e-02, -4.2850e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.6627e-02, -1.7707e-02, -1.8453e-02],\n",
      "           [-4.6194e-02, -1.7968e-02, -1.6262e-03],\n",
      "           [-6.7160e-02, -5.2860e-02, -1.7219e-02]],\n",
      "\n",
      "          [[-6.9976e-02, -3.5375e-02, -2.8342e-02],\n",
      "           [-6.9990e-02, -7.2824e-02, -4.1285e-02],\n",
      "           [-5.8329e-02, -7.2869e-02, -6.8963e-02]],\n",
      "\n",
      "          [[-8.2904e-02, -7.7915e-02, -5.0887e-02],\n",
      "           [-7.6255e-02, -8.5963e-02, -7.5971e-02],\n",
      "           [-6.6203e-02, -6.4420e-02, -6.4937e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.2741e-01, -1.8645e-01, -3.0418e-01],\n",
      "           [-6.5276e-02, -1.6768e-01, -2.7621e-01],\n",
      "           [-1.8381e-02, -1.1208e-01, -2.1499e-01]],\n",
      "\n",
      "          [[-1.3409e-01, -1.1504e-01, -2.4495e-01],\n",
      "           [-1.3974e-02, -9.6938e-02, -2.2977e-01],\n",
      "           [-6.8792e-03, -1.0325e-01, -1.7491e-01]],\n",
      "\n",
      "          [[-1.6598e-01, -9.5355e-02, -1.6653e-01],\n",
      "           [-5.8449e-02, -6.4733e-02, -1.7345e-01],\n",
      "           [ 3.3056e-02, -6.2323e-02, -1.0464e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-3.1542e-02, -2.2863e-02, -2.7420e-02],\n",
      "           [-8.3025e-03, -2.1138e-03, -1.3339e-02],\n",
      "           [ 7.2577e-03,  6.1900e-03,  6.7058e-04]],\n",
      "\n",
      "          [[-2.6975e-02, -2.0770e-02, -2.0000e-02],\n",
      "           [-7.6878e-03, -8.4838e-03, -1.4614e-02],\n",
      "           [ 1.7247e-02,  3.5255e-03, -5.7970e-03]],\n",
      "\n",
      "          [[-3.0833e-02, -3.0330e-02, -2.7912e-02],\n",
      "           [-7.5224e-03, -1.1759e-02, -2.6029e-02],\n",
      "           [ 9.8327e-03,  4.6246e-03, -1.1117e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.7369e-02, -2.8650e-02,  9.4269e-03],\n",
      "           [-4.0941e-02, -7.6621e-03,  9.3678e-03],\n",
      "           [-2.6352e-02,  1.9074e-03,  3.1488e-02]],\n",
      "\n",
      "          [[-4.2349e-02, -9.2552e-03,  1.7255e-03],\n",
      "           [-1.4653e-02,  9.5931e-03,  5.5084e-03],\n",
      "           [ 5.5219e-04,  2.5810e-02,  4.9486e-02]],\n",
      "\n",
      "          [[-1.2546e-02, -1.1158e-03, -1.0741e-03],\n",
      "           [ 5.3192e-03,  2.5224e-02,  2.1049e-02],\n",
      "           [ 2.6425e-02,  2.6619e-02,  4.3143e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 72.00 %\n",
      "Val loss: 0.549941\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10,    60] loss: 0.62608\n",
      "[10,   120] loss: 0.52780\n",
      "Time elapsed: 0h:20m:17s\n",
      "train accuracy_score: 69.15 %\n",
      "tensor([[[[[-7.8442e-03, -7.5800e-03, -6.0120e-03],\n",
      "           [-7.5438e-03, -8.4542e-03, -7.5224e-03],\n",
      "           [-2.3689e-02, -9.0542e-03, -1.1572e-02]],\n",
      "\n",
      "          [[-4.1442e-03,  7.1297e-04,  2.0211e-03],\n",
      "           [-1.0603e-02, -3.7958e-03, -1.4106e-03],\n",
      "           [-1.7586e-02, -4.4745e-03, -8.3326e-03]],\n",
      "\n",
      "          [[-6.9455e-03, -1.3424e-04,  2.5356e-03],\n",
      "           [-8.1952e-03, -5.7179e-04,  2.0566e-03],\n",
      "           [-2.2202e-02, -4.7169e-03, -1.7792e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.3675e-03,  4.3633e-04, -3.8590e-04],\n",
      "           [ 2.3384e-03,  1.2285e-04, -1.0624e-03],\n",
      "           [ 2.0995e-03,  2.0949e-04, -9.3895e-04]],\n",
      "\n",
      "          [[ 3.4216e-03,  1.4590e-03, -4.2090e-04],\n",
      "           [ 2.8394e-03, -5.8007e-04, -3.0996e-04],\n",
      "           [ 1.6010e-03, -5.5935e-04, -1.2499e-03]],\n",
      "\n",
      "          [[ 1.7457e-03,  2.4912e-03,  4.2288e-04],\n",
      "           [ 1.8624e-03, -3.9087e-05, -5.4606e-04],\n",
      "           [ 2.0508e-03, -8.0931e-04, -7.1488e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-4.6260e-02, -3.6761e-02, -1.3350e-01],\n",
      "           [ 6.4673e-02,  5.2888e-02, -8.0993e-02],\n",
      "           [ 2.0009e-01,  1.8200e-01,  4.8602e-02]],\n",
      "\n",
      "          [[-1.8218e-02, -9.0141e-02, -7.2361e-02],\n",
      "           [ 8.5981e-02,  5.9137e-02, -2.8532e-02],\n",
      "           [ 2.1060e-01,  1.5545e-01,  6.3101e-02]],\n",
      "\n",
      "          [[-7.2192e-02, -8.6666e-02, -7.3816e-02],\n",
      "           [ 4.5309e-02,  2.5311e-02,  1.3154e-02],\n",
      "           [ 1.4219e-01,  1.1780e-01,  6.2764e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.0587e-02,  4.9030e-02,  6.4167e-02],\n",
      "           [ 1.4072e-02,  3.1294e-02,  4.7668e-02],\n",
      "           [ 1.8012e-02,  1.2955e-02,  1.0223e-03]],\n",
      "\n",
      "          [[ 1.9866e-02,  3.2902e-02,  4.1064e-02],\n",
      "           [ 5.0500e-04,  6.6920e-03,  2.8556e-02],\n",
      "           [ 6.8280e-04,  2.6472e-03,  7.3978e-04]],\n",
      "\n",
      "          [[ 3.2058e-02,  3.8660e-02,  2.4039e-02],\n",
      "           [ 8.9900e-03, -8.9389e-04, -2.1875e-03],\n",
      "           [-1.2064e-03, -4.9634e-03, -2.2956e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-7.1789e-03, -5.6533e-03, -1.8477e-02],\n",
      "           [-1.2098e-02, -3.3930e-03, -4.7061e-03],\n",
      "           [-2.9890e-02, -3.8531e-02, -9.7459e-03]],\n",
      "\n",
      "          [[-1.2161e-02, -9.8703e-03, -1.1247e-02],\n",
      "           [-1.8293e-02, -3.0437e-02, -2.0823e-02],\n",
      "           [-1.8867e-02, -3.9747e-02, -2.7572e-02]],\n",
      "\n",
      "          [[-3.7451e-02, -2.7385e-02, -3.5322e-02],\n",
      "           [-2.5240e-02, -4.2444e-02, -3.5092e-02],\n",
      "           [-2.3711e-02, -3.5214e-02, -3.3298e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-5.7967e-02, -6.7411e-02, -1.2973e-01],\n",
      "           [-3.5744e-03, -6.0018e-02, -9.5368e-02],\n",
      "           [ 8.6871e-02,  2.0095e-02, -8.6257e-02]],\n",
      "\n",
      "          [[-5.4058e-02, -6.6000e-02, -9.1339e-02],\n",
      "           [ 3.1989e-02, -3.2363e-02, -7.1533e-02],\n",
      "           [ 7.6841e-02, -2.7452e-02, -7.8230e-02]],\n",
      "\n",
      "          [[-1.1605e-01, -1.5264e-02, -3.4891e-02],\n",
      "           [ 2.4623e-02, -1.3130e-02, -4.7921e-02],\n",
      "           [ 9.7059e-02, -1.5762e-02, -5.0733e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.6203e-02, -2.0784e-02, -1.7733e-02],\n",
      "           [-1.1999e-02, -2.7022e-04, -4.4991e-04],\n",
      "           [ 1.7706e-03,  9.4830e-03,  9.9197e-03]],\n",
      "\n",
      "          [[-2.8833e-02, -2.1722e-02, -2.5576e-02],\n",
      "           [-1.2875e-02, -5.4768e-03, -1.1366e-02],\n",
      "           [ 1.0915e-03,  6.5753e-03,  4.9746e-03]],\n",
      "\n",
      "          [[-3.3468e-02, -3.3117e-02, -3.0572e-02],\n",
      "           [-1.4019e-02, -1.5352e-02, -2.1978e-02],\n",
      "           [-2.8944e-03, -4.0353e-03, -4.1970e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.1789e-02, -4.0861e-02, -1.9077e-02],\n",
      "           [-4.2012e-02, -1.6173e-02, -8.6406e-03],\n",
      "           [-1.4734e-02, -6.9508e-04,  1.0346e-02]],\n",
      "\n",
      "          [[-3.3460e-02, -1.4173e-02, -1.1671e-02],\n",
      "           [-8.7091e-03,  1.6651e-02,  2.1864e-02],\n",
      "           [ 1.2260e-02,  3.1968e-02,  4.8633e-02]],\n",
      "\n",
      "          [[ 7.9365e-03,  1.2018e-02,  2.5318e-02],\n",
      "           [ 2.8402e-02,  4.2021e-02,  3.7011e-02],\n",
      "           [ 3.6271e-02,  4.5083e-02,  5.1590e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 82.00 %\n",
      "Val loss: 0.526765\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[11,    60] loss: 0.55397\n",
      "[11,   120] loss: 0.55571\n",
      "Time elapsed: 0h:22m:8s\n",
      "train accuracy_score: 71.88 %\n",
      "tensor([[[[[-2.0102e-02, -3.1127e-02, -2.7042e-02],\n",
      "           [-1.1710e-02, -1.3953e-02, -2.1197e-02],\n",
      "           [-3.8521e-02, -4.0745e-03, -1.3400e-02]],\n",
      "\n",
      "          [[-3.8715e-03,  4.4080e-03, -4.1721e-03],\n",
      "           [-5.9447e-03,  3.7317e-03, -3.4111e-03],\n",
      "           [-3.4505e-02, -5.6556e-03,  7.2885e-03]],\n",
      "\n",
      "          [[ 3.1764e-03,  5.7504e-03, -8.7102e-04],\n",
      "           [-5.9943e-03,  2.1816e-06,  1.0611e-03],\n",
      "           [-2.7397e-02, -1.0157e-02,  5.1086e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 8.8962e-03,  4.7313e-03,  3.1387e-03],\n",
      "           [ 5.4145e-03,  1.8732e-03,  2.9944e-03],\n",
      "           [ 6.8539e-03,  1.6999e-03,  9.8368e-04]],\n",
      "\n",
      "          [[ 2.6538e-03,  2.8342e-03, -5.1917e-04],\n",
      "           [ 4.7203e-03, -8.8787e-04, -2.0561e-03],\n",
      "           [ 5.2888e-03,  4.0366e-04, -3.2593e-05]],\n",
      "\n",
      "          [[-1.5723e-03, -1.1682e-03,  2.1164e-05],\n",
      "           [ 2.4466e-03, -2.3170e-03,  6.9886e-04],\n",
      "           [ 2.9730e-03, -4.2859e-04, -8.5260e-05]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-5.2566e-02, -2.0547e-01, -5.0695e-01],\n",
      "           [ 2.3929e-01,  4.0691e-02, -2.8283e-01],\n",
      "           [ 4.4046e-01,  2.8553e-01, -1.9308e-02]],\n",
      "\n",
      "          [[ 9.6635e-02, -2.3424e-01, -2.3241e-01],\n",
      "           [ 2.6565e-01,  1.2782e-01, -6.7226e-02],\n",
      "           [ 4.4433e-01,  3.5111e-01,  1.3545e-01]],\n",
      "\n",
      "          [[-9.9670e-02, -1.6841e-01, -1.5861e-01],\n",
      "           [ 1.8299e-01,  8.7905e-02,  6.1588e-02],\n",
      "           [ 3.2768e-01,  2.8323e-01,  1.5297e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 8.5626e-02,  1.6655e-01,  1.8680e-01],\n",
      "           [ 1.0332e-01,  1.0128e-01,  1.1786e-01],\n",
      "           [ 1.2868e-01,  4.0277e-02,  7.1994e-03]],\n",
      "\n",
      "          [[ 4.8880e-02,  1.2244e-01,  1.3184e-01],\n",
      "           [ 2.5713e-02,  4.4049e-02,  4.1648e-02],\n",
      "           [ 2.3450e-02, -2.6358e-02, -6.9008e-02]],\n",
      "\n",
      "          [[ 7.3991e-02,  9.3134e-02,  7.9256e-02],\n",
      "           [ 2.4047e-02, -1.4797e-02, -2.0832e-02],\n",
      "           [ 6.7032e-03, -5.6644e-02, -1.2948e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.1143e-02, -1.1324e-02, -2.2667e-02],\n",
      "           [ 2.5422e-02, -8.4523e-03, -1.5747e-02],\n",
      "           [ 3.1303e-02, -4.3053e-02, -3.8040e-02]],\n",
      "\n",
      "          [[-4.2537e-02, -2.8064e-02, -1.9742e-02],\n",
      "           [-1.2661e-02, -4.6979e-02, -5.6415e-02],\n",
      "           [-7.3106e-03, -7.8286e-02, -8.5008e-02]],\n",
      "\n",
      "          [[-8.4791e-02, -1.0924e-01, -1.5179e-01],\n",
      "           [-3.6145e-02, -6.4255e-02, -1.2781e-01],\n",
      "           [-1.4067e-02, -5.4750e-02, -8.8030e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.9574e-01, -3.3457e-01, -5.4594e-01],\n",
      "           [-1.6962e-01, -2.8734e-01, -5.7595e-01],\n",
      "           [-7.0664e-02, -2.0989e-01, -4.8147e-01]],\n",
      "\n",
      "          [[-2.3643e-01, -3.5068e-01, -5.5486e-01],\n",
      "           [-1.1234e-01, -2.2591e-01, -4.8166e-01],\n",
      "           [ 2.9076e-02, -2.2113e-01, -4.8781e-01]],\n",
      "\n",
      "          [[-3.1031e-01, -1.6721e-01, -3.2938e-01],\n",
      "           [-7.0580e-02, -1.2306e-01, -3.6303e-01],\n",
      "           [ 6.5312e-02, -1.1347e-01, -3.4952e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-3.0362e-02, -7.9327e-03, -1.2488e-02],\n",
      "           [-5.5099e-03,  1.3430e-02, -9.2769e-03],\n",
      "           [ 3.9757e-02,  2.7125e-02, -1.7521e-02]],\n",
      "\n",
      "          [[-2.1699e-02, -1.0296e-02, -1.4569e-02],\n",
      "           [ 1.5893e-02,  1.3447e-02, -1.9925e-02],\n",
      "           [ 3.6009e-02,  1.5822e-02, -2.5337e-02]],\n",
      "\n",
      "          [[-2.3597e-02, -1.2178e-02, -1.1676e-02],\n",
      "           [ 3.1116e-02,  1.1637e-02, -2.1305e-02],\n",
      "           [ 3.6503e-02,  2.4462e-02, -1.2976e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.9420e-01, -1.1265e-01, -6.2191e-02],\n",
      "           [-1.1148e-01, -1.0596e-02, -1.1581e-02],\n",
      "           [-1.1586e-02,  3.6877e-02,  1.9451e-02]],\n",
      "\n",
      "          [[-1.4292e-01, -7.4587e-02, -9.3438e-03],\n",
      "           [ 3.1059e-03,  4.9568e-02,  4.0465e-02],\n",
      "           [ 1.1417e-01,  1.6041e-01,  1.1554e-01]],\n",
      "\n",
      "          [[-9.8879e-02,  6.3131e-03,  5.1365e-02],\n",
      "           [ 4.8605e-02,  1.1757e-01,  1.3410e-01],\n",
      "           [ 2.2983e-01,  2.3055e-01,  1.6364e-01]]]]], device='cuda:5')\n",
      "val accuracy_score: 50.00 %\n",
      "Val loss: 0.792585\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[12,    60] loss: 0.57776\n",
      "[12,   120] loss: 0.52578\n",
      "Time elapsed: 0h:24m:1s\n",
      "train accuracy_score: 71.02 %\n",
      "tensor([[[[[ 6.6102e-03,  1.6117e-02,  8.5778e-03],\n",
      "           [ 2.6800e-02,  2.6391e-02,  3.4738e-02],\n",
      "           [ 8.8031e-02,  3.7606e-02,  5.2210e-02]],\n",
      "\n",
      "          [[ 1.4852e-02, -2.3735e-03, -3.6609e-04],\n",
      "           [ 2.9608e-02,  9.8912e-03,  1.1231e-02],\n",
      "           [ 4.7787e-02,  2.2050e-02,  2.3713e-02]],\n",
      "\n",
      "          [[-4.4611e-04,  1.1803e-03, -5.8640e-04],\n",
      "           [ 2.1407e-02,  1.0696e-03, -1.9092e-03],\n",
      "           [ 7.3955e-02,  1.0961e-02, -7.9223e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.4647e-03, -4.1938e-03,  6.4250e-04],\n",
      "           [-3.0273e-03, -3.3874e-04,  2.9833e-03],\n",
      "           [-2.0828e-03,  1.5066e-03,  3.8177e-03]],\n",
      "\n",
      "          [[-1.5445e-03, -1.7769e-03,  2.7012e-03],\n",
      "           [ 6.2212e-05,  1.5917e-03,  2.7107e-03],\n",
      "           [-4.3282e-04,  5.8317e-04,  3.2325e-03]],\n",
      "\n",
      "          [[ 3.1044e-03,  4.1887e-04,  1.6005e-03],\n",
      "           [ 3.0848e-03,  3.4380e-03,  5.5176e-04],\n",
      "           [ 2.2066e-03,  2.8594e-03,  1.3841e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.8781e-01,  4.6643e-01,  5.7051e-01],\n",
      "           [ 3.3479e-03,  1.6318e-01,  3.4246e-01],\n",
      "           [-2.5313e-01, -2.0583e-01,  3.8048e-02]],\n",
      "\n",
      "          [[ 3.3946e-01,  3.7224e-01,  3.3782e-01],\n",
      "           [-4.0421e-02,  3.0333e-02,  1.5977e-01],\n",
      "           [-2.7708e-01, -2.3016e-01, -2.5643e-02]],\n",
      "\n",
      "          [[ 2.9583e-01,  3.2099e-01,  2.9130e-01],\n",
      "           [ 3.8781e-02,  1.0068e-02,  1.1965e-01],\n",
      "           [-2.3431e-01, -1.3144e-01, -4.3216e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-8.6368e-02, -1.9505e-01, -2.2133e-01],\n",
      "           [-5.6675e-02, -1.2923e-01, -1.0930e-01],\n",
      "           [-3.6224e-02, -3.8094e-02,  7.5704e-02]],\n",
      "\n",
      "          [[-6.5493e-02, -1.7957e-01, -2.2014e-01],\n",
      "           [-3.2920e-02, -6.8484e-02, -6.1554e-02],\n",
      "           [-8.5492e-04,  2.1504e-02,  9.1583e-02]],\n",
      "\n",
      "          [[-6.5273e-02, -1.5180e-01, -1.7250e-01],\n",
      "           [-2.6480e-02, -3.9877e-02, -6.5132e-02],\n",
      "           [-1.1933e-02,  3.6915e-02,  1.1313e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.8394e-02, -1.2541e-03,  2.6082e-03],\n",
      "           [ 1.4880e-01,  1.3477e-02, -3.2828e-03],\n",
      "           [ 1.0072e-01,  8.8034e-02,  1.6566e-02]],\n",
      "\n",
      "          [[ 1.0230e-01,  1.4349e-02, -2.4286e-02],\n",
      "           [ 1.5112e-01,  8.6688e-02,  4.2822e-02],\n",
      "           [ 8.3265e-02,  1.1876e-01,  9.4451e-02]],\n",
      "\n",
      "          [[ 6.2617e-02,  8.2883e-02,  7.3735e-02],\n",
      "           [ 1.1853e-01,  1.0287e-01,  1.1707e-01],\n",
      "           [ 1.0571e-01,  1.2004e-01,  9.6639e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 4.5262e-01,  4.9984e-01,  4.7741e-01],\n",
      "           [ 2.3236e-01,  3.0056e-01,  3.1701e-01],\n",
      "           [-8.0918e-02,  1.5192e-03,  1.6625e-01]],\n",
      "\n",
      "          [[ 3.5206e-01,  3.2581e-01,  3.3201e-01],\n",
      "           [-1.9660e-02,  2.2651e-01,  2.1179e-01],\n",
      "           [-1.7523e-01,  1.0053e-01,  1.3325e-01]],\n",
      "\n",
      "          [[ 2.0677e-01,  9.4328e-02,  3.1785e-02],\n",
      "           [-2.2359e-02,  4.1593e-02,  5.1331e-02],\n",
      "           [-4.1938e-01,  4.3719e-02,  4.2788e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 8.4842e-02,  7.0518e-02,  8.7544e-02],\n",
      "           [ 2.6951e-02,  4.2025e-03,  6.8218e-02],\n",
      "           [-2.8738e-02, -1.0374e-02,  6.2489e-02]],\n",
      "\n",
      "          [[ 7.1792e-02,  4.6137e-02,  7.5462e-02],\n",
      "           [ 2.0981e-03,  4.4945e-03,  6.3018e-02],\n",
      "           [-3.2892e-02, -3.0088e-03,  4.5307e-02]],\n",
      "\n",
      "          [[ 2.8727e-02,  3.6318e-02,  4.2639e-02],\n",
      "           [-1.5613e-02,  1.2855e-04,  4.0622e-02],\n",
      "           [-4.9180e-02, -1.2347e-02,  2.8374e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.7283e-01,  4.4036e-02, -3.5749e-02],\n",
      "           [ 6.0855e-02, -1.7467e-02, -8.8909e-04],\n",
      "           [-1.9997e-02, -5.2736e-02,  1.9943e-02]],\n",
      "\n",
      "          [[ 1.2761e-01,  4.0096e-02,  8.9877e-05],\n",
      "           [ 2.0918e-02, -5.6545e-02, -2.6444e-02],\n",
      "           [-6.8433e-02, -6.6600e-02,  1.7548e-02]],\n",
      "\n",
      "          [[ 7.1889e-02,  5.6956e-03, -3.6534e-02],\n",
      "           [ 3.0162e-03, -2.8144e-02, -2.8976e-02],\n",
      "           [-9.1556e-02, -7.5330e-02,  7.6890e-03]]]]], device='cuda:5')\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "val accuracy_score: 46.00 %\n",
      "Val loss: 0.731752\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[13,    60] loss: 0.59713\n",
      "[13,   120] loss: 0.49862\n",
      "Time elapsed: 0h:25m:51s\n",
      "train accuracy_score: 74.03 %\n",
      "tensor([[[[[ 3.9524e-03, -1.1814e-03, -6.6409e-03],\n",
      "           [-2.0280e-03, -9.9965e-03, -1.3072e-02],\n",
      "           [-3.1198e-02, -1.7588e-02, -2.1124e-02]],\n",
      "\n",
      "          [[ 2.1956e-03,  4.9903e-03, -1.3160e-03],\n",
      "           [-6.7924e-03, -3.8680e-03, -3.3000e-03],\n",
      "           [-2.4515e-02, -7.5290e-03, -4.3900e-03]],\n",
      "\n",
      "          [[-4.3711e-03, -2.3282e-03,  1.1947e-03],\n",
      "           [-4.1594e-03,  5.1957e-04,  1.5001e-03],\n",
      "           [-2.5921e-02, -2.4753e-03,  2.9956e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 5.3177e-03,  2.7530e-03,  1.0965e-03],\n",
      "           [ 1.3159e-03, -7.0661e-04,  1.7182e-03],\n",
      "           [ 5.5312e-04,  6.3897e-05,  7.0922e-04]],\n",
      "\n",
      "          [[ 4.8790e-03,  3.3424e-03,  3.2084e-04],\n",
      "           [ 1.8929e-03,  2.9079e-04,  1.5296e-04],\n",
      "           [ 1.2802e-03,  4.3311e-04,  3.0715e-04]],\n",
      "\n",
      "          [[ 1.4867e-03,  3.0985e-03,  8.5570e-04],\n",
      "           [ 2.1430e-03,  1.3777e-03,  1.9448e-05],\n",
      "           [ 2.2473e-03,  1.3113e-03,  1.6865e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.1206e-01, -1.3790e-01, -1.3163e-01],\n",
      "           [ 7.4941e-03,  6.7068e-03, -4.6869e-02],\n",
      "           [ 1.4879e-01,  1.7972e-01,  9.2008e-02]],\n",
      "\n",
      "          [[-9.5831e-02, -2.0663e-01, -1.0978e-01],\n",
      "           [ 2.0384e-02,  2.6361e-02, -3.2889e-02],\n",
      "           [ 1.7333e-01,  1.2463e-01,  1.0931e-01]],\n",
      "\n",
      "          [[-1.7956e-01, -2.0479e-01, -1.2323e-01],\n",
      "           [ 1.0184e-02, -8.8918e-03, -9.1282e-03],\n",
      "           [ 1.2318e-01,  1.3390e-01,  1.0483e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.5099e-02,  7.6541e-02,  1.2274e-01],\n",
      "           [ 1.6391e-02,  4.2343e-02,  9.6068e-02],\n",
      "           [ 1.2719e-02,  2.8281e-02,  2.3559e-02]],\n",
      "\n",
      "          [[ 2.9189e-02,  6.1256e-02,  9.3854e-02],\n",
      "           [ 1.8492e-03,  2.3052e-02,  6.0270e-02],\n",
      "           [-1.1619e-02,  7.3297e-03,  2.5050e-02]],\n",
      "\n",
      "          [[ 2.6682e-02,  6.0285e-02,  6.8486e-02],\n",
      "           [ 1.7770e-04,  1.8264e-02,  1.6403e-02],\n",
      "           [-1.3367e-02, -2.1419e-02, -1.0060e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.3044e-02,  3.3280e-03,  9.6184e-03],\n",
      "           [ 8.6513e-03, -8.3620e-03,  7.6622e-03],\n",
      "           [ 9.7748e-03, -5.6313e-02, -1.2292e-02]],\n",
      "\n",
      "          [[ 4.9681e-03, -3.2402e-03,  7.8269e-03],\n",
      "           [-1.1411e-03, -1.4358e-02, -1.7936e-02],\n",
      "           [-3.3444e-02, -5.2238e-02, -4.5798e-02]],\n",
      "\n",
      "          [[ 1.2914e-02, -1.1613e-02, -1.2500e-02],\n",
      "           [-2.2303e-02, -9.2246e-03, -3.1612e-02],\n",
      "           [-3.1706e-02, -3.7203e-02, -3.5826e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.2246e-01, -6.9549e-02,  8.0387e-02],\n",
      "           [-1.1023e-01,  2.2288e-02,  9.7478e-02],\n",
      "           [ 3.4059e-02,  5.8301e-02,  7.9659e-02]],\n",
      "\n",
      "          [[-1.1255e-01,  4.6467e-02,  1.0138e-01],\n",
      "           [-1.3659e-02, -1.0402e-03,  9.1203e-02],\n",
      "           [ 5.0261e-02, -2.9902e-02,  1.0235e-01]],\n",
      "\n",
      "          [[-1.5679e-01,  5.6648e-02,  1.1152e-01],\n",
      "           [ 4.7582e-02,  3.1533e-02,  1.5075e-01],\n",
      "           [ 5.6261e-02,  2.2220e-03,  1.3231e-01]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-4.4780e-02, -3.6219e-02, -3.4122e-02],\n",
      "           [-2.3186e-02, -1.3574e-02, -1.7657e-02],\n",
      "           [ 7.6138e-03, -2.2071e-04, -7.5491e-03]],\n",
      "\n",
      "          [[-4.2957e-02, -2.7063e-02, -3.4804e-02],\n",
      "           [-6.3822e-03, -1.1006e-02, -2.8008e-02],\n",
      "           [ 1.0629e-02,  8.9562e-04, -1.2347e-03]],\n",
      "\n",
      "          [[-3.7869e-02, -3.5700e-02, -3.7213e-02],\n",
      "           [-7.6619e-03, -1.1479e-02, -1.7579e-02],\n",
      "           [ 1.7107e-02,  5.0621e-03,  2.6114e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-3.3200e-02, -2.0990e-02, -8.6724e-03],\n",
      "           [ 9.9224e-03,  1.7767e-02,  2.6387e-02],\n",
      "           [ 4.3258e-02,  2.9657e-02,  2.5215e-02]],\n",
      "\n",
      "          [[-2.0164e-03, -1.5703e-02,  5.8766e-04],\n",
      "           [ 3.1200e-02,  1.4468e-02,  1.5106e-02],\n",
      "           [ 5.6255e-02,  5.2327e-02,  5.6911e-02]],\n",
      "\n",
      "          [[ 8.3297e-03, -1.9373e-02, -3.9826e-03],\n",
      "           [ 4.7981e-02,  2.5845e-02,  1.7229e-02],\n",
      "           [ 8.5092e-02,  5.9457e-02,  5.4428e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 82.00 %\n",
      "Val loss: 0.474213\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[14,    60] loss: 0.56561\n",
      "[14,   120] loss: 0.56568\n",
      "Time elapsed: 0h:27m:43s\n",
      "train accuracy_score: 75.61 %\n",
      "tensor([[[[[-2.6677e-03, -1.9123e-03, -3.2809e-03],\n",
      "           [-1.1519e-03, -2.8198e-03, -4.4151e-03],\n",
      "           [-8.4176e-03, -4.4273e-03, -4.7847e-03]],\n",
      "\n",
      "          [[ 5.8635e-04,  1.0962e-04, -6.3407e-04],\n",
      "           [-1.0031e-03, -2.0675e-04, -6.8393e-04],\n",
      "           [-5.8464e-03, -2.6807e-03, -3.5811e-03]],\n",
      "\n",
      "          [[-5.9088e-04,  1.7654e-04,  1.6767e-03],\n",
      "           [-2.2260e-03, -5.5834e-04,  2.2401e-05],\n",
      "           [-1.0280e-02, -2.8230e-03, -1.6545e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 8.8955e-04,  4.3480e-04,  6.8314e-04],\n",
      "           [ 7.8470e-04,  4.2940e-04,  1.0815e-03],\n",
      "           [-8.5186e-05,  1.5760e-04,  2.1825e-04]],\n",
      "\n",
      "          [[ 4.2747e-04,  6.4043e-04,  1.2311e-04],\n",
      "           [ 8.8043e-05, -1.7439e-04, -4.7096e-05],\n",
      "           [-2.9993e-05, -2.5078e-04,  8.2564e-05]],\n",
      "\n",
      "          [[-3.5320e-05,  1.9894e-04,  5.0769e-05],\n",
      "           [-5.7745e-05, -2.5918e-04,  9.7204e-05],\n",
      "           [ 4.2759e-05, -2.3298e-04, -2.9986e-06]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-8.6082e-02, -8.6794e-02, -1.2559e-01],\n",
      "           [-3.5045e-02, -6.3657e-02, -1.1409e-01],\n",
      "           [ 1.4620e-03, -3.9664e-02, -6.8720e-02]],\n",
      "\n",
      "          [[-5.1161e-02, -8.3196e-02, -8.0180e-02],\n",
      "           [-1.6827e-02, -3.2296e-02, -5.4988e-02],\n",
      "           [ 2.8545e-02,  1.7831e-02, -1.5294e-02]],\n",
      "\n",
      "          [[-5.7546e-02, -6.5470e-02, -4.1968e-02],\n",
      "           [-6.2876e-03, -1.0467e-02, -1.6133e-02],\n",
      "           [ 2.8686e-02,  2.5530e-02,  7.9341e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 8.1986e-03,  1.9734e-02,  2.6568e-02],\n",
      "           [ 6.2208e-03,  9.1738e-03,  1.5080e-02],\n",
      "           [ 8.1271e-03,  4.0345e-03, -6.0674e-03]],\n",
      "\n",
      "          [[ 1.2900e-02,  2.1757e-02,  2.6666e-02],\n",
      "           [ 5.3347e-03,  1.2477e-02,  4.6895e-03],\n",
      "           [ 3.3505e-03, -2.5936e-03, -1.3891e-02]],\n",
      "\n",
      "          [[ 1.3013e-02,  2.4870e-02,  2.0056e-02],\n",
      "           [ 6.0659e-03,  7.6570e-03,  7.5969e-04],\n",
      "           [ 6.9322e-04, -4.6689e-03, -1.6530e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.2250e-04,  8.6975e-04, -4.1275e-03],\n",
      "           [-7.1651e-03, -4.8289e-03,  1.5785e-03],\n",
      "           [-3.8871e-03, -1.1813e-02,  1.2672e-03]],\n",
      "\n",
      "          [[-9.0882e-03, -1.4733e-03,  1.8281e-04],\n",
      "           [-5.9035e-03, -9.6309e-03, -3.7108e-03],\n",
      "           [-3.5028e-03, -1.1304e-02, -6.6108e-03]],\n",
      "\n",
      "          [[-5.4371e-03, -1.8357e-02, -5.3884e-03],\n",
      "           [-1.3758e-02, -9.9234e-03, -7.0080e-03],\n",
      "           [-5.6772e-03, -1.0172e-02, -1.2193e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.3731e-02, -2.7298e-03,  3.4178e-03],\n",
      "           [-9.0402e-03, -1.6537e-02, -1.2881e-02],\n",
      "           [ 1.0096e-02,  1.8539e-03, -6.5074e-03]],\n",
      "\n",
      "          [[-1.4090e-02, -9.1970e-03,  1.6211e-02],\n",
      "           [ 9.5708e-03, -1.1998e-02, -1.3780e-02],\n",
      "           [ 1.8015e-02, -2.0247e-02, -1.3778e-02]],\n",
      "\n",
      "          [[-1.8088e-02,  1.9077e-02,  4.3103e-02],\n",
      "           [ 9.7016e-03,  5.6921e-03,  2.5643e-02],\n",
      "           [ 4.3283e-02,  2.0336e-03,  1.1383e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.0782e-02, -1.4846e-02, -1.2036e-02],\n",
      "           [-9.7770e-03, -2.9267e-03, -3.2811e-03],\n",
      "           [ 1.3934e-03,  1.2717e-03,  9.6661e-05]],\n",
      "\n",
      "          [[-1.8676e-02, -1.3540e-02, -9.2647e-03],\n",
      "           [-5.7781e-03, -2.9168e-03, -2.4563e-03],\n",
      "           [ 3.9984e-03,  4.6607e-03,  5.8984e-03]],\n",
      "\n",
      "          [[-1.1480e-02, -9.2248e-03, -8.1338e-03],\n",
      "           [-1.1367e-03, -5.5716e-04, -2.0560e-03],\n",
      "           [ 9.5196e-03,  7.6466e-03,  5.5164e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-3.0803e-02, -1.1919e-02, -7.2512e-03],\n",
      "           [-1.0021e-02,  7.0402e-04, -3.9924e-04],\n",
      "           [ 1.6416e-02,  1.5175e-02,  1.8400e-02]],\n",
      "\n",
      "          [[-2.2842e-02, -4.6010e-03,  4.4886e-04],\n",
      "           [ 4.0287e-03,  1.5370e-02,  9.4408e-03],\n",
      "           [ 3.3128e-02,  2.4354e-02,  2.2464e-02]],\n",
      "\n",
      "          [[-2.6103e-02, -8.3269e-03,  2.0237e-03],\n",
      "           [-6.7874e-04,  1.1918e-02,  1.9059e-02],\n",
      "           [ 3.8680e-02,  3.0007e-02,  2.4765e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 80.00 %\n",
      "Val loss: 0.430308\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[15,    60] loss: 0.49564\n",
      "[15,   120] loss: 0.49114\n",
      "Time elapsed: 0h:29m:33s\n",
      "train accuracy_score: 76.61 %\n",
      "tensor([[[[[-4.4310e-03, -5.4018e-03, -2.0447e-03],\n",
      "           [ 1.0691e-03, -6.3921e-03, -1.2628e-02],\n",
      "           [-2.2706e-02, -1.6648e-02, -1.1367e-02]],\n",
      "\n",
      "          [[-1.8217e-03,  1.8668e-03,  2.4184e-03],\n",
      "           [-2.0148e-03, -5.7040e-03, -2.8411e-03],\n",
      "           [-2.3495e-02, -1.2155e-02, -1.1211e-02]],\n",
      "\n",
      "          [[-3.4477e-03,  3.9530e-03,  5.7132e-03],\n",
      "           [-5.2641e-03, -1.7469e-03,  3.3454e-03],\n",
      "           [-2.9896e-02, -8.7367e-03, -1.1623e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.8551e-03,  2.1471e-03,  1.4077e-03],\n",
      "           [ 2.1390e-03,  5.1975e-04,  1.5250e-03],\n",
      "           [ 5.7212e-04,  4.5943e-04,  3.7278e-07]],\n",
      "\n",
      "          [[ 3.8663e-03,  3.2953e-03,  5.6848e-04],\n",
      "           [ 2.5604e-03,  4.5185e-04, -2.8656e-04],\n",
      "           [ 1.3321e-03,  1.9120e-04,  2.9830e-04]],\n",
      "\n",
      "          [[ 4.1393e-03,  2.1255e-03,  4.4084e-04],\n",
      "           [ 3.1083e-03,  6.1848e-04,  3.9677e-04],\n",
      "           [ 3.8085e-03,  5.5615e-04,  3.3125e-04]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.9673e-01, -1.5697e-01, -1.9584e-01],\n",
      "           [-9.8281e-02, -1.2485e-01, -1.3961e-01],\n",
      "           [-5.8287e-02, -6.4935e-02, -3.5061e-02]],\n",
      "\n",
      "          [[-1.4052e-01, -2.0895e-01, -1.3994e-01],\n",
      "           [-5.2813e-02, -2.0738e-02, -5.6852e-02],\n",
      "           [ 1.1070e-02,  1.6831e-02,  4.7468e-02]],\n",
      "\n",
      "          [[-1.6194e-01, -1.6882e-01, -7.0502e-02],\n",
      "           [-9.7862e-03, -1.5316e-02, -2.4442e-02],\n",
      "           [ 7.1654e-02,  1.2006e-01,  5.8239e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 4.6192e-02,  8.7873e-02,  1.0718e-01],\n",
      "           [ 5.3192e-02,  3.4350e-02,  4.6395e-02],\n",
      "           [ 3.6660e-02,  4.0534e-03, -3.6974e-02]],\n",
      "\n",
      "          [[ 5.7649e-02,  7.0036e-02,  7.6810e-02],\n",
      "           [ 3.0564e-02,  6.9608e-03,  3.5901e-02],\n",
      "           [ 2.0377e-02, -7.6313e-03, -3.7520e-02]],\n",
      "\n",
      "          [[ 5.2241e-02,  7.6620e-02,  7.7455e-02],\n",
      "           [ 1.4658e-02,  1.5788e-03,  9.8660e-03],\n",
      "           [ 7.2396e-03, -2.0327e-02, -5.6383e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.9945e-04,  2.8130e-03,  1.8226e-04],\n",
      "           [-1.3309e-02, -7.3574e-03, -2.0651e-03],\n",
      "           [ 5.9940e-03, -2.7374e-02, -2.5272e-03]],\n",
      "\n",
      "          [[-1.1683e-02, -3.4666e-03, -3.8193e-03],\n",
      "           [-3.2720e-02, -2.5974e-02, -1.0161e-02],\n",
      "           [-3.7670e-03, -2.3204e-02, -1.1715e-02]],\n",
      "\n",
      "          [[-2.1271e-02,  2.0224e-03, -1.2556e-02],\n",
      "           [-1.3175e-02, -6.0140e-03, -1.7776e-02],\n",
      "           [-1.0781e-02, -1.1789e-02, -2.8599e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-1.7212e-01, -1.1655e-01, -5.4032e-02],\n",
      "           [-1.8962e-01, -1.0968e-01, -6.4676e-02],\n",
      "           [-1.0415e-01, -1.1914e-01, -8.6793e-02]],\n",
      "\n",
      "          [[-1.3611e-01, -4.0508e-02, -3.4548e-02],\n",
      "           [-5.6709e-02, -8.4234e-02, -5.4278e-02],\n",
      "           [ 1.5953e-02, -8.3013e-02, -4.3533e-02]],\n",
      "\n",
      "          [[-1.0320e-01, -1.5214e-04,  6.8421e-02],\n",
      "           [-1.2945e-02, -6.5757e-03, -6.1069e-04],\n",
      "           [ 6.5941e-02, -6.0883e-03, -2.9475e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-3.6097e-02, -2.1279e-02, -2.5315e-02],\n",
      "           [-1.9718e-02,  8.4306e-04, -1.3736e-02],\n",
      "           [ 3.6324e-03,  3.9898e-04, -1.3073e-02]],\n",
      "\n",
      "          [[-2.7824e-02, -1.9520e-02, -2.1397e-02],\n",
      "           [ 4.2102e-03,  1.0934e-03, -1.1103e-02],\n",
      "           [ 1.9743e-02,  1.3874e-02, -3.4727e-03]],\n",
      "\n",
      "          [[-1.9513e-02, -2.1649e-02, -2.4796e-02],\n",
      "           [ 1.3804e-02, -3.6165e-03, -1.3007e-02],\n",
      "           [ 3.2790e-02,  1.9289e-02,  4.3666e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-6.5262e-02, -3.1065e-02,  1.4307e-02],\n",
      "           [-1.4288e-04,  2.0568e-02,  2.0392e-02],\n",
      "           [ 4.9778e-02,  2.8977e-02,  1.0382e-02]],\n",
      "\n",
      "          [[-3.0668e-02, -1.8555e-02,  1.2650e-03],\n",
      "           [ 2.9889e-02,  3.3176e-02,  3.2189e-02],\n",
      "           [ 6.5128e-02,  6.6034e-02,  6.4121e-02]],\n",
      "\n",
      "          [[-2.2392e-02, -9.8070e-03,  5.5336e-03],\n",
      "           [ 1.8697e-02,  2.7200e-02,  3.8042e-02],\n",
      "           [ 8.0379e-02,  3.2224e-02,  4.4771e-02]]]]], device='cuda:5')\n",
      "val accuracy_score: 77.00 %\n",
      "Val loss: 0.483063\n",
      "/analysis/ritter/projects/Methods/LRP/models_pytorch/rieke_copy1\n",
      "[16,    60] loss: 0.46117\n",
      "[16,   120] loss: 0.45714\n",
      "Time elapsed: 0h:31m:23s\n",
      "train accuracy_score: 79.34 %\n",
      "tensor([[[[[ 2.0803e-03,  1.9638e-05, -6.2774e-04],\n",
      "           [ 4.2979e-03,  8.6259e-03,  1.0037e-02],\n",
      "           [ 3.3204e-02,  2.2081e-02,  3.1293e-02]],\n",
      "\n",
      "          [[-3.0371e-03, -5.8374e-03, -8.2603e-03],\n",
      "           [ 2.4022e-03,  6.6689e-03, -3.0603e-04],\n",
      "           [ 1.1943e-02,  1.0445e-02,  1.8714e-02]],\n",
      "\n",
      "          [[-5.7956e-03, -1.2662e-03, -9.7169e-03],\n",
      "           [ 1.0887e-03,  7.0281e-03,  1.3466e-03],\n",
      "           [ 2.4426e-02,  8.9337e-03,  1.0920e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-2.8137e-03, -1.3619e-03, -1.2981e-03],\n",
      "           [-9.0332e-04,  2.9876e-04, -1.1719e-03],\n",
      "           [-1.5099e-03,  2.4184e-04,  3.9136e-04]],\n",
      "\n",
      "          [[-1.0541e-03, -1.6546e-03, -1.0526e-05],\n",
      "           [-6.0179e-04,  6.0731e-04,  8.2271e-05],\n",
      "           [ 3.9065e-04,  8.9735e-04,  1.1661e-03]],\n",
      "\n",
      "          [[-5.0220e-04, -6.4062e-04, -1.7581e-04],\n",
      "           [-5.2277e-04,  5.5975e-04,  2.7156e-04],\n",
      "           [ 3.4245e-05,  1.5338e-03,  1.2386e-03]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 2.2023e-01,  2.3569e-01,  2.9565e-01],\n",
      "           [ 5.2307e-02,  1.0042e-01,  1.8784e-01],\n",
      "           [-1.0866e-01, -6.6740e-02,  1.0499e-01]],\n",
      "\n",
      "          [[ 1.5916e-01,  2.1408e-01,  1.7051e-01],\n",
      "           [ 1.3911e-02,  2.2013e-02,  1.0877e-01],\n",
      "           [-1.5423e-01, -9.1361e-02,  1.6366e-02]],\n",
      "\n",
      "          [[ 1.4870e-01,  1.5918e-01,  7.9894e-02],\n",
      "           [ 1.9903e-02,  2.1240e-02,  5.1758e-02],\n",
      "           [-8.4523e-02, -7.7156e-02, -1.1133e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-4.1929e-02, -7.6852e-02, -9.8913e-02],\n",
      "           [-2.2512e-02, -3.4311e-02, -7.7754e-02],\n",
      "           [-6.9693e-03, -1.5959e-02, -2.0846e-02]],\n",
      "\n",
      "          [[-6.8048e-03, -4.9596e-02, -7.0659e-02],\n",
      "           [-2.6354e-04, -3.6577e-02, -4.1879e-02],\n",
      "           [ 4.7076e-03, -1.1247e-02, -3.1479e-03]],\n",
      "\n",
      "          [[ 1.9194e-03, -4.4407e-02, -5.1563e-02],\n",
      "           [ 5.0963e-03, -1.7398e-02, -2.0241e-02],\n",
      "           [ 8.5578e-04, -6.5821e-04,  1.5761e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[-3.8285e-03,  7.3138e-03,  1.9003e-02],\n",
      "           [-8.2498e-03,  1.0539e-04, -9.1331e-03],\n",
      "           [-2.2616e-03,  1.8559e-02,  4.7243e-03]],\n",
      "\n",
      "          [[ 2.9744e-02,  1.9122e-02,  1.1036e-02],\n",
      "           [ 5.3389e-03,  3.1808e-02,  3.6427e-02],\n",
      "           [-6.3272e-03,  2.4510e-02,  4.1839e-02]],\n",
      "\n",
      "          [[ 4.0223e-02,  4.5735e-02,  4.0793e-02],\n",
      "           [ 4.6124e-02,  3.7634e-02,  4.0928e-02],\n",
      "           [ 2.6244e-02,  4.9426e-02,  5.3808e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.5861e-01,  4.0204e-02,  2.2120e-02],\n",
      "           [ 4.9073e-02,  1.8662e-02, -4.8757e-02],\n",
      "           [-1.0583e-01, -7.9054e-02, -7.2227e-02]],\n",
      "\n",
      "          [[ 1.2461e-01,  9.5125e-02, -1.1910e-02],\n",
      "           [-5.6678e-02,  2.7943e-02,  1.9883e-02],\n",
      "           [-1.2428e-01, -3.9684e-02, -6.1683e-02]],\n",
      "\n",
      "          [[ 1.2245e-01, -1.5445e-02, -6.0682e-02],\n",
      "           [-9.2076e-02, -2.5982e-02, -5.6405e-02],\n",
      "           [-8.7310e-02, -5.7445e-02, -4.3587e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 3.2318e-02,  2.2495e-02,  1.6239e-02],\n",
      "           [ 1.9358e-02,  8.0761e-03,  3.5039e-03],\n",
      "           [-1.1475e-03, -3.9789e-03,  5.1089e-05]],\n",
      "\n",
      "          [[ 3.0358e-02,  1.5669e-02,  1.2647e-02],\n",
      "           [ 6.5719e-03,  2.0617e-03,  9.8711e-03],\n",
      "           [-1.2817e-02, -1.1580e-02, -1.1758e-02]],\n",
      "\n",
      "          [[ 1.1974e-02,  1.3576e-02,  7.5307e-03],\n",
      "           [-8.2584e-03,  8.3541e-05,  5.3043e-03],\n",
      "           [-2.5961e-02, -1.7213e-02, -1.0198e-02]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[ 1.9719e-02,  1.8038e-02, -4.1539e-03],\n",
      "           [-2.3288e-02, -7.6536e-03,  1.7498e-02],\n",
      "           [-5.0444e-02, -1.2070e-02,  2.4294e-02]],\n",
      "\n",
      "          [[ 5.2099e-04,  9.2864e-03,  9.7343e-03],\n",
      "           [-5.5156e-02, -3.9632e-02, -4.9386e-03],\n",
      "           [-1.0151e-01, -6.6941e-02, -2.5392e-02]],\n",
      "\n",
      "          [[-1.8975e-02,  1.
Download .txt
gitextract_z6hk80dj/

├── .gitignore
├── ADNI Training.ipynb
├── Beta Correlation.ipynb
├── Compare intersection of top 10 regions.ipynb
├── Data Split ADNI.ipynb
├── Evaluate GB and LRP.ipynb
├── MNIST example.ipynb
├── Plotting brain maps.ipynb
├── Plotting result graphs.ipynb
├── README.md
├── docker/
│   ├── Dockerfile
│   └── docker-compose.yml
├── innvestigator.py
├── inverter_util.py
├── jrieke/
│   ├── datasets.py
│   ├── interpretation.py
│   ├── models.py
│   └── utils.py
├── license.txt
├── mnist_test.py
├── mymodel
├── nitorch/
│   ├── callbacks.py
│   ├── data.py
│   ├── inference.py
│   ├── initialization.py
│   ├── license.txt
│   ├── loss.py
│   ├── metrics.py
│   ├── models.py
│   ├── trainer.py
│   ├── transforms.py
│   └── utils.py
├── nmm_mask_areas.py
├── requirements.txt
├── settings.py
└── utils.py
Download .txt
SYMBOL INDEX (209 symbols across 18 files)

FILE: innvestigator.py
  class InnvestigateModel (line 8) | class InnvestigateModel(torch.nn.Module):
    method __init__ (line 17) | def __init__(self, the_model, lrp_exponent=1, beta=.5, epsilon=1e-6,
    method cuda (line 69) | def cuda(self, device=None):
    method cpu (line 74) | def cpu(self):
    method register_hooks (line 79) | def register_hooks(self, parent_module):
    method relu_hook_function (line 103) | def relu_hook_function(module, grad_in, grad_out):
    method __call__ (line 109) | def __call__(self, in_tensor):
    method evaluate (line 123) | def evaluate(self, in_tensor):
    method get_r_values_per_layer (line 140) | def get_r_values_per_layer(self):
    method innvestigate (line 146) | def innvestigate(self, in_tensor=None, rel_for_class=None):
    method forward (line 224) | def forward(self, in_tensor):
    method extra_repr (line 227) | def extra_repr(self):

FILE: inverter_util.py
  function module_tracker (line 7) | def module_tracker(fwd_hook_func):
  class RelevancePropagator (line 25) | class RelevancePropagator:
    method __init__ (line 47) | def __init__(self, lrp_exponent, beta, method, epsilon, device):
    method reset_module_list (line 61) | def reset_module_list(self):
    method compute_propagated_relevance (line 75) | def compute_propagated_relevance(self, layer, relevance):
    method get_layer_fwd_hook (line 124) | def get_layer_fwd_hook(self, layer):
    method get_conv_method (line 159) | def get_conv_method(conv_module):
    method get_inv_conv_method (line 183) | def get_inv_conv_method(conv_module):
    method silent_pass (line 207) | def silent_pass(self, m, in_tensor: torch.Tensor,
    method get_inv_max_pool_method (line 214) | def get_inv_max_pool_method(max_pool_instance):
    method linear_inverse (line 237) | def linear_inverse(self, m, relevance_in):
    method linear_fwd_hook (line 342) | def linear_fwd_hook(self, m, in_tensor: torch.Tensor,
    method max_pool_nd_inverse (line 349) | def max_pool_nd_inverse(self, layer_instance, relevance_in):
    method max_pool_nd_fwd_hook (line 364) | def max_pool_nd_fwd_hook(self, m, in_tensor: torch.Tensor,
    method conv_nd_inverse (line 378) | def conv_nd_inverse(self, m, relevance_in):
    method conv_nd_fwd_hook (line 511) | def conv_nd_fwd_hook(self, m, in_tensor: torch.Tensor,

FILE: jrieke/datasets.py
  function load_data_table (line 30) | def load_data_table(table, image_dir, corrupt_images=None):
  function load_data_table_3T (line 65) | def load_data_table_3T():
  function load_data_table_15T (line 70) | def load_data_table_15T():
  function load_data_table_both (line 75) | def load_data_table_both():
  function get_image_filepath (line 83) | def get_image_filepath(df_row, root_dir=''):
  class ADNIDataset (line 96) | class ADNIDataset(Dataset):
    method __init__ (line 107) | def __init__(self, filenames, labels, mask=None, transform=None):
    method __len__ (line 121) | def __len__(self):
    method __getitem__ (line 124) | def __getitem__(self, idx):
    method image_shape (line 140) | def image_shape(self):
    method fit_normalization (line 144) | def fit_normalization(self, num_sample=None, show_progress=False):
    method get_raw_image (line 171) | def get_raw_image(self, idx):
  function print_df_stats (line 176) | def print_df_stats(df, df_train, df_val):
  function build_datasets (line 196) | def build_datasets(df, patients_train, patients_val, print_stats=True, n...
  function build_loaders (line 239) | def build_loaders(train_dataset, val_dataset):

FILE: jrieke/interpretation.py
  function sensitivity_analysis (line 13) | def sensitivity_analysis(model, image_tensor, target_class=None, postpro...
  function guided_backprop (line 73) | def guided_backprop(model, image_tensor, target_class=None, postprocess=...
  function occlusion (line 134) | def occlusion(model, image_tensor, target_class=None, size=50, stride=25...
  function area_occlusion (line 258) | def area_occlusion(model, image_tensor, area_masks, target_class=None, o...
  function all_children (line 315) | def all_children(model):
  function grad_cam (line 323) | def grad_cam(model, image_tensor, target_class=None, last_conv_layer=Non...
  function average_over_dataset (line 438) | def average_over_dataset(interpretation_method, model, dataset, num_samp...
  function heatmap_distance (line 488) | def heatmap_distance(a, b):

FILE: jrieke/models.py
  class ClassificationModel3D_2Node (line 3) | class ClassificationModel3D_2Node(nn.Module):
    method __init__ (line 6) | def __init__(self, dropout=0.4, dropout2=0.4):
    method forward (line 26) | def forward(self, x):

FILE: jrieke/utils.py
  function save_history (line 12) | def save_history(filename, trainer):
  function load_history (line 18) | def load_history(filename):
  function plot_learning_curve (line 24) | def plot_learning_curve(history):
  function load_nifti (line 58) | def load_nifti(file_path, mask=None, z_factor=None, remove_nan=True):
  function save_nifti (line 73) | def save_nifti(file_path, struct_arr):
  function plot_slices (line 92) | def plot_slices(struct_arr, num_slices=7, cmap='gray', vmin=None, vmax=N...
  function animate_slices (line 138) | def animate_slices(struct_arr, overlay=None, axis=0, reverse_direction=F...
  function resize_image (line 183) | def resize_image(img, size, interpolation=0):

FILE: mnist_test.py
  class Net (line 9) | class Net(nn.Module):
    method __init__ (line 10) | def __init__(self):
    method forward (line 22) | def forward(self, x):
  function train (line 32) | def train(args, model, device, train_loader, optimizer, epoch):
  function test (line 47) | def test(args, model, device, test_loader):

FILE: nitorch/callbacks.py
  class Callback (line 16) | class Callback:
    method __init__ (line 21) | def __init__(self):
    method __call__ (line 24) | def __call__(self):
    method reset (line 27) | def reset(self):
    method final (line 30) | def final(self, **kwargs):
  class ModelCheckpoint (line 33) | class ModelCheckpoint(Callback):
    method __init__ (line 50) | def __init__(
    method __call__ (line 80) | def __call__(self, trainer, epoch, val_metrics):
    method reset (line 112) | def reset(self):
    method final (line 120) | def final(self, **kwargs):
    method save_model (line 137) | def save_model(self, trainer, full_path):
    method has_improved (line 144) | def has_improved(self, res):
  class EarlyStopping (line 157) | class EarlyStopping(Callback):
    method __init__ (line 172) | def __init__(self, patience, retain_metric, mode, ignore_before=0):
    method __call__ (line 181) | def __call__(self, trainer, epoch, val_metrics):
    method has_improved (line 195) | def has_improved(self, res):
    method reset (line 207) | def reset(self):
    method final (line 212) | def final(self, **kwargs):
  function visualize_feature_maps (line 218) | def visualize_feature_maps(features, return_fig=False):
  class CAE_VisualizeTraining (line 263) | class CAE_VisualizeTraining(Callback):
    method __init__ (line 272) | def __init__(self, model, max_train_iters, show_epochs_list=[], plotFe...
    method __call__ (line 296) | def __call__(self, inputs, labels, train_iter, epoch):

FILE: nitorch/data.py
  function load_nifti (line 8) | def load_nifti(file_path, dtype=np.float32, incl_header=False, z_factor=...
  function show_brain (line 56) | def show_brain(img, cut_coords=None,

FILE: nitorch/inference.py
  function predict (line 5) | def predict(
  function bce_with_logits_inference (line 69) | def bce_with_logits_inference(
  function bce_inference (line 88) | def bce_inference(
  function crossentropy_inference (line 105) | def crossentropy_inference(
  function regression_inference (line 118) | def regression_inference(
  function variational_inference (line 151) | def variational_inference(

FILE: nitorch/initialization.py
  function xavier (line 5) | def xavier(x):
  function xavier_uniform (line 8) | def xavier_uniform(x):
  function he (line 11) | def he(x):
  function he_uniform (line 14) | def he_uniform(x):
  function weights_init (line 18) | def weights_init(m, func=he_uniform):

FILE: nitorch/loss.py
  class BCE_KL_loss (line 4) | class BCE_KL_loss(torch.nn.Module):
    method __init__ (line 16) | def __init__(self):
    method forward (line 19) | def forward(self, outputs, target):
  class MSE_KL_loss (line 31) | class MSE_KL_loss(torch.nn.Module):
    method __init__ (line 43) | def __init__(self):
    method forward (line 46) | def forward(self, outputs, target):
  class Multihead_loss (line 58) | class Multihead_loss(torch.nn.Module):
    method __init__ (line 69) | def __init__(self, loss_function, weights=[1]):
    method forward (line 75) | def forward(self, outputs, target):

FILE: nitorch/metrics.py
  function specificity (line 3) | def specificity(y_true, y_pred):
  function sensitivity (line 7) | def sensitivity(y_true, y_pred):
  function balanced_accuracy (line 11) | def balanced_accuracy(y_true, y_pred):
  function auc_score (line 16) | def auc_score(y_true, y_pred):

FILE: nitorch/models.py
  class _CAE_3D (line 12) | class _CAE_3D(nn.Module):
    method __init__ (line 17) | def __init__(self, conv_channels):
    method _format_channels (line 32) | def _format_channels(self, conv_channels, is_nested_conv = False):
    method assign_parameter (line 55) | def assign_parameter(self, parameter, param_name, enable_nested = True):
    method add_conv_with_activation (line 89) | def add_conv_with_activation(self, inp_channels, out_channels, kernel_...
    method add_deconv_with_activation (line 96) | def add_deconv_with_activation(self, inp_channels, out_channels, kerne...
    method add_pool (line 104) | def add_pool(self, pool_type, kernel_size, padding, stride):
    method add_unpool (line 121) | def add_unpool(self, pool_type, kernel_size, padding, stride):
    method nested_reverse (line 137) | def nested_reverse(self, mylist):
  class CAE_3D (line 148) | class CAE_3D(_CAE_3D):
    method __init__ (line 153) | def __init__(self
    method set_debug (line 262) | def set_debug(self, bool_val):
    method set_return_encoder_out (line 265) | def set_return_encoder_out(self, bool_val):
    method forward (line 268) | def forward(self, x):
  class CAE_3D_with_pooling (line 297) | class CAE_3D_with_pooling(_CAE_3D):
    method __init__ (line 301) | def __init__(self
    method set_debug (line 437) | def set_debug(self, bool_val):
    method set_return_encoder_out (line 440) | def set_return_encoder_out(self, bool_val):
    method forward (line 443) | def forward(self, x):
  class MLP (line 492) | class MLP(nn.Module):
    method __init__ (line 496) | def __init__(self
    method set_debug (line 524) | def set_debug(self, bool_val):
    method _format_channels (line 527) | def _format_channels(self, layers):
    method add_linear_with_Relu (line 533) | def add_linear_with_Relu(self, layer):
    method forward (line 539) | def forward(self, x):

FILE: nitorch/trainer.py
  class Trainer (line 12) | class Trainer:
    method __init__ (line 13) | def __init__(
    method train_model (line 72) | def train_model(
    method finish_training (line 310) | def finish_training(self, train_metrics, val_metrics, epoch):
    method visualize_training (line 342) | def visualize_training(self, report, metrics=None, save_fig_path=""):
    method evaluate_model (line 364) | def evaluate_model(
    method report_metrics (line 445) | def report_metrics(
    method estimate_metrics (line 489) | def estimate_metrics(
    method _on_epoch_end (line 513) | def _on_epoch_end(

FILE: nitorch/transforms.py
  function normalize_float (line 8) | def normalize_float(x, min=-1):
  function normalize_float_torch (line 23) | def normalize_float_torch(x, min=-1):
  function normalization_factors (line 40) | def normalization_factors(data, train_idx, shape, mode="slice"):
  class CenterCrop (line 64) | class CenterCrop(object):
    method __init__ (line 71) | def __init__(self, size):
    method __call__ (line 79) | def __call__(self, img):
    method __repr__ (line 110) | def __repr__(self):
  class Normalize (line 114) | class Normalize(object):
    method __init__ (line 121) | def __init__(self, mean, std=1, masked=True, eps=1e-10):
    method __call__ (line 128) | def __call__(self, image):
    method denormalize (line 135) | def denormalize(self, image):
    method apply_transform (line 139) | def apply_transform(self, image):
    method zero_masked_transform (line 142) | def zero_masked_transform(self, image):
  class IntensityRescale (line 151) | class IntensityRescale:
    method __init__ (line 162) | def __init__(self, masked=True, on_gpu=False):
    method __call__ (line 166) | def __call__(self, image):
    method apply_transform (line 174) | def apply_transform(self, image):
    method zero_masked_transform (line 180) | def zero_masked_transform(self, image):
  class ToTensor (line 193) | class ToTensor(object):
    method __call__ (line 201) | def __call__(self, image):
  class Flip (line 207) | class Flip:
    method __init__ (line 216) | def __init__(self, axis=0, prob=0.5):
    method __call__ (line 220) | def __call__(self, image):
  class SagittalFlip (line 229) | class SagittalFlip(Flip):
    method __init__ (line 234) | def __init__(self, prob=0.5):
    method __call__ (line 237) | def __call__(self, image):
  class CoronalFlip (line 241) | class CoronalFlip(Flip):
    method __init__ (line 246) | def __init__(self, prob=0.5):
    method __call__ (line 249) | def __call__(self, image):
  class AxialFlip (line 254) | class AxialFlip(Flip):
    method __init__ (line 259) | def __init__(self, prob=0.5):
    method __call__ (line 262) | def __call__(self, image):
  class Rotate (line 267) | class Rotate:
    method __init__ (line 278) | def __init__(self, axis=0, deg=(-3, 3)):
    method __call__ (line 294) | def __call__(self, image):
  class SagittalRotate (line 305) | class SagittalRotate(Rotate):
    method __init__ (line 310) | def __init__(self, deg=(-3, 3)):
  class CoronalRotate (line 314) | class CoronalRotate(Rotate):
    method __init__ (line 319) | def __init__(self, deg=(-3, 3)):
  class AxialRotate (line 323) | class AxialRotate(Rotate):
    method __init__ (line 328) | def __init__(self, deg=(-3, 3)):
  class Translate (line 332) | class Translate:
    method __init__ (line 343) | def __init__(self, axis=0, dist=(-3, 3)):
    method __call__ (line 354) | def __call__(self, image):
  class SagittalTranslate (line 381) | class SagittalTranslate(Translate):
    method __init__ (line 386) | def __init__(self, dist=(-3, 3)):
  class CoronalTranslate (line 390) | class CoronalTranslate(Translate):
    method __init__ (line 395) | def __init__(self, dist=(-3, 3)):
  class AxialTranslate (line 399) | class AxialTranslate(Translate):
    method __init__ (line 404) | def __init__(self, dist=(-3, 3)):

FILE: nitorch/utils.py
  function dataset_length (line 6) | def dataset_length(data_loader):
  function count_parameters (line 32) | def count_parameters(model):
  function plot_grad_flow (line 36) | def plot_grad_flow(named_parameters):
  function is_bad_grad (line 66) | def is_bad_grad(grad_output):

FILE: utils.py
  function pprint (line 8) | def pprint(*args):
  class Flatten (line 13) | class Flatten(torch.nn.Module):
    method __init__ (line 14) | def __init__(self):
    method forward (line 17) | def forward(self, in_tensor):
  function load_data (line 21) | def load_data():
  function scale_mask (line 44) | def scale_mask(mask, shape):
Condensed preview — 36 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,131K chars).
[
  {
    "path": ".gitignore",
    "chars": 52,
    "preview": "__pychache__/\n__pycache__\n.ipynb_checkpoints/\n.nfs*\n"
  },
  {
    "path": "ADNI Training.ipynb",
    "chars": 1254897,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outp"
  },
  {
    "path": "Beta Correlation.ipynb",
    "chars": 61538,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n "
  },
  {
    "path": "Compare intersection of top 10 regions.ipynb",
    "chars": 48149,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outp"
  },
  {
    "path": "Data Split ADNI.ipynb",
    "chars": 101423,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "Evaluate GB and LRP.ipynb",
    "chars": 399655,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"##### Import packages\"\n   ]\n  },\n  "
  },
  {
    "path": "MNIST example.ipynb",
    "chars": 371371,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Notebook to exemplify usage of"
  },
  {
    "path": "Plotting brain maps.ipynb",
    "chars": 1972400,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "Plotting result graphs.ipynb",
    "chars": 639021,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "README.md",
    "chars": 4899,
    "preview": "# Layer-wise relevance propagation for explaining deep neural network decisions in MRI-based Alzheimer’s disease classif"
  },
  {
    "path": "docker/Dockerfile",
    "chars": 621,
    "preview": "FROM jupyter/scipy-notebook:76402a27fd13\n\nWORKDIR /home/jovyan/work\n\nUSER root\n\n# Style profile\nRUN echo \"export CLICOLO"
  },
  {
    "path": "docker/docker-compose.yml",
    "chars": 419,
    "preview": "version: '3.8'\nservices:\n  lrp:\n    build:\n      context: ..\n      dockerfile: docker/Dockerfile\n    tty: true\n    comma"
  },
  {
    "path": "innvestigator.py",
    "chars": 10300,
    "preview": "import torch\nimport numpy as np\n\nfrom inverter_util import RelevancePropagator\nfrom utils import pprint, Flatten\n\n\nclass"
  },
  {
    "path": "inverter_util.py",
    "chars": 22538,
    "preview": "import torch\nimport numpy as np\nimport torch.nn.functional as F\nfrom utils import pprint, Flatten\n\n\ndef module_tracker(f"
  },
  {
    "path": "jrieke/datasets.py",
    "chars": 9991,
    "preview": "import numpy as np\nimport pandas as pd\nimport os\nfrom jrieke import utils\nfrom tqdm import tqdm_notebook\nimport multipro"
  },
  {
    "path": "jrieke/interpretation.py",
    "chars": 23477,
    "preview": "import numpy as np\n\nfrom jrieke.utils import resize_image\nfrom tqdm import tqdm_notebook\n\nimport torch\nimport torch.nn a"
  },
  {
    "path": "jrieke/models.py",
    "chars": 1651,
    "preview": "from torch import nn\n\nclass ClassificationModel3D_2Node(nn.Module):\n    \"\"\"The model we use in the paper.\"\"\"\n\n    def __"
  },
  {
    "path": "jrieke/utils.py",
    "chars": 7173,
    "preview": "import numpy as np\nimport scipy as sp\nimport matplotlib.pyplot as plt\nimport matplotlib as mpl\nimport matplotlib.animati"
  },
  {
    "path": "license.txt",
    "chars": 1470,
    "preview": "Copyright 2019 Moritz Böhle\n\nRedistribution and use in source and binary forms, with or without \nmodification, are permi"
  },
  {
    "path": "mnist_test.py",
    "chars": 2275,
    "preview": "from __future__ import print_function\n\nimport torch\nimport torch.nn as nn\n\nimport torch.nn.functional as F\n\n\nclass Net(n"
  },
  {
    "path": "nitorch/callbacks.py",
    "chars": 15020,
    "preview": "import os\nimport copy\nfrom copy import deepcopy\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom matplotlib.backe"
  },
  {
    "path": "nitorch/data.py",
    "chars": 5358,
    "preview": "import numpy as np\nimport nibabel as nib\nfrom scipy.ndimage.interpolation import zoom\nimport matplotlib.pyplot as plt\nim"
  },
  {
    "path": "nitorch/inference.py",
    "chars": 4890,
    "preview": "import numpy\nimport torch\nfrom torch import nn\n\ndef predict(\n    outputs,\n    labels,\n    all_preds,\n    all_labels,\n   "
  },
  {
    "path": "nitorch/initialization.py",
    "chars": 583,
    "preview": "# Initialize weights\nfrom torch.nn import init, Conv3d, BatchNorm3d, Linear\n\n\ndef xavier(x):\n    return init.xavier_norm"
  },
  {
    "path": "nitorch/license.txt",
    "chars": 1477,
    "preview": "NiTorch\nCopyright 2019 Fabian Eitel\n\nRedistribution and use in source and binary forms, with or without \nmodification, a"
  },
  {
    "path": "nitorch/loss.py",
    "chars": 3327,
    "preview": "import torch\nimport torch.nn.functional as F\n\nclass BCE_KL_loss(torch.nn.Module):\n    \"\"\" \n    Reconstruction loss for v"
  },
  {
    "path": "nitorch/metrics.py",
    "chars": 489,
    "preview": "from sklearn.metrics import recall_score, roc_curve, auc\n\ndef specificity(y_true, y_pred):\n    return recall_score(y_tru"
  },
  {
    "path": "nitorch/models.py",
    "chars": 23502,
    "preview": "import numpy as np\n# pytorch\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as op"
  },
  {
    "path": "nitorch/trainer.py",
    "chars": 21498,
    "preview": "import time\nimport numpy as np\nimport torch\nfrom torch import nn\nfrom sklearn.metrics import confusion_matrix\nimport ite"
  },
  {
    "path": "nitorch/transforms.py",
    "chars": 11942,
    "preview": "import numpy as np\nimport numbers\nimport torch\nfrom scipy.ndimage.interpolation import rotate\nfrom scipy.ndimage.interpo"
  },
  {
    "path": "nitorch/utils.py",
    "chars": 2612,
    "preview": "import torch\nimport matplotlib.pyplot as plt\nfrom matplotlib.lines import Line2D\nimport numpy as np\n\ndef dataset_length("
  },
  {
    "path": "nmm_mask_areas.py",
    "chars": 4215,
    "preview": "\n\nall_areas= {\n    \"Accumbens\": (23, 30),\n    \"Amygdala\": (31, 32),\n    \"Brain Stem\": (35, 35),\n    \"Caudate\": (36, 37),"
  },
  {
    "path": "requirements.txt",
    "chars": 63,
    "preview": "torch==1.4.0\ntorchvision==0.5.0\nnibabel==3.1.1\ntabulate==0.8.7\n"
  },
  {
    "path": "settings.py",
    "chars": 1999,
    "preview": "\"\"\"\nSettings for re-running the experiments from the paper \"Layer-wise\nrelevance propagation for explaining deep neural "
  },
  {
    "path": "utils.py",
    "chars": 2279,
    "preview": "import torch\nfrom scipy.ndimage import zoom\nfrom sklearn.model_selection import train_test_split\nimport jrieke.datasets "
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the moboehle/Pytorch-LRP GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 36 files (4.8 MB), approximately 1.3M tokens, and a symbol index with 209 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!