aboutsummaryrefslogtreecommitdiff
path: root/old_notebooks/ModelTestingResults.ipynb
blob: 73193909bcd51860b251a2604b979d698186d52a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c436fe36",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ['TF_CPP_MIN_LOG_LEVEL'] = \"3\"\n",
    "\n",
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "import copy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a2de4c43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.03831879422068596,\n",
       " 0.1187107115983963,\n",
       " 0.16365589201450348,\n",
       " 0.039159368723630905,\n",
       " 0.18282656371593475,\n",
       " 0.09447649866342545,\n",
       " 0.16753192245960236,\n",
       " 0.040330443531274796,\n",
       " 0.11326785385608673,\n",
       " 0.03986871987581253]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from os import listdir\n",
    "import re\n",
    "BASE_DIR = \"../../CleanedModels/models/ModelsTesting/\"\n",
    "testing_data = []\n",
    "testing_results = {}\n",
    "for DIR in listdir(BASE_DIR):\n",
    "    FULL_DIR = BASE_DIR + DIR\n",
    "    space_size = int(re.findall(r\"_0?([0-9]*)_\", DIR)[-1])\n",
    "    try:\n",
    "        data = np.loadtxt(FULL_DIR + \"/epoch_data.csv\", delimiter=',')\n",
    "    except:\n",
    "        continue\n",
    "    data = data[-1,:]\n",
    "    testing_data.append((space_size, data[1], data[2], data[3], data[4], data[5], data[6]))\n",
    "    if space_size in testing_results.keys():\n",
    "        testing_results[space_size][\"t_mse\"].append(data[1])\n",
    "        testing_results[space_size][\"v_mse\"].append(data[2])\n",
    "        testing_results[space_size][\"t_dl\"].append(data[3])\n",
    "        testing_results[space_size][\"v_dl\"].append(data[4])\n",
    "        testing_results[space_size][\"t_gl\"].append(data[5])\n",
    "        testing_results[space_size][\"v_gl\"].append(data[6])\n",
    "        testing_results[space_size][\"t_diff\"].append(data[3] - data[5])\n",
    "        testing_results[space_size][\"v_diff\"].append(data[4] - data[6])\n",
    "    else:\n",
    "        testing_results[space_size] = {\n",
    "            \"t_mse\": [data[1]],\n",
    "            \"v_mse\": [data[2]],\n",
    "            \"t_dl\":  [data[3]],\n",
    "            \"v_dl\":  [data[4]],\n",
    "            \"t_gl\":  [data[5]],\n",
    "            \"v_gl\":  [data[6]],\n",
    "            \"t_diff\": [data[3] - data[5]],\n",
    "            \"v_diff\": [data[4] - data[6]],\n",
    "        }\n",
    "testing_data = np.array(testing_data)\n",
    "testing_results[1]['t_mse']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "eb99d53d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "''"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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K1VeXl7jAQAAWq9WG5j+/e9/609/+pPuvvvuBttdc801ev311/Xxxx9r/vz52rRpk6644gpVVlbW+5qsrCyFhoZ6HlFRUb4uHwAA2IjtvyU3e/ZsPfroow222bRpkwYNGuR5vm/fPg0dOlRDhw7Vyy+/7NX7lZSUqE+fPlq2bFm9X7WurKysEajKy8sVFRXFt+QAAPAj3nxLzvZjmKZMmaKxY8c22CY6Otrz//v27VNKSoqGDBmihQsXev1+ERER6tOnj3bv3l1vm6CgIAUFBXm9bQAA4J9sH5jCwsIUFhbWqLZ79+5VSkqKLrnkEi1evLjWndkb49ChQ9qzZw83sAQAAB6tZgzTvn37lJycrKioKM2bN08HDhxQaWmpSktLa7SLi4vTypUrJUlHjhzR9OnTlZeXp6KiIq1du1YjR45UWFiYbrjhBit+DAAAYEO272FqrA8++EBff/21vv76a/Xq1avGutOHae3cuVNlZWWSTk3it337dr366qs6fPiwIiIilJKSorfeekshISEtWj8AALAv2w/69gfcGgUAAP/TJm+NAgAA0FwITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACZazc13AQDwNy6XS7m5uSopKVFERISSkpLkdDqtLgt1oIcJAAALZGdnKzY2VikpKRo3bpxSUlIUGxur7Oxsq0tDHQhMAAC0sOzsbKWnpyshIUF5eXmqqKhQXl6eEhISlJ6eTmiyIYdhGIbVRfi78vJyhYaGqqysTF26dLG6HACAjblcLsXGxiohIUGrVq1SQMB/+y7cbrdSU1NVUFCg3bt3c3mumXlz/KaHCQCAFpSbm6uioiLNnDmzRliSpICAAM2YMUOFhYXKzc21qELUhcAEAEALKikpkSTFx8fXub56eXU72AOBCQCAFhQRESFJKigoqHN99fLqdrAHAhMAAC0oKSlJ0dHRyszMlNvtrrHO7XYrKytLMTExSkpKsqhC1IXABABAC3I6nZo/f75ycnKUmppa41tyqampysnJ0bx58xjwbTNMXAkAQAtLS0vT8uXLlZGRocTERM/ymJgYLV++XGlpaRZWh7owrYAPMK0AAKApmOnbWt4cv+lhAgDAIk6nU8nJyVaXgUZgDBMAAIAJAhMAAIAJAhMAAIAJAhMA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5XI1x48BAAD8kN99S27JkiWaOnWqDh8+XGP53//+d11//fXas2ePIiMjJUnLli3ThAkTtH///jpHv5eVlencc8/Va6+9pptvvlmStG/fPkVFRem9997TiBEjGlUT35IDAMD/tMmb7+bl5Sk+Pt4TliRpxIgRqqys1JYtW+p8zZYtW3TixAkNHz7csywyMlLx8fHasGFDs9cMAAD8Q6uZVqC0tFQ9e/asseycc85RYGCgSktL631NYGCgzjnnnBrLe/bsWe9rpFPjniorKz3Py8vLz6JyAABgd5b2MM2ePVsOh6PBx+bNmxu9PYfDUWuZYRh1Lm+I2WuysrIUGhrqeURFRXm1fQAA4F8s7WGaMmWKxo4d22Cb6OjoRm0rPDxcn376aY1lP/zwg06cOFGr5+n011RVVemHH36o0cu0f//+GlOvn2nGjBmaNm2a53l5eTmhCQCAVszSwBQWFqawsDCfbGvIkCGaO3euZ7p0Sfrggw8UFBSkSy65pM7XXHLJJWrfvr1Wr16tMWPGSJJKSkpUUFCgp556qt73CgoKUlBQkE/qBgAA9uc3g76Li4uVn5+v4uJiuVwu5efnKz8/X0eOHJEkDR8+XD/96U/1q1/9Stu2bdNHH32k6dOna+LEiZ6R73v37lVcXJw2btwoSQoNDdWdd96pjIwMffTRR9q2bZvGjx+vhIQEXXnllZb9rAAAwF78ZtD3I488oldeecXzfODAgZKkNWvWKDk5WU6nU++++64mTZqkSy+9VMHBwRo3bpzmzZvnec2JEye0c+dOHTt2zLPsmWeeUbt27TRmzBgdP35cw4YN05IlS87qZn4AAKB18bt5mOyIeZgAAPA/bXIeJgAAgOZCYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADBBYAIAADDhN4Fp7ty5SkxMVMeOHdW1a9da6z/77DPdcsstioqKUnBwsPr166fn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0ZVXXqlPP/202eohMNnE0aNHdfHFF+v555+3upQa1q1bp8mTJ+tf//qXVq9erZMnT2r48OE6evSopXX16tVLTzzxhDZv3qzNmzfriiuu0OjRo1tkx9dYmzZt0sKFC3XRRRdZXYokqX///iopKfE8tm/fbnVJ+uGHH3TppZeqffv2+vvf/64vvvhC8+fPV9euXa0uTZs2barxea1evVqSdNNNN1la15NPPqkXX3xRzz//vL788ks99dRT+sMf/qA//elPltYlSXfddZdWr16t1157Tdu3b9fw4cN15ZVXau/evS1Wg9m+9KmnntLTTz+t559/Xps2bVJ4eLiuuuoqzz1Brarr6NGjuvTSS/XEE080ax31vXd9tR07dkxbt27Vww8/rK1btyo7O1u7du3SqFGjLK1Lki644AI9//zz2r59u9avX6/o6GgNHz5cBw4caJ6CDNiOJGPlypVWl1Gn/fv3G5KMdevWWV1KLeecc47x8ssvW12GYRiGUVFRYfTt29dYvXq1MXToUOPee++1tJ5Zs2YZF198saU11OX+++83LrvsMqvLaJR7773XOP/88w23221pHdddd51xxx131FiWlpZmjB8/3qKKTjl27JjhdDqNnJycGssvvvhi48EHH7SkpjP3pW632wgPDzeeeOIJz7Iff/zRCA0NNV588UXL6jpdYWGhIcnYtm1bi9VzusYcfzZu3GhIMr799tuWKcpoXF1lZWWGJOPDDz9slhroYYJXysrKJEndunWzuJL/crlcWrZsmY4ePaohQ4ZYXY4kafLkybruuut05ZVXWl2Kx+7duxUZGamYmBiNHTtW33zzjdUl6Z133tGgQYN00003qUePHho4cKD+8pe/WF1WLVVVVVq6dKnuuOOOs77B9tm67LLL9NFHH2nXrl2SpM8++0zr16/Xtddea2ldJ0+elMvlUocOHWosDw4O1vr16y2qqqbCwkKVlpZq+PDhnmVBQUEaOnSoNmzYYGFl/qWsrEwOh8MWPcHVqqqqtHDhQoWGhuriiy9ulvfg5rtoNMMwNG3aNF122WWKj4+3uhxt375dQ4YM0Y8//qjOnTtr5cqV+ulPf2p1WVq2bJm2bt3a4mM3GvKLX/xCr776qi644AL95z//0eOPP67ExETt2LFD3bt3t6yub775RgsWLNC0adM0c+ZMbdy4Ub/73e8UFBSkW2+91bK6zrRq1SodPnxYEyZMsLoU3X///SorK1NcXJycTqdcLpfmzp2rW265xdK6QkJCNGTIED322GPq16+fevbsqTfffFOffvqp+vbta2lt1UpLSyVJPXv2rLG8Z8+e+vbbb60oye/8+OOPeuCBBzRu3Dhb3JA3JydHY8eO1bFjxxQREaHVq1crLCysWd6LwIRGmzJlij7//HPbnC1eeOGFys/P1+HDh7VixQrddtttWrdunaWhac+ePbr33nv1wQcf1DrTttI111zj+f+EhAQNGTJE559/vl555RVNmzbNsrrcbrcGDRqkzMxMSdLAgQO1Y8cOLViwwFaBadGiRbrmmmsUGRlpdSl66623tHTpUr3xxhvq37+/8vPzNXXqVEVGRuq2226ztLbXXntNd9xxh37yk5/I6XTqZz/7mcaNG6etW7daWteZzuwlNAzD8p5Df3DixAmNHTtWbrdbL7zwgtXlSJJSUlKUn5+vgwcP6i9/+YvGjBmjTz/9VD169PD5e3FJDo1yzz336J133tGaNWvUq1cvq8uRJAUGBio2NlaDBg1SVlaWLr74Yj333HOW1rRlyxbt379fl1xyidq1a6d27dpp3bp1+uMf/6h27drJ5XJZWl+1Tp06KSEhQbt377a0joiIiFoBt1+/fiouLraootq+/fZbffjhh7rrrrusLkWS9Pvf/14PPPCAxo4dq4SEBP3qV7/Sfffdp6ysLKtL0/nnn69169bpyJEj2rNnjzZu3KgTJ04oJibG6tIkyfPN0Oqepmr79++v1euEmk6cOKExY8aosLBQq1evtkXvknRqXxYbG6vBgwdr0aJFateunRYtWtQs70VgQoMMw9CUKVOUnZ2tjz/+2DY7vroYhqHKykpLaxg2bJi2b9+u/Px8z2PQoEH65S9/qfz8fDmdTkvrq1ZZWakvv/xSERERltZx6aWX1pqmYteuXerTp49FFdW2ePFi9ejRQ9ddd53VpUg69a2lgICau26n02mLaQWqderUSREREfrhhx/0/vvva/To0VaXJEmKiYlReHi45xuP0qmxL+vWrVNiYqKFldlbdVjavXu3PvzwQ0sv45tpzuMAl+Rs4siRI/r66689zwsLC5Wfn69u3bqpd+/eltU1efJkvfHGG3r77bcVEhLiOTMLDQ1VcHCwZXXNnDlT11xzjaKiolRRUaFly5Zp7dq1+sc//mFZTdKpcRxnju/q1KmTunfvbum4r+nTp2vkyJHq3bu39u/fr8cff1zl5eWWX8K57777lJiYqMzMTI0ZM0YbN27UwoULtXDhQkvrquZ2u7V48WLddtttatfOHrvLkSNHau7cuerdu7f69++vbdu26emnn9Ydd9xhdWl6//33ZRiGLrzwQn399df6/e9/rwsvvFC33357i9Vgti+dOnWqMjMz1bdvX/Xt21eZmZnq2LGjxo0bZ2ld33//vYqLiz3zG1WfSISHhzf7nGkN1RYZGan09HRt3bpVOTk5crlcnuNAt27dFBgYaEld3bt319y5czVq1ChFRETo0KFDeuGFF/Tdd98139QfzfLdO3htzZo1hqRaj9tuu83SuuqqSZKxePFiS+u64447jD59+hiBgYHGueeeawwbNsz44IMPLK2pPnaYVuDmm282IiIijPbt2xuRkZFGWlqasWPHDktrqva3v/3NiI+PN4KCgoy4uDhj4cKFVpfk8f777xuSjJ07d1pdikd5eblx7733Gr179zY6dOhgnHfeecaDDz5oVFZWWl2a8dZbbxnnnXeeERgYaISHhxuTJ082Dh8+3KI1mO1L3W63MWvWLCM8PNwICgoyLr/8cmP79u2W17V48eI618+aNcvS2qqnOajrsWbNGsvqOn78uHHDDTcYkZGRRmBgoBEREWGMGjXK2LhxY7PV4zAMw2ieKAYAANA6MIYJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADAxP8H8QAWJKyxcnoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "metric = {}\n",
    "metrics = ['t_mse', 't_dl', 't_gl', 'v_mse', 'v_dl', 'v_gl']\n",
    "l = 't'\n",
    "# plt.figure(figsize=(10,6))\n",
    "results = copy.deepcopy(testing_results)\n",
    "testing_results = copy.deepcopy(results)\n",
    "metric = {}\n",
    "for index in testing_results.keys():\n",
    "    res1 = testing_results[index][f'{l}_dl']\n",
    "    res2 = testing_results[index][f'{l}_gl']\n",
    "    res = np.array(res1) - np.array(res2)\n",
    "    if index in metric.keys():\n",
    "        metric[index].append(res)\n",
    "    else:\n",
    "        metric[index] = res\n",
    "metric = dict(sorted(metric.items()))\n",
    "plt.boxplot(metric.values(), labels=metric.keys())\n",
    "# plt.yscale('log')\n",
    "plt.ylabel(f'{l}_dl-{l}_gl')\n",
    "# plt.tight_layout()\n",
    "# plt.savefig(f\"./figures/model_{l}diff.jpg\")\n",
    "# plt.blank()\n",
    "# plt.savefig(f\"./figures/model_{l}diff.svg\")\n",
    "# _plt = blank_plot(plt)\n",
    "# _plt.savefig(f\"./figures/model_{metric_name}.eps\")\n",
    "\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6db1ad6d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sunlab.common.plotting import blank_plot\n",
    "from sunlab.globals import DIR_ROOT"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "462118d5",
   "metadata": {},
   "outputs": [],
   "source": [
    "SAVE_FIGURES=False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "588884c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "''"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for idx in range(len(metrics)):\n",
    "    plt.clf()\n",
    "    metric = {}\n",
    "    metrics = ['t_mse', 'v_mse', 't_dl', 'v_dl', 't_gl', 'v_gl', 't_diff', 'v_diff']\n",
    "    metric_name = metrics[idx]\n",
    "    for index in testing_results.keys():\n",
    "        if index in metric.keys():\n",
    "            metric[index].append(testing_results[index][metric_name])\n",
    "        else:\n",
    "            metric[index] = testing_results[index][metric_name]\n",
    "    metric = dict(sorted(metric.items()))\n",
    "    plt.boxplot(metric.values(), labels=metric.keys())\n",
    "    if not (metric_name in ['t_diff','v_diff']):\n",
    "        plt.yscale('log')\n",
    "    blank_plot(_xticks=True, _yticks=True)\n",
    "    if SAVE_FIGURES:\n",
    "        plt.save(DIR_ROOT + f\"Figures/EX/model_{metric_name}\", _xticks=True, _yticks=True)\n",
    "# plt.savefig(f\"./figures/model_{metric_name}.jpg\")\n",
    "# # _plt = blank_plot(plt)\n",
    "# plt.blank()\n",
    "# plt.savefig(f\"./figures/model_{metric_name}.svg\")\n",
    "\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5185ada7",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "tfnb",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}