diff --git a/Neural graph module/ngm.ipynb b/Neural graph module/ngm.ipynb
index 12c6bc468947ef9267a3752b1ba1d7a7419e8af5..d15eef64dccbbb0906298284dd8f5a09911d523f 100644
--- a/Neural graph module/ngm.ipynb	
+++ b/Neural graph module/ngm.ipynb	
@@ -2,18 +2,9 @@
   "cells": [
     {
       "cell_type": "code",
-      "execution_count": 3,
+      "execution_count": null,
       "metadata": {},
-      "outputs": [
-        {
-          "name": "stderr",
-          "output_type": "stream",
-          "text": [
-            "b:\\Programs\\Miniconda\\envs\\tdde19\\lib\\site-packages\\tqdm\\auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
-            "  from .autonotebook import tqdm as notebook_tqdm\n"
-          ]
-        }
-      ],
+      "outputs": [],
       "source": [
         "import datasets\n",
         "import torch\n",
@@ -29,7 +20,7 @@
     },
     {
       "cell_type": "code",
-      "execution_count": 4,
+      "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": [
@@ -38,17 +29,9 @@
     },
     {
       "cell_type": "code",
-      "execution_count": 5,
+      "execution_count": null,
       "metadata": {},
-      "outputs": [
-        {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "cuda\n"
-          ]
-        }
-      ],
+      "outputs": [],
       "source": [
         "# Use GPU if available\n",
         "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
@@ -58,7 +41,7 @@
     },
     {
       "cell_type": "code",
-      "execution_count": 6,
+      "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": [
@@ -86,45 +69,7 @@
     },
     {
       "cell_type": "code",
-      "execution_count": 7,
-      "metadata": {},
-      "outputs": [],
-      "source": [
-        "# def encode(batch):\n",
-        "#   return tokenizer(batch, padding=\"max_length\", max_length=256, return_tensors=\"pt\")\n",
-        "\n",
-        "\n",
-        "# def convert_to_features(example_batch):\n",
-        "#     input_encodings = encode(example_batch['text'])\n",
-        "#     target_encodings = encode(example_batch['summary'])\n",
-        "\n",
-        "#     labels = target_encodings['input_ids']\n",
-        "#     decoder_input_ids = shift_tokens_right(\n",
-        "#         labels, model.config.pad_token_id, model.config.decoder_start_token_id)\n",
-        "#     labels[labels[:, :] == model.config.pad_token_id] = -100\n",
-        "\n",
-        "#     encodings = {\n",
-        "#         'input_ids': input_encodings['input_ids'],\n",
-        "#         'attention_mask': input_encodings['attention_mask'],\n",
-        "#         'decoder_input_ids': decoder_input_ids,\n",
-        "#         'labels': labels,\n",
-        "#     }\n",
-        "\n",
-        "#     return encodings\n",
-        "\n",
-        "\n",
-        "# def get_dataset(path):\n",
-        "#   df = pd.read_csv(path, sep=\",\", on_bad_lines='skip')\n",
-        "#   dataset = datasets.Dataset.from_pandas(df)\n",
-        "#   dataset = dataset.map(convert_to_features, batched=True)\n",
-        "#   columns = ['input_ids', 'labels', 'decoder_input_ids', 'attention_mask', ]\n",
-        "#   dataset.set_format(type='torch', columns=columns)\n",
-        "#   return dataset\n"
-      ]
-    },
-    {
-      "cell_type": "code",
-      "execution_count": 8,
+      "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": [
@@ -194,24 +139,7 @@
     },
     {
       "cell_type": "code",
-      "execution_count": 9,
-      "metadata": {},
-      "outputs": [],
-      "source": [
-        "# training_args = Seq2SeqTrainingArguments(\n",
-        "#     output_dir='./models/blackbox',\n",
-        "#     num_train_epochs=1,\n",
-        "#     per_device_train_batch_size=1,\n",
-        "#     per_device_eval_batch_size=1,\n",
-        "#     warmup_steps=10,\n",
-        "#     weight_decay=0.01,\n",
-        "#     logging_dir='./logs',\n",
-        "# )\n"
-      ]
-    },
-    {
-      "cell_type": "code",
-      "execution_count": 10,
+      "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": [
@@ -223,71 +151,19 @@
         "        self.attention_mask = attention_mask\n",
         "        self.correct_rels = correct_rels\n",
         "        self.relations = relations\n",
-        "        \n",
         "\n",
         "    def __len__(self):\n",
         "        return len(self.inputs)\n",
         "\n",
         "    def __getitem__(self, idx):\n",
-        "        return self.inputs[idx], self.attention_mask[idx], self.relations.index(self.correct_rels[idx])\n",
-        "\n",
-        "\n",
-        "\n",
-        "#From scratch json creates data set.\n",
-        "# class MyDataset(Dataset):\n",
-        "#     def __init__(self, json_file, transform=None):\n",
-        "#         self.qald_data = json.load(json_file)\n",
-        "\n",
-        "#     def __len__(self):\n",
-        "#         return len(self.qald_data)\n",
-        "\n",
-        "#     def __getitem__(self, idx):\n",
-        "#         self.inputs[idx], self.attention_mask[idx], self.labels[idx]"
+        "        return self.inputs[idx], self.attention_mask[idx], self.relations.index(self.correct_rels[idx])"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 45,
+      "execution_count": null,
       "metadata": {},
-      "outputs": [
-        {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "Beginning making batch\n"
-          ]
-        },
-        {
-          "name": "stderr",
-          "output_type": "stream",
-          "text": [
-            "100%|██████████| 408/408 [00:00<00:00, 792.24it/s]"
-          ]
-        },
-        {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "Finished with batches\n"
-          ]
-        },
-        {
-          "name": "stderr",
-          "output_type": "stream",
-          "text": [
-            "\n"
-          ]
-        },
-        {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "features: tensor([[  101,  2040,  2003,  1996,  3664,  1997, 15632,  1029,   102,  1031,\n",
-            "          4942,  1033,   102,     0,     0,     0,     0,     0,     0,     0,\n",
-            "             0,     0,     0]]) mask: tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) label_index tensor(128)\n"
-          ]
-        }
-      ],
+      "outputs": [],
       "source": [
         "#Prepare data\n",
         "\n",
@@ -310,29 +186,17 @@
       "metadata": {},
       "outputs": [],
       "source": [
+        "# Initialize model\n",
         "model = NgmOne(device)"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 2,
+      "execution_count": null,
       "metadata": {},
-      "outputs": [
-        {
-          "ename": "NameError",
-          "evalue": "name 'nn' is not defined",
-          "output_type": "error",
-          "traceback": [
-            "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
-            "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-            "\u001b[1;32mc:\\Users\\Albin\\Documents\\TDDE19\\codebase\\Neural graph module\\ngm.ipynb Cell 11\u001b[0m in \u001b[0;36m<cell line: 3>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X13sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m \u001b[39m# Train with data loader.\u001b[39;00m\n\u001b[1;32m----> <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X13sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m criterion \u001b[39m=\u001b[39m nn\u001b[39m.\u001b[39mCrossEntropyLoss()\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X13sZmlsZQ%3D%3D?line=3'>4</a>\u001b[0m optimizer \u001b[39m=\u001b[39m optim\u001b[39m.\u001b[39mAdam(model\u001b[39m.\u001b[39mparameters(), lr\u001b[39m=\u001b[39m\u001b[39m0.0001\u001b[39m)\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X13sZmlsZQ%3D%3D?line=5'>6</a>\u001b[0m epoch \u001b[39m=\u001b[39m \u001b[39m500\u001b[39m\n",
-            "\u001b[1;31mNameError\u001b[0m: name 'nn' is not defined"
-          ]
-        }
-      ],
+      "outputs": [],
       "source": [
         "# Train with data loader.\n",
-        "\n",
         "criterion = nn.CrossEntropyLoss()\n",
         "optimizer = optim.Adam(model.parameters(), lr=0.0001)\n",
         "\n",
@@ -346,7 +210,7 @@
         "        train = sample_batched[0]\n",
         "        train_mask = sample_batched[1]\n",
         "        label_index = sample_batched[2].to(device)\n",
-        "\n",
+        "        \n",
         "        # Forward pass\n",
         "        output = model(train, train_mask)\n",
         "        loss = criterion(output, label_index)\n",
@@ -355,526 +219,15 @@
         "        loss.backward()\n",
         "        optimizer.step()\n",
         "        epoch_loss = epoch_loss + loss.item()\n",
-        "        # if i_batch % batch_size == 0:\n",
-        "        #     print(\"Epoch\", e, \"batch:\",i_batch, ', loss =', '{:.6f}'.format(loss))\n",
-        "    print(e+1, epoch_loss / len(sample_batched))"
-      ]
-    },
-    {
-      "cell_type": "code",
-      "execution_count": 34,
-      "metadata": {},
-      "outputs": [
-        {
-          "name": "stderr",
-          "output_type": "stream",
-          "text": [
-            "Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertModel: ['cls.seq_relationship.weight', 'cls.predictions.bias', 'cls.predictions.transform.dense.weight', 'cls.predictions.decoder.weight', 'cls.predictions.transform.dense.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.bias']\n",
-            "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
-            "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"
-          ]
-        },
-        {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "Beginning making batch\n"
-          ]
-        },
-        {
-          "name": "stderr",
-          "output_type": "stream",
-          "text": [
-            "100%|██████████| 408/408 [00:00<00:00, 774.16it/s]\n"
-          ]
-        },
-        {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "Finished with batches\n",
-            "Epoch: 0001 loss = 5.093835\n",
-            "Epoch: 0002 loss = 5.084588\n",
-            "Epoch: 0003 loss = 5.071274\n",
-            "Epoch: 0004 loss = 5.054411\n",
-            "Epoch: 0005 loss = 5.032239\n",
-            "Epoch: 0006 loss = 5.012146\n",
-            "Epoch: 0007 loss = 5.005000\n",
-            "Epoch: 0008 loss = 4.997761\n",
-            "Epoch: 0009 loss = 4.986701\n",
-            "Epoch: 0010 loss = 4.971669\n",
-            "Epoch: 0011 loss = 4.955543\n",
-            "Epoch: 0012 loss = 4.943308\n",
-            "Epoch: 0013 loss = 4.935583\n",
-            "Epoch: 0014 loss = 4.925481\n",
-            "Epoch: 0015 loss = 4.916763\n",
-            "Epoch: 0016 loss = 4.909473\n",
-            "Epoch: 0017 loss = 4.902980\n",
-            "Epoch: 0018 loss = 4.897297\n",
-            "Epoch: 0019 loss = 4.891988\n",
-            "Epoch: 0020 loss = 4.886408\n",
-            "Epoch: 0021 loss = 4.881417\n",
-            "Epoch: 0022 loss = 4.877658\n",
-            "Epoch: 0023 loss = 4.875204\n",
-            "Epoch: 0024 loss = 4.873054\n",
-            "Epoch: 0025 loss = 4.870307\n",
-            "Epoch: 0026 loss = 4.867515\n",
-            "Epoch: 0027 loss = 4.865225\n",
-            "Epoch: 0028 loss = 4.863073\n",
-            "Epoch: 0029 loss = 4.861112\n",
-            "Epoch: 0030 loss = 4.859608\n",
-            "Epoch: 0031 loss = 4.858322\n",
-            "Epoch: 0032 loss = 4.856856\n",
-            "Epoch: 0033 loss = 4.854882\n",
-            "Epoch: 0034 loss = 4.851583\n",
-            "Epoch: 0035 loss = 4.846420\n",
-            "Epoch: 0036 loss = 4.841257\n",
-            "Epoch: 0037 loss = 4.839985\n",
-            "Epoch: 0038 loss = 4.838554\n",
-            "Epoch: 0039 loss = 4.833128\n",
-            "Epoch: 0040 loss = 4.830694\n",
-            "Epoch: 0041 loss = 4.830802\n",
-            "Epoch: 0042 loss = 4.829382\n",
-            "Epoch: 0043 loss = 4.828467\n",
-            "Epoch: 0044 loss = 4.828149\n",
-            "Epoch: 0045 loss = 4.827055\n",
-            "Epoch: 0046 loss = 4.824977\n",
-            "Epoch: 0047 loss = 4.822845\n",
-            "Epoch: 0048 loss = 4.821745\n",
-            "Epoch: 0049 loss = 4.821719\n",
-            "Epoch: 0050 loss = 4.821740\n",
-            "Epoch: 0051 loss = 4.820979\n",
-            "Epoch: 0052 loss = 4.819626\n",
-            "Epoch: 0053 loss = 4.818414\n",
-            "Epoch: 0054 loss = 4.817791\n",
-            "Epoch: 0055 loss = 4.817641\n",
-            "Epoch: 0056 loss = 4.817585\n",
-            "Epoch: 0057 loss = 4.817320\n",
-            "Epoch: 0058 loss = 4.816803\n",
-            "Epoch: 0059 loss = 4.816196\n",
-            "Epoch: 0060 loss = 4.815702\n",
-            "Epoch: 0061 loss = 4.815412\n",
-            "Epoch: 0062 loss = 4.815280\n",
-            "Epoch: 0063 loss = 4.815196\n",
-            "Epoch: 0064 loss = 4.815063\n",
-            "Epoch: 0065 loss = 4.814850\n",
-            "Epoch: 0066 loss = 4.814575\n",
-            "Epoch: 0067 loss = 4.814219\n",
-            "Epoch: 0068 loss = 4.813494\n",
-            "Epoch: 0069 loss = 4.812033\n",
-            "Epoch: 0070 loss = 4.810763\n",
-            "Epoch: 0071 loss = 4.810414\n",
-            "Epoch: 0072 loss = 4.810355\n",
-            "Epoch: 0073 loss = 4.810412\n",
-            "Epoch: 0074 loss = 4.810295\n",
-            "Epoch: 0075 loss = 4.809524\n",
-            "Epoch: 0076 loss = 4.808568\n",
-            "Epoch: 0077 loss = 4.807861\n",
-            "Epoch: 0078 loss = 4.807343\n",
-            "Epoch: 0079 loss = 4.806979\n",
-            "Epoch: 0080 loss = 4.806736\n",
-            "Epoch: 0081 loss = 4.806551\n",
-            "Epoch: 0082 loss = 4.806396\n",
-            "Epoch: 0083 loss = 4.806274\n",
-            "Epoch: 0084 loss = 4.806180\n",
-            "Epoch: 0085 loss = 4.806106\n",
-            "Epoch: 0086 loss = 4.806038\n",
-            "Epoch: 0087 loss = 4.805974\n",
-            "Epoch: 0088 loss = 4.805913\n",
-            "Epoch: 0089 loss = 4.805856\n",
-            "Epoch: 0090 loss = 4.805807\n",
-            "Epoch: 0091 loss = 4.805765\n",
-            "Epoch: 0092 loss = 4.805728\n",
-            "Epoch: 0093 loss = 4.805696\n",
-            "Epoch: 0094 loss = 4.805665\n",
-            "Epoch: 0095 loss = 4.805635\n",
-            "Epoch: 0096 loss = 4.805604\n",
-            "Epoch: 0097 loss = 4.805574\n",
-            "Epoch: 0098 loss = 4.805547\n",
-            "Epoch: 0099 loss = 4.805521\n",
-            "Epoch: 0100 loss = 4.805498\n",
-            "Epoch: 0101 loss = 4.805474\n",
-            "Epoch: 0102 loss = 4.805451\n",
-            "Epoch: 0103 loss = 4.805429\n",
-            "Epoch: 0104 loss = 4.805408\n",
-            "Epoch: 0105 loss = 4.805386\n",
-            "Epoch: 0106 loss = 4.805366\n",
-            "Epoch: 0107 loss = 4.805346\n",
-            "Epoch: 0108 loss = 4.805329\n",
-            "Epoch: 0109 loss = 4.805310\n",
-            "Epoch: 0110 loss = 4.805292\n",
-            "Epoch: 0111 loss = 4.805275\n",
-            "Epoch: 0112 loss = 4.805256\n",
-            "Epoch: 0113 loss = 4.805240\n",
-            "Epoch: 0114 loss = 4.805222\n",
-            "Epoch: 0115 loss = 4.805207\n",
-            "Epoch: 0116 loss = 4.805192\n",
-            "Epoch: 0117 loss = 4.805176\n",
-            "Epoch: 0118 loss = 4.805163\n",
-            "Epoch: 0119 loss = 4.805148\n",
-            "Epoch: 0120 loss = 4.805134\n",
-            "Epoch: 0121 loss = 4.805120\n",
-            "Epoch: 0122 loss = 4.805106\n",
-            "Epoch: 0123 loss = 4.805093\n",
-            "Epoch: 0124 loss = 4.805080\n",
-            "Epoch: 0125 loss = 4.805068\n",
-            "Epoch: 0126 loss = 4.805055\n",
-            "Epoch: 0127 loss = 4.805042\n",
-            "Epoch: 0128 loss = 4.805030\n",
-            "Epoch: 0129 loss = 4.805019\n",
-            "Epoch: 0130 loss = 4.805007\n",
-            "Epoch: 0131 loss = 4.804996\n",
-            "Epoch: 0132 loss = 4.804984\n",
-            "Epoch: 0133 loss = 4.804973\n",
-            "Epoch: 0134 loss = 4.804961\n",
-            "Epoch: 0135 loss = 4.804952\n",
-            "Epoch: 0136 loss = 4.804941\n",
-            "Epoch: 0137 loss = 4.804930\n",
-            "Epoch: 0138 loss = 4.804919\n",
-            "Epoch: 0139 loss = 4.804910\n",
-            "Epoch: 0140 loss = 4.804900\n",
-            "Epoch: 0141 loss = 4.804890\n",
-            "Epoch: 0142 loss = 4.804880\n",
-            "Epoch: 0143 loss = 4.804871\n",
-            "Epoch: 0144 loss = 4.804861\n",
-            "Epoch: 0145 loss = 4.804852\n",
-            "Epoch: 0146 loss = 4.804842\n",
-            "Epoch: 0147 loss = 4.804834\n",
-            "Epoch: 0148 loss = 4.804825\n",
-            "Epoch: 0149 loss = 4.804816\n",
-            "Epoch: 0150 loss = 4.804807\n",
-            "Epoch: 0151 loss = 4.804799\n",
-            "Epoch: 0152 loss = 4.804790\n",
-            "Epoch: 0153 loss = 4.804782\n",
-            "Epoch: 0154 loss = 4.804773\n",
-            "Epoch: 0155 loss = 4.804766\n",
-            "Epoch: 0156 loss = 4.804757\n",
-            "Epoch: 0157 loss = 4.804749\n",
-            "Epoch: 0158 loss = 4.804741\n",
-            "Epoch: 0159 loss = 4.804733\n",
-            "Epoch: 0160 loss = 4.804725\n",
-            "Epoch: 0161 loss = 4.804718\n",
-            "Epoch: 0162 loss = 4.804710\n",
-            "Epoch: 0163 loss = 4.804703\n",
-            "Epoch: 0164 loss = 4.804695\n",
-            "Epoch: 0165 loss = 4.804688\n",
-            "Epoch: 0166 loss = 4.804681\n",
-            "Epoch: 0167 loss = 4.804673\n",
-            "Epoch: 0168 loss = 4.804665\n",
-            "Epoch: 0169 loss = 4.804657\n",
-            "Epoch: 0170 loss = 4.804648\n",
-            "Epoch: 0171 loss = 4.804638\n",
-            "Epoch: 0172 loss = 4.804619\n",
-            "Epoch: 0173 loss = 4.804549\n",
-            "Epoch: 0174 loss = 4.803915\n",
-            "Epoch: 0175 loss = 4.800674\n",
-            "Epoch: 0176 loss = 4.797853\n",
-            "Epoch: 0177 loss = 4.798222\n",
-            "Epoch: 0178 loss = 4.800125\n",
-            "Epoch: 0179 loss = 4.798518\n",
-            "Epoch: 0180 loss = 4.797715\n",
-            "Epoch: 0181 loss = 4.797562\n",
-            "Epoch: 0182 loss = 4.797585\n",
-            "Epoch: 0183 loss = 4.797699\n",
-            "Epoch: 0184 loss = 4.797858\n",
-            "Epoch: 0185 loss = 4.797929\n",
-            "Epoch: 0186 loss = 4.797824\n",
-            "Epoch: 0187 loss = 4.797550\n",
-            "Epoch: 0188 loss = 4.796398\n",
-            "Epoch: 0189 loss = 4.792130\n",
-            "Epoch: 0190 loss = 4.789983\n",
-            "Epoch: 0191 loss = 4.788803\n",
-            "Epoch: 0192 loss = 4.793661\n",
-            "Epoch: 0193 loss = 4.788590\n",
-            "Epoch: 0194 loss = 4.788193\n",
-            "Epoch: 0195 loss = 4.788942\n",
-            "Epoch: 0196 loss = 4.789340\n",
-            "Epoch: 0197 loss = 4.789372\n",
-            "Epoch: 0198 loss = 4.789063\n",
-            "Epoch: 0199 loss = 4.788374\n",
-            "Epoch: 0200 loss = 4.787567\n",
-            "Epoch: 0201 loss = 4.787129\n",
-            "Epoch: 0202 loss = 4.787015\n",
-            "Epoch: 0203 loss = 4.787010\n",
-            "Epoch: 0204 loss = 4.787023\n",
-            "Epoch: 0205 loss = 4.787029\n",
-            "Epoch: 0206 loss = 4.787025\n",
-            "Epoch: 0207 loss = 4.787012\n",
-            "Epoch: 0208 loss = 4.786981\n",
-            "Epoch: 0209 loss = 4.786938\n",
-            "Epoch: 0210 loss = 4.786892\n",
-            "Epoch: 0211 loss = 4.786852\n",
-            "Epoch: 0212 loss = 4.786819\n",
-            "Epoch: 0213 loss = 4.786791\n",
-            "Epoch: 0214 loss = 4.786764\n",
-            "Epoch: 0215 loss = 4.786734\n",
-            "Epoch: 0216 loss = 4.786704\n",
-            "Epoch: 0217 loss = 4.786675\n",
-            "Epoch: 0218 loss = 4.786652\n",
-            "Epoch: 0219 loss = 4.786634\n",
-            "Epoch: 0220 loss = 4.786625\n",
-            "Epoch: 0221 loss = 4.786621\n",
-            "Epoch: 0222 loss = 4.786622\n",
-            "Epoch: 0223 loss = 4.786623\n",
-            "Epoch: 0224 loss = 4.786623\n",
-            "Epoch: 0225 loss = 4.786622\n",
-            "Epoch: 0226 loss = 4.786618\n",
-            "Epoch: 0227 loss = 4.786611\n",
-            "Epoch: 0228 loss = 4.786601\n",
-            "Epoch: 0229 loss = 4.786594\n",
-            "Epoch: 0230 loss = 4.786586\n",
-            "Epoch: 0231 loss = 4.786580\n",
-            "Epoch: 0232 loss = 4.786575\n",
-            "Epoch: 0233 loss = 4.786572\n",
-            "Epoch: 0234 loss = 4.786569\n",
-            "Epoch: 0235 loss = 4.786566\n",
-            "Epoch: 0236 loss = 4.786561\n",
-            "Epoch: 0237 loss = 4.786557\n",
-            "Epoch: 0238 loss = 4.786552\n",
-            "Epoch: 0239 loss = 4.786547\n",
-            "Epoch: 0240 loss = 4.786541\n",
-            "Epoch: 0241 loss = 4.786537\n",
-            "Epoch: 0242 loss = 4.786531\n",
-            "Epoch: 0243 loss = 4.786526\n",
-            "Epoch: 0244 loss = 4.786522\n",
-            "Epoch: 0245 loss = 4.786518\n",
-            "Epoch: 0246 loss = 4.786515\n",
-            "Epoch: 0247 loss = 4.786512\n",
-            "Epoch: 0248 loss = 4.786508\n",
-            "Epoch: 0249 loss = 4.786504\n",
-            "Epoch: 0250 loss = 4.786500\n",
-            "Epoch: 0251 loss = 4.786497\n",
-            "Epoch: 0252 loss = 4.786492\n",
-            "Epoch: 0253 loss = 4.786488\n",
-            "Epoch: 0254 loss = 4.786485\n",
-            "Epoch: 0255 loss = 4.786481\n",
-            "Epoch: 0256 loss = 4.786478\n",
-            "Epoch: 0257 loss = 4.786475\n",
-            "Epoch: 0258 loss = 4.786472\n",
-            "Epoch: 0259 loss = 4.786469\n",
-            "Epoch: 0260 loss = 4.786465\n",
-            "Epoch: 0261 loss = 4.786463\n",
-            "Epoch: 0262 loss = 4.786459\n",
-            "Epoch: 0263 loss = 4.786456\n",
-            "Epoch: 0264 loss = 4.786452\n",
-            "Epoch: 0265 loss = 4.786449\n",
-            "Epoch: 0266 loss = 4.786446\n",
-            "Epoch: 0267 loss = 4.786443\n",
-            "Epoch: 0268 loss = 4.786441\n",
-            "Epoch: 0269 loss = 4.786438\n",
-            "Epoch: 0270 loss = 4.786434\n",
-            "Epoch: 0271 loss = 4.786431\n",
-            "Epoch: 0272 loss = 4.786428\n",
-            "Epoch: 0273 loss = 4.786425\n",
-            "Epoch: 0274 loss = 4.786422\n",
-            "Epoch: 0275 loss = 4.786419\n",
-            "Epoch: 0276 loss = 4.786417\n",
-            "Epoch: 0277 loss = 4.786414\n",
-            "Epoch: 0278 loss = 4.786411\n",
-            "Epoch: 0279 loss = 4.786408\n",
-            "Epoch: 0280 loss = 4.786404\n",
-            "Epoch: 0281 loss = 4.786402\n",
-            "Epoch: 0282 loss = 4.786399\n",
-            "Epoch: 0283 loss = 4.786396\n",
-            "Epoch: 0284 loss = 4.786394\n",
-            "Epoch: 0285 loss = 4.786390\n",
-            "Epoch: 0286 loss = 4.786388\n",
-            "Epoch: 0287 loss = 4.786385\n",
-            "Epoch: 0288 loss = 4.786382\n",
-            "Epoch: 0289 loss = 4.786379\n",
-            "Epoch: 0290 loss = 4.786377\n",
-            "Epoch: 0291 loss = 4.786375\n",
-            "Epoch: 0292 loss = 4.786372\n",
-            "Epoch: 0293 loss = 4.786369\n",
-            "Epoch: 0294 loss = 4.786366\n",
-            "Epoch: 0295 loss = 4.786364\n",
-            "Epoch: 0296 loss = 4.786361\n",
-            "Epoch: 0297 loss = 4.786359\n",
-            "Epoch: 0298 loss = 4.786356\n",
-            "Epoch: 0299 loss = 4.786353\n",
-            "Epoch: 0300 loss = 4.786350\n",
-            "Epoch: 0301 loss = 4.786348\n",
-            "Epoch: 0302 loss = 4.786345\n",
-            "Epoch: 0303 loss = 4.786343\n",
-            "Epoch: 0304 loss = 4.786341\n",
-            "Epoch: 0305 loss = 4.786338\n",
-            "Epoch: 0306 loss = 4.786335\n",
-            "Epoch: 0307 loss = 4.786334\n",
-            "Epoch: 0308 loss = 4.786330\n",
-            "Epoch: 0309 loss = 4.786327\n",
-            "Epoch: 0310 loss = 4.786325\n",
-            "Epoch: 0311 loss = 4.786323\n",
-            "Epoch: 0312 loss = 4.786321\n",
-            "Epoch: 0313 loss = 4.786318\n",
-            "Epoch: 0314 loss = 4.786316\n",
-            "Epoch: 0315 loss = 4.786313\n",
-            "Epoch: 0316 loss = 4.786311\n",
-            "Epoch: 0317 loss = 4.786307\n",
-            "Epoch: 0318 loss = 4.786306\n",
-            "Epoch: 0319 loss = 4.786304\n",
-            "Epoch: 0320 loss = 4.786301\n",
-            "Epoch: 0321 loss = 4.786299\n",
-            "Epoch: 0322 loss = 4.786296\n",
-            "Epoch: 0323 loss = 4.786294\n",
-            "Epoch: 0324 loss = 4.786293\n",
-            "Epoch: 0325 loss = 4.786289\n",
-            "Epoch: 0326 loss = 4.786287\n",
-            "Epoch: 0327 loss = 4.786284\n",
-            "Epoch: 0328 loss = 4.786283\n",
-            "Epoch: 0329 loss = 4.786281\n",
-            "Epoch: 0330 loss = 4.786278\n",
-            "Epoch: 0331 loss = 4.786276\n",
-            "Epoch: 0332 loss = 4.786273\n",
-            "Epoch: 0333 loss = 4.786272\n",
-            "Epoch: 0334 loss = 4.786268\n",
-            "Epoch: 0335 loss = 4.786267\n",
-            "Epoch: 0336 loss = 4.786265\n",
-            "Epoch: 0337 loss = 4.786263\n",
-            "Epoch: 0338 loss = 4.786261\n",
-            "Epoch: 0339 loss = 4.786258\n",
-            "Epoch: 0340 loss = 4.786256\n",
-            "Epoch: 0341 loss = 4.786253\n",
-            "Epoch: 0342 loss = 4.786252\n",
-            "Epoch: 0343 loss = 4.786249\n",
-            "Epoch: 0344 loss = 4.786247\n",
-            "Epoch: 0345 loss = 4.786245\n",
-            "Epoch: 0346 loss = 4.786243\n",
-            "Epoch: 0347 loss = 4.786241\n",
-            "Epoch: 0348 loss = 4.786238\n",
-            "Epoch: 0349 loss = 4.786237\n",
-            "Epoch: 0350 loss = 4.786234\n",
-            "Epoch: 0351 loss = 4.786232\n",
-            "Epoch: 0352 loss = 4.786230\n",
-            "Epoch: 0353 loss = 4.786228\n",
-            "Epoch: 0354 loss = 4.786226\n",
-            "Epoch: 0355 loss = 4.786223\n",
-            "Epoch: 0356 loss = 4.786222\n",
-            "Epoch: 0357 loss = 4.786221\n",
-            "Epoch: 0358 loss = 4.786217\n",
-            "Epoch: 0359 loss = 4.786215\n",
-            "Epoch: 0360 loss = 4.786213\n",
-            "Epoch: 0361 loss = 4.786211\n",
-            "Epoch: 0362 loss = 4.786209\n",
-            "Epoch: 0363 loss = 4.786207\n",
-            "Epoch: 0364 loss = 4.786203\n",
-            "Epoch: 0365 loss = 4.786200\n",
-            "Epoch: 0366 loss = 4.786190\n",
-            "Epoch: 0367 loss = 4.786129\n",
-            "Epoch: 0368 loss = 4.785011\n",
-            "Epoch: 0369 loss = 4.781053\n",
-            "Epoch: 0370 loss = 4.779747\n",
-            "Epoch: 0371 loss = 4.783240\n",
-            "Epoch: 0372 loss = 4.779751\n",
-            "Epoch: 0373 loss = 4.779325\n",
-            "Epoch: 0374 loss = 4.779717\n",
-            "Epoch: 0375 loss = 4.780351\n",
-            "Epoch: 0376 loss = 4.780504\n",
-            "Epoch: 0377 loss = 4.780063\n",
-            "Epoch: 0378 loss = 4.779569\n",
-            "Epoch: 0379 loss = 4.779338\n",
-            "Epoch: 0380 loss = 4.779263\n",
-            "Epoch: 0381 loss = 4.779239\n",
-            "Epoch: 0382 loss = 4.779237\n",
-            "Epoch: 0383 loss = 4.779246\n",
-            "Epoch: 0384 loss = 4.779265\n",
-            "Epoch: 0385 loss = 4.779281\n",
-            "Epoch: 0386 loss = 4.779284\n",
-            "Epoch: 0387 loss = 4.779267\n",
-            "Epoch: 0388 loss = 4.779233\n",
-            "Epoch: 0389 loss = 4.779195\n",
-            "Epoch: 0390 loss = 4.779158\n",
-            "Epoch: 0391 loss = 4.779129\n",
-            "Epoch: 0392 loss = 4.779109\n",
-            "Epoch: 0393 loss = 4.779094\n",
-            "Epoch: 0394 loss = 4.779084\n",
-            "Epoch: 0395 loss = 4.779078\n",
-            "Epoch: 0396 loss = 4.779074\n",
-            "Epoch: 0397 loss = 4.779072\n",
-            "Epoch: 0398 loss = 4.779070\n",
-            "Epoch: 0399 loss = 4.779066\n",
-            "Epoch: 0400 loss = 4.779061\n",
-            "Epoch: 0401 loss = 4.779056\n",
-            "Epoch: 0402 loss = 4.779051\n",
-            "Epoch: 0403 loss = 4.779047\n",
-            "Epoch: 0404 loss = 4.779043\n",
-            "Epoch: 0405 loss = 4.779040\n",
-            "Epoch: 0406 loss = 4.779038\n",
-            "Epoch: 0407 loss = 4.779037\n",
-            "Epoch: 0408 loss = 4.779036\n",
-            "Epoch: 0409 loss = 4.779035\n",
-            "Epoch: 0410 loss = 4.779033\n",
-            "Epoch: 0411 loss = 4.779032\n",
-            "Epoch: 0412 loss = 4.779031\n",
-            "Epoch: 0413 loss = 4.779028\n",
-            "Epoch: 0414 loss = 4.779026\n",
-            "Epoch: 0415 loss = 4.779021\n",
-            "Epoch: 0416 loss = 4.779011\n",
-            "Epoch: 0417 loss = 4.778957\n",
-            "Epoch: 0418 loss = 4.778023\n",
-            "Epoch: 0419 loss = 4.775119\n",
-            "Epoch: 0420 loss = 4.772221\n",
-            "Epoch: 0421 loss = 4.774364\n",
-            "Epoch: 0422 loss = 4.772817\n"
-          ]
-        },
-        {
-          "ename": "KeyboardInterrupt",
-          "evalue": "",
-          "output_type": "error",
-          "traceback": [
-            "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
-            "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
-            "\u001b[1;32mc:\\Users\\Albin\\Documents\\TDDE19\\codebase\\Neural graph module\\ngm.ipynb Cell 11\u001b[0m in \u001b[0;36m<cell line: 13>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X35sZmlsZQ%3D%3D?line=17'>18</a>\u001b[0m loss \u001b[39m=\u001b[39m criterion(output, corr_indx)\n\u001b[0;32m     <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X35sZmlsZQ%3D%3D?line=19'>20</a>\u001b[0m \u001b[39mif\u001b[39;00m (epoch \u001b[39m+\u001b[39m \u001b[39m1\u001b[39m) \u001b[39m%\u001b[39m \u001b[39m1\u001b[39m \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m:\n\u001b[1;32m---> <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X35sZmlsZQ%3D%3D?line=20'>21</a>\u001b[0m     \u001b[39mprint\u001b[39m(\u001b[39m'\u001b[39m\u001b[39mEpoch:\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39m%04d\u001b[39;00m\u001b[39m'\u001b[39m \u001b[39m%\u001b[39m (epoch \u001b[39m+\u001b[39m \u001b[39m1\u001b[39m), \u001b[39m'\u001b[39m\u001b[39mloss =\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39;49m\u001b[39m{:.6f}\u001b[39;49;00m\u001b[39m'\u001b[39;49m\u001b[39m.\u001b[39;49mformat(loss))\n\u001b[0;32m     <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X35sZmlsZQ%3D%3D?line=21'>22</a>\u001b[0m \u001b[39m# Backward pass\u001b[39;00m\n\u001b[0;32m     <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X35sZmlsZQ%3D%3D?line=22'>23</a>\u001b[0m loss\u001b[39m.\u001b[39mbackward()\n",
-            "File \u001b[1;32mb:\\Programs\\Miniconda\\envs\\tdde19\\lib\\site-packages\\torch\\_tensor.py:659\u001b[0m, in \u001b[0;36mTensor.__format__\u001b[1;34m(self, format_spec)\u001b[0m\n\u001b[0;32m    657\u001b[0m     \u001b[39mreturn\u001b[39;00m handle_torch_function(Tensor\u001b[39m.\u001b[39m\u001b[39m__format__\u001b[39m, (\u001b[39mself\u001b[39m,), \u001b[39mself\u001b[39m, format_spec)\n\u001b[0;32m    658\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdim() \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m \u001b[39mand\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mis_meta:\n\u001b[1;32m--> 659\u001b[0m     \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mitem()\u001b[39m.\u001b[39m\u001b[39m__format__\u001b[39m(format_spec)\n\u001b[0;32m    660\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mobject\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__format__\u001b[39m(\u001b[39mself\u001b[39m, format_spec)\n",
-            "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
-          ]
-        }
-      ],
-      "source": [
-        "model = NgmOne(device)\n",
         "\n",
-        "EPOCHS = 1500\n",
-        "criterion = nn.CrossEntropyLoss()\n",
-        "optimizer = optim.Adam(model.parameters(), lr=0.007)\n",
-        "\n",
-        "with open(\"../data/relations-query-qald-9-linked.json\", \"r\") as f:\n",
-        "    relations = json.load(f)\n",
-        "\n",
-        "train, train_mask, corr_rels = make_batch()\n",
-        "corr_indx = torch.LongTensor([relations.index(r) for r in corr_rels]).to(device)\n",
-        "\n",
-        "for epoch in range(EPOCHS):\n",
-        "    optimizer.zero_grad()\n",
-        "\n",
-        "    # Forward pass\n",
-        "    output = model(train, train_mask)\n",
-        "    loss = criterion(output, corr_indx)\n",
-        "\n",
-        "    if (epoch + 1) % 1 == 0:\n",
-        "        print('Epoch:', '%04d' % (epoch + 1), 'loss =', '{:.6f}'.format(loss))\n",
-        "    # Backward pass\n",
-        "    loss.backward()\n",
-        "    optimizer.step()\n",
-        "    \n"
+        "    print(e+1, epoch_loss / len(sample_batched))"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 1,
+      "execution_count": null,
       "metadata": {},
-      "outputs": [
-        {
-          "ename": "NameError",
-          "evalue": "name 'make_batch' is not defined",
-          "output_type": "error",
-          "traceback": [
-            "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
-            "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-            "\u001b[1;32mc:\\Users\\Albin\\Documents\\TDDE19\\codebase\\Neural graph module\\ngm.ipynb Cell 13\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X15sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m \u001b[39m# Predict\u001b[39;00m\n\u001b[1;32m----> <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X15sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m train, train_mask, corr_rels \u001b[39m=\u001b[39m make_batch()\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X15sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m \u001b[39mwith\u001b[39;00m torch\u001b[39m.\u001b[39mno_grad():\n\u001b[0;32m      <a href='vscode-notebook-cell:/c%3A/Users/Albin/Documents/TDDE19/codebase/Neural%20graph%20module/ngm.ipynb#X15sZmlsZQ%3D%3D?line=3'>4</a>\u001b[0m     output \u001b[39m=\u001b[39m model(train, train_mask)\n",
-            "\u001b[1;31mNameError\u001b[0m: name 'make_batch' is not defined"
-          ]
-        }
-      ],
+      "outputs": [],
       "source": [
         "# Predict\n",
         "train, train_mask, corr_rels = make_batch()\n",