CNN_superposition_4chann.ipynb 172 KB
Newer Older
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
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CNN Superposition de 4 images "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import os\n",
    "import logging\n",
    "logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.INFO)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A - Preprocessing : Reading Data"
   ]
  },
  {
   "cell_type": "code",
Bannier Delphine's avatar
Bannier Delphine committed
32
   "execution_count": 2,
33
34
35
36
37
38
39
40
   "metadata": {},
   "outputs": [],
   "source": [
    "os.chdir('../')"
   ]
  },
  {
   "cell_type": "code",
Bannier Delphine's avatar
Bannier Delphine committed
41
   "execution_count": 3,
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
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Patient</th>\n",
       "      <th>Weeks</th>\n",
       "      <th>FVC</th>\n",
       "      <th>Percent</th>\n",
       "      <th>Age</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SmokingStatus</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ID00007637202177411956430</td>\n",
       "      <td>-4</td>\n",
       "      <td>2315</td>\n",
       "      <td>58.253649</td>\n",
       "      <td>79</td>\n",
       "      <td>Male</td>\n",
       "      <td>Ex-smoker</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ID00007637202177411956430</td>\n",
       "      <td>5</td>\n",
       "      <td>2214</td>\n",
       "      <td>55.712129</td>\n",
       "      <td>79</td>\n",
       "      <td>Male</td>\n",
       "      <td>Ex-smoker</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ID00007637202177411956430</td>\n",
       "      <td>7</td>\n",
       "      <td>2061</td>\n",
       "      <td>51.862104</td>\n",
       "      <td>79</td>\n",
       "      <td>Male</td>\n",
       "      <td>Ex-smoker</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ID00007637202177411956430</td>\n",
       "      <td>9</td>\n",
       "      <td>2144</td>\n",
       "      <td>53.950679</td>\n",
       "      <td>79</td>\n",
       "      <td>Male</td>\n",
       "      <td>Ex-smoker</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ID00007637202177411956430</td>\n",
       "      <td>11</td>\n",
       "      <td>2069</td>\n",
       "      <td>52.063412</td>\n",
       "      <td>79</td>\n",
       "      <td>Male</td>\n",
       "      <td>Ex-smoker</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     Patient  Weeks   FVC    Percent  Age   Sex SmokingStatus\n",
       "0  ID00007637202177411956430     -4  2315  58.253649   79  Male     Ex-smoker\n",
       "1  ID00007637202177411956430      5  2214  55.712129   79  Male     Ex-smoker\n",
       "2  ID00007637202177411956430      7  2061  51.862104   79  Male     Ex-smoker\n",
       "3  ID00007637202177411956430      9  2144  53.950679   79  Male     Ex-smoker\n",
       "4  ID00007637202177411956430     11  2069  52.063412   79  Male     Ex-smoker"
      ]
     },
Bannier Delphine's avatar
Bannier Delphine committed
138
     "execution_count": 3,
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from preprocessing.read_load_data import read_data\n",
    "\n",
    "input_directory='../osic-pulmonary-fibrosis-progression'\n",
    "train_df, test_df, sample_df = read_data(input_directory)   \n",
    "train_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## B - Preprocessing : Loading Data"
   ]
  },
  {
   "cell_type": "code",
Bannier Delphine's avatar
Bannier Delphine committed
160
   "execution_count": 4,
161
162
163
164
165
166
167
168
169
170
   "metadata": {},
   "outputs": [],
   "source": [
    "patients_train_ids= train_df.Patient.unique()\n",
    "patient_test_list= test_df.Patient.unique()\n",
    "patients_train_ids = [pat for pat in patients_train_ids]"
   ]
  },
  {
   "cell_type": "code",
171
   "execution_count": 5,
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:loading  attributes...\n",
      "INFO:loading images...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Array shape:  (176, 240, 240, 4)\n",
      "min value:  -0.1251496147096971\n",
188
      "max value:  0.16921848376184256\n"
189
190
191
192
193
194
195
196
     ]
    }
   ],
   "source": [
    "from preprocessing.read_load_data import load_images\n",
    "\n",
    "logging.info(\"loading  attributes...\")\n",
    "df = pd.read_csv(f'{input_directory}/train.csv')\n",
197
    "df = df.sort_values(\"Weeks\").drop_duplicates(subset = 'Patient', keep='first')\n",
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
    "patients_train_ids= df.Patient.unique().tolist()\n",
    "df = df[df['Patient'].isin(patients_train_ids)]\n",
    "\n",
    "logging.info(\"loading images...\")\n",
    "images = load_images(input_directory,\n",
    "                    'train',\n",
    "                     patients_train_ids,\n",
    "                     option='superposition',\n",
    "                    outputH = 240,\n",
    "                    outputW = 240)\n",
    "\n",
    "print(\"Array shape: \", images.shape)\n",
    "#check value between -1,1\n",
    "print('min value: ', np.amin(images))\n",
    "print('max value: ', np.amax(images))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## C - Preprocessing : shuffle"
   ]
  },
  {
   "cell_type": "code",
224
   "execution_count": 6,
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "split = train_test_split(df, images, test_size=0.2, random_state=42)\n",
    "(trainAttrX, testAttrX, trainImagesX, testImagesX) = split"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## D - Preprocessing : Scaling"
   ]
  },
  {
   "cell_type": "code",
243
   "execution_count": 7,
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
   "metadata": {},
   "outputs": [],
   "source": [
    "from preprocessing.scale_data import scale_variable\n",
    "\n",
    "sc, trainAttrX, testAttrX = scale_variable(trainAttrX, testAttrX,'FVC')\n",
    "trainY = trainAttrX.loc[:,'FVC_scaled']\n",
    "testY = testAttrX.loc[:,'FVC_scaled']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## E - Processing :  Construction of the model"
   ]
  },
  {
   "cell_type": "code",
263
   "execution_count": 8,
264
265
266
267
268
269
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.optimizers import Adam\n",
    "from processing.models import create_cnn\n",
    "\n",
270
    "#model = create_cnn(240, 240, 4, regress=True)\n",
271
    "opt = Adam(lr=1e-3, decay=1e-3 / 200)\n",
272
    "#model.compile(loss=\"mean_squared_error\", optimizer=opt)"
273
274
275
276
   ]
  },
  {
   "cell_type": "code",
277
   "execution_count": 9,
278
279
280
281
282
283
284
285
286
287
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping\n",
    "\n",
    "#set early stopping criteria\n",
    "pat = 20 #this is the number of epochs with no improvment after which the training will stop\n",
    "es = EarlyStopping(monitor='val_loss', patience=pat, verbose=1)\n",
    "\n",
    "#define the model checkpoint callback -> this will keep on saving the model as a physical file\n",
288
    "cp = ModelCheckpoint('clean_notebooks/cnn_superposition_4C.h5', verbose=1, save_best_only=True)"
289
290
291
292
   ]
  },
  {
   "cell_type": "code",
293
   "execution_count": 10,
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
   "metadata": {},
   "outputs": [],
   "source": [
    "def custom_shuffle_split(trainAttrX,train_dataset,trainY,test_size = 0.1 ):\n",
    "    cut = int(len(trainY)*test_size)\n",
    "    arr = list(np.arange(len(trainY)))\n",
    "    np.random.shuffle(arr)\n",
    "    trainidx = arr[cut:]\n",
    "    testidx = arr[:cut]\n",
    "    train_x, train_y =  train_dataset[trainidx] , trainY[trainidx]\n",
    "    val_x, val_y =  train_dataset[testidx], trainY[testidx]\n",
    "    return train_x, val_x, train_y, val_y"
   ]
  },
  {
   "cell_type": "code",
310
   "execution_count": 8,
311
312
313
314
315
316
317
318
319
320
   "metadata": {},
   "outputs": [],
   "source": [
    "trainY = trainAttrX.loc[:,'FVC_scaled'].copy()\n",
    "trainY = trainY.reset_index( drop = True)\n",
    "trainAttrX.reset_index(inplace=True)"
   ]
  },
  {
   "cell_type": "code",
321
   "execution_count": 13,
322
323
324
325
326
327
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
328
329
      "Training on Fold:  1\n",
      "Epoch 1/100\n",
330
331
332
      "15/15 [==============================] - ETA: 22s - loss: 3.99 - ETA: 10s - loss: 3.86 - ETA: 10s - loss: 3.99 - ETA: 9s - loss: 3.8345 - ETA: 8s - loss: 3.704 - ETA: 7s - loss: 3.623 - ETA: 6s - loss: 3.525 - ETA: 5s - loss: 3.440 - ETA: 4s - loss: 3.353 - ETA: 4s - loss: 3.271 - ETA: 3s - loss: 3.195 - ETA: 2s - loss: 3.125 - ETA: 1s - loss: 3.060 - ETA: 0s - loss: 3.005 - ETA: 0s - loss: 2.957 - 13s 843ms/step - loss: 2.9147 - val_loss: 0.9037\n",
      "\n",
      "Epoch 00001: val_loss improved from inf to 0.90370, saving model to clean_notebooks\\cnn_superposition_4C.h5\n",
333
      "Epoch 2/100\n",
334
335
336
      "15/15 [==============================] - ETA: 16s - loss: 1.83 - ETA: 13s - loss: 1.77 - ETA: 11s - loss: 1.70 - ETA: 10s - loss: 1.69 - ETA: 9s - loss: 1.7131 - ETA: 8s - loss: 1.764 - ETA: 7s - loss: 1.780 - ETA: 6s - loss: 1.782 - ETA: 5s - loss: 1.782 - ETA: 4s - loss: 1.783 - ETA: 3s - loss: 1.781 - ETA: 2s - loss: 1.812 - ETA: 1s - loss: 1.839 - ETA: 0s - loss: 1.859 - ETA: 0s - loss: 1.875 - 13s 833ms/step - loss: 1.8902 - val_loss: 0.6889\n",
      "\n",
      "Epoch 00002: val_loss improved from 0.90370 to 0.68894, saving model to clean_notebooks\\cnn_superposition_4C.h5\n",
337
      "Epoch 3/100\n",
338
339
340
      "15/15 [==============================] - ETA: 10s - loss: 0.71 - ETA: 12s - loss: 1.02 - ETA: 10s - loss: 1.04 - ETA: 9s - loss: 1.0256 - ETA: 8s - loss: 1.041 - ETA: 7s - loss: 1.050 - ETA: 6s - loss: 1.045 - ETA: 6s - loss: 1.070 - ETA: 5s - loss: 1.092 - ETA: 4s - loss: 1.116 - ETA: 3s - loss: 1.137 - ETA: 2s - loss: 1.163 - ETA: 1s - loss: 1.205 - ETA: 0s - loss: 1.242 - ETA: 0s - loss: 1.273 - 13s 844ms/step - loss: 1.3004 - val_loss: 0.5577\n",
      "\n",
      "Epoch 00003: val_loss improved from 0.68894 to 0.55767, saving model to clean_notebooks\\cnn_superposition_4C.h5\n",
341
      "Epoch 4/100\n",
342
343
344
      "15/15 [==============================] - ETA: 13s - loss: 1.21 - ETA: 12s - loss: 1.36 - ETA: 11s - loss: 1.40 - ETA: 10s - loss: 1.44 - ETA: 9s - loss: 1.5696 - ETA: 8s - loss: 1.629 - ETA: 7s - loss: 1.684 - ETA: 6s - loss: 1.704 - ETA: 5s - loss: 1.742 - ETA: 4s - loss: 1.764 - ETA: 3s - loss: 1.776 - ETA: 2s - loss: 1.785 - ETA: 1s - loss: 1.793 - ETA: 0s - loss: 1.796 - ETA: 0s - loss: 1.797 - 13s 880ms/step - loss: 1.7991 - val_loss: 0.5581\n",
      "\n",
      "Epoch 00004: val_loss did not improve from 0.55767\n",
345
      "Epoch 5/100\n",
346
347
348
      "15/15 [==============================] - ETA: 12s - loss: 1.55 - ETA: 12s - loss: 1.54 - ETA: 12s - loss: 1.63 - ETA: 11s - loss: 1.74 - ETA: 10s - loss: 1.79 - ETA: 9s - loss: 1.8538 - ETA: 8s - loss: 1.869 - ETA: 7s - loss: 1.871 - ETA: 6s - loss: 1.872 - ETA: 5s - loss: 1.875 - ETA: 3s - loss: 1.872 - ETA: 2s - loss: 1.876 - ETA: 1s - loss: 1.876 - ETA: 0s - loss: 1.875 - ETA: 0s - loss: 1.873 - 14s 929ms/step - loss: 1.8727 - val_loss: 0.4486\n",
      "\n",
      "Epoch 00005: val_loss improved from 0.55767 to 0.44865, saving model to clean_notebooks\\cnn_superposition_4C.h5\n",
349
      "Epoch 6/100\n",
350
351
352
      "15/15 [==============================] - ETA: 11s - loss: 1.15 - ETA: 11s - loss: 1.30 - ETA: 10s - loss: 1.33 - ETA: 9s - loss: 1.3151 - ETA: 8s - loss: 1.315 - ETA: 7s - loss: 1.305 - ETA: 7s - loss: 1.304 - ETA: 6s - loss: 1.312 - ETA: 5s - loss: 1.321 - ETA: 4s - loss: 1.336 - ETA: 3s - loss: 1.369 - ETA: 2s - loss: 1.407 - ETA: 1s - loss: 1.438 - ETA: 0s - loss: 1.469 - ETA: 0s - loss: 1.495 - 13s 866ms/step - loss: 1.5187 - val_loss: 0.8432\n",
      "\n",
      "Epoch 00006: val_loss did not improve from 0.44865\n",
353
      "Epoch 7/100\n",
354
355
356
      "15/15 [==============================] - ETA: 12s - loss: 1.46 - ETA: 11s - loss: 1.54 - ETA: 10s - loss: 1.56 - ETA: 9s - loss: 1.5593 - ETA: 8s - loss: 1.511 - ETA: 7s - loss: 1.461 - ETA: 7s - loss: 1.441 - ETA: 6s - loss: 1.447 - ETA: 5s - loss: 1.457 - ETA: 4s - loss: 1.465 - ETA: 3s - loss: 1.474 - ETA: 2s - loss: 1.490 - ETA: 1s - loss: 1.505 - ETA: 0s - loss: 1.516 - ETA: 0s - loss: 1.526 - 14s 911ms/step - loss: 1.5345 - val_loss: 0.6137\n",
      "\n",
      "Epoch 00007: val_loss did not improve from 0.44865\n",
357
      "Epoch 8/100\n",
358
359
360
      "15/15 [==============================] - ETA: 14s - loss: 2.93 - ETA: 13s - loss: 2.37 - ETA: 14s - loss: 2.06 - ETA: 12s - loss: 1.89 - ETA: 11s - loss: 1.78 - ETA: 9s - loss: 1.7173 - ETA: 8s - loss: 1.676 - ETA: 7s - loss: 1.678 - ETA: 6s - loss: 1.672 - ETA: 5s - loss: 1.677 - ETA: 4s - loss: 1.674 - ETA: 3s - loss: 1.671 - ETA: 2s - loss: 1.669 - ETA: 1s - loss: 1.661 - ETA: 0s - loss: 1.654 - 15s 1s/step - loss: 1.6485 - val_loss: 0.5563\n",
      "\n",
      "Epoch 00008: val_loss did not improve from 0.44865\n",
361
      "Epoch 9/100\n",
362
363
364
      "15/15 [==============================] - ETA: 14s - loss: 4.70 - ETA: 13s - loss: 4.16 - ETA: 13s - loss: 3.81 - ETA: 12s - loss: 3.51 - ETA: 10s - loss: 3.27 - ETA: 9s - loss: 3.1348 - ETA: 8s - loss: 2.998 - ETA: 7s - loss: 2.895 - ETA: 6s - loss: 2.845 - ETA: 5s - loss: 2.806 - ETA: 4s - loss: 2.763 - ETA: 3s - loss: 2.722 - ETA: 2s - loss: 2.678 - ETA: 1s - loss: 2.642 - ETA: 0s - loss: 2.610 - 15s 1s/step - loss: 2.5821 - val_loss: 0.5503\n",
      "\n",
      "Epoch 00009: val_loss did not improve from 0.44865\n",
365
      "Epoch 10/100\n",
366
367
368
      "15/15 [==============================] - ETA: 14s - loss: 0.75 - ETA: 13s - loss: 1.83 - ETA: 12s - loss: 2.04 - ETA: 11s - loss: 2.08 - ETA: 10s - loss: 2.14 - ETA: 9s - loss: 2.1615 - ETA: 8s - loss: 2.157 - ETA: 7s - loss: 2.140 - ETA: 6s - loss: 2.125 - ETA: 5s - loss: 2.111 - ETA: 4s - loss: 2.094 - ETA: 3s - loss: 2.069 - ETA: 2s - loss: 2.044 - ETA: 1s - loss: 2.022 - ETA: 0s - loss: 2.003 - 15s 984ms/step - loss: 1.9858 - val_loss: 0.5143\n",
      "\n",
      "Epoch 00010: val_loss did not improve from 0.44865\n",
369
      "Epoch 11/100\n",
370
371
372
      "15/15 [==============================] - ETA: 13s - loss: 1.49 - ETA: 12s - loss: 1.60 - ETA: 11s - loss: 1.63 - ETA: 10s - loss: 1.63 - ETA: 9s - loss: 1.6514 - ETA: 8s - loss: 1.676 - ETA: 7s - loss: 1.692 - ETA: 6s - loss: 1.708 - ETA: 5s - loss: 1.703 - ETA: 4s - loss: 1.696 - ETA: 3s - loss: 1.700 - ETA: 2s - loss: 1.702 - ETA: 1s - loss: 1.713 - ETA: 0s - loss: 1.718 - ETA: 0s - loss: 1.721 - 14s 952ms/step - loss: 1.7242 - val_loss: 0.5030\n",
      "\n",
      "Epoch 00011: val_loss did not improve from 0.44865\n",
373
      "Epoch 12/100\n",
374
375
376
      "15/15 [==============================] - ETA: 14s - loss: 0.96 - ETA: 14s - loss: 1.25 - ETA: 12s - loss: 1.23 - ETA: 11s - loss: 1.15 - ETA: 9s - loss: 1.0914 - ETA: 9s - loss: 1.113 - ETA: 8s - loss: 1.143 - ETA: 7s - loss: 1.166 - ETA: 6s - loss: 1.190 - ETA: 5s - loss: 1.217 - ETA: 4s - loss: 1.248 - ETA: 3s - loss: 1.268 - ETA: 2s - loss: 1.292 - ETA: 1s - loss: 1.314 - ETA: 0s - loss: 1.343 - 14s 963ms/step - loss: 1.3684 - val_loss: 0.9294\n",
      "\n",
      "Epoch 00012: val_loss did not improve from 0.44865\n",
377
      "Epoch 13/100\n",
378
379
380
      "15/15 [==============================] - ETA: 14s - loss: 1.68 - ETA: 12s - loss: 2.02 - ETA: 12s - loss: 2.16 - ETA: 12s - loss: 2.13 - ETA: 11s - loss: 2.10 - ETA: 10s - loss: 2.05 - ETA: 8s - loss: 2.0429 - ETA: 7s - loss: 2.017 - ETA: 6s - loss: 2.002 - ETA: 5s - loss: 1.987 - ETA: 4s - loss: 1.973 - ETA: 3s - loss: 1.953 - ETA: 2s - loss: 1.938 - ETA: 1s - loss: 1.921 - ETA: 0s - loss: 1.906 - 15s 1s/step - loss: 1.8934 - val_loss: 0.8402\n",
      "\n",
      "Epoch 00013: val_loss did not improve from 0.44865\n",
381
      "Epoch 14/100\n",
382
383
384
      "15/15 [==============================] - ETA: 14s - loss: 1.92 - ETA: 12s - loss: 2.00 - ETA: 11s - loss: 1.99 - ETA: 10s - loss: 1.92 - ETA: 9s - loss: 1.8584 - ETA: 8s - loss: 1.802 - ETA: 7s - loss: 1.746 - ETA: 6s - loss: 1.729 - ETA: 5s - loss: 1.737 - ETA: 4s - loss: 1.739 - ETA: 3s - loss: 1.743 - ETA: 2s - loss: 1.742 - ETA: 1s - loss: 1.743 - ETA: 0s - loss: 1.740 - ETA: 0s - loss: 1.737 - 14s 894ms/step - loss: 1.7345 - val_loss: 0.5849\n",
      "\n",
      "Epoch 00014: val_loss did not improve from 0.44865\n",
385
      "Epoch 15/100\n",
386
387
388
      "15/15 [==============================] - ETA: 12s - loss: 1.75 - ETA: 12s - loss: 1.58 - ETA: 10s - loss: 1.56 - ETA: 10s - loss: 1.51 - ETA: 9s - loss: 1.4766 - ETA: 8s - loss: 1.467 - ETA: 7s - loss: 1.531 - ETA: 6s - loss: 1.587 - ETA: 5s - loss: 1.622 - ETA: 4s - loss: 1.638 - ETA: 3s - loss: 1.644 - ETA: 2s - loss: 1.648 - ETA: 1s - loss: 1.652 - ETA: 0s - loss: 1.656 - ETA: 0s - loss: 1.659 - 13s 886ms/step - loss: 1.6620 - val_loss: 0.8478\n",
      "\n",
      "Epoch 00015: val_loss did not improve from 0.44865\n",
389
      "Epoch 16/100\n",
390
391
392
      "15/15 [==============================] - ETA: 13s - loss: 1.53 - ETA: 11s - loss: 1.72 - ETA: 10s - loss: 1.76 - ETA: 10s - loss: 2.02 - ETA: 9s - loss: 2.0929 - ETA: 8s - loss: 2.139 - ETA: 7s - loss: 2.148 - ETA: 6s - loss: 2.166 - ETA: 5s - loss: 2.160 - ETA: 4s - loss: 2.147 - ETA: 3s - loss: 2.128 - ETA: 2s - loss: 2.113 - ETA: 1s - loss: 2.096 - ETA: 0s - loss: 2.084 - ETA: 0s - loss: 2.071 - 13s 893ms/step - loss: 2.0613 - val_loss: 0.9638\n",
      "\n",
      "Epoch 00016: val_loss did not improve from 0.44865\n",
393
      "Epoch 17/100\n",
394
395
396
      "15/15 [==============================] - ETA: 14s - loss: 1.58 - ETA: 13s - loss: 1.31 - ETA: 12s - loss: 1.28 - ETA: 11s - loss: 1.25 - ETA: 10s - loss: 1.20 - ETA: 9s - loss: 1.2035 - ETA: 8s - loss: 1.183 - ETA: 6s - loss: 1.182 - ETA: 5s - loss: 1.190 - ETA: 4s - loss: 1.199 - ETA: 3s - loss: 1.211 - ETA: 2s - loss: 1.229 - ETA: 1s - loss: 1.239 - ETA: 0s - loss: 1.243 - ETA: 0s - loss: 1.256 - 14s 919ms/step - loss: 1.2679 - val_loss: 1.0747\n",
      "\n",
      "Epoch 00017: val_loss did not improve from 0.44865\n",
397
      "Epoch 18/100\n",
398
399
400
      "15/15 [==============================] - ETA: 12s - loss: 0.59 - ETA: 11s - loss: 1.12 - ETA: 10s - loss: 1.34 - ETA: 9s - loss: 1.3827 - ETA: 9s - loss: 1.418 - ETA: 8s - loss: 1.431 - ETA: 7s - loss: 1.427 - ETA: 6s - loss: 1.427 - ETA: 5s - loss: 1.429 - ETA: 4s - loss: 1.438 - ETA: 3s - loss: 1.440 - ETA: 2s - loss: 1.441 - ETA: 1s - loss: 1.444 - ETA: 0s - loss: 1.445 - ETA: 0s - loss: 1.445 - 14s 903ms/step - loss: 1.4462 - val_loss: 0.7409\n",
      "\n",
      "Epoch 00018: val_loss did not improve from 0.44865\n",
401
      "Epoch 19/100\n",
402
403
404
      "15/15 [==============================] - ETA: 15s - loss: 0.87 - ETA: 18s - loss: 0.85 - ETA: 14s - loss: 0.94 - ETA: 12s - loss: 0.96 - ETA: 11s - loss: 0.96 - ETA: 9s - loss: 0.9773 - ETA: 8s - loss: 1.030 - ETA: 7s - loss: 1.082 - ETA: 6s - loss: 1.122 - ETA: 5s - loss: 1.190 - ETA: 4s - loss: 1.247 - ETA: 3s - loss: 1.290 - ETA: 2s - loss: 1.333 - ETA: 1s - loss: 1.364 - ETA: 0s - loss: 1.389 - 15s 980ms/step - loss: 1.4119 - val_loss: 0.7988\n",
      "\n",
      "Epoch 00019: val_loss did not improve from 0.44865\n",
405
      "Epoch 20/100\n",
406
407
408
      "15/15 [==============================] - ETA: 13s - loss: 2.28 - ETA: 11s - loss: 2.16 - ETA: 10s - loss: 2.02 - ETA: 9s - loss: 1.9225 - ETA: 9s - loss: 1.834 - ETA: 8s - loss: 1.767 - ETA: 7s - loss: 1.715 - ETA: 6s - loss: 1.678 - ETA: 5s - loss: 1.659 - ETA: 4s - loss: 1.639 - ETA: 4s - loss: 1.620 - ETA: 3s - loss: 1.614 - ETA: 2s - loss: 1.620 - ETA: 1s - loss: 1.622 - ETA: 0s - loss: 1.622 - 15s 992ms/step - loss: 1.6223 - val_loss: 0.9426\n",
      "\n",
      "Epoch 00020: val_loss did not improve from 0.44865\n",
409
      "Epoch 21/100\n",
410
411
412
      "15/15 [==============================] - ETA: 12s - loss: 3.02 - ETA: 11s - loss: 2.68 - ETA: 10s - loss: 2.42 - ETA: 9s - loss: 2.2991 - ETA: 8s - loss: 2.263 - ETA: 8s - loss: 2.204 - ETA: 7s - loss: 2.162 - ETA: 6s - loss: 2.121 - ETA: 5s - loss: 2.075 - ETA: 4s - loss: 2.027 - ETA: 3s - loss: 1.990 - ETA: 2s - loss: 1.960 - ETA: 1s - loss: 1.931 - ETA: 0s - loss: 1.905 - ETA: 0s - loss: 1.881 - 13s 892ms/step - loss: 1.8612 - val_loss: 0.6824\n",
      "\n",
      "Epoch 00021: val_loss did not improve from 0.44865\n",
413
      "Epoch 22/100\n",
414
415
416
      "15/15 [==============================] - ETA: 14s - loss: 2.48 - ETA: 11s - loss: 2.43 - ETA: 10s - loss: 2.36 - ETA: 9s - loss: 2.2177 - ETA: 9s - loss: 2.094 - ETA: 8s - loss: 2.009 - ETA: 7s - loss: 1.958 - ETA: 6s - loss: 1.929 - ETA: 5s - loss: 1.900 - ETA: 4s - loss: 1.864 - ETA: 3s - loss: 1.828 - ETA: 2s - loss: 1.798 - ETA: 1s - loss: 1.772 - ETA: 0s - loss: 1.747 - ETA: 0s - loss: 1.726 - 13s 854ms/step - loss: 1.7079 - val_loss: 0.6231\n",
      "\n",
      "Epoch 00022: val_loss did not improve from 0.44865\n",
417
      "Epoch 23/100\n",
418
419
420
      "15/15 [==============================] - ETA: 12s - loss: 1.74 - ETA: 11s - loss: 1.38 - ETA: 10s - loss: 1.35 - ETA: 9s - loss: 1.3760 - ETA: 8s - loss: 1.367 - ETA: 7s - loss: 1.342 - ETA: 6s - loss: 1.307 - ETA: 6s - loss: 1.281 - ETA: 5s - loss: 1.271 - ETA: 4s - loss: 1.282 - ETA: 3s - loss: 1.290 - ETA: 2s - loss: 1.304 - ETA: 1s - loss: 1.315 - ETA: 0s - loss: 1.346 - ETA: 0s - loss: 1.373 - 13s 841ms/step - loss: 1.3964 - val_loss: 0.8232\n",
      "\n",
      "Epoch 00023: val_loss did not improve from 0.44865\n",
421
      "Epoch 24/100\n",
422
423
424
      "15/15 [==============================] - ETA: 12s - loss: 1.29 - ETA: 11s - loss: 1.27 - ETA: 10s - loss: 1.29 - ETA: 9s - loss: 1.4065 - ETA: 8s - loss: 1.476 - ETA: 7s - loss: 1.525 - ETA: 6s - loss: 1.533 - ETA: 6s - loss: 1.520 - ETA: 5s - loss: 1.497 - ETA: 4s - loss: 1.487 - ETA: 3s - loss: 1.479 - ETA: 2s - loss: 1.470 - ETA: 1s - loss: 1.458 - ETA: 0s - loss: 1.449 - ETA: 0s - loss: 1.441 - 13s 839ms/step - loss: 1.4338 - val_loss: 0.6522\n",
      "\n",
      "Epoch 00024: val_loss did not improve from 0.44865\n",
425
      "Epoch 25/100\n",
426
427
428
429
430
431
      "15/15 [==============================] - ETA: 12s - loss: 0.87 - ETA: 11s - loss: 0.87 - ETA: 10s - loss: 0.93 - ETA: 9s - loss: 0.9453 - ETA: 8s - loss: 1.001 - ETA: 7s - loss: 1.022 - ETA: 7s - loss: 1.021 - ETA: 6s - loss: 1.041 - ETA: 5s - loss: 1.084 - ETA: 4s - loss: 1.114 - ETA: 3s - loss: 1.129 - ETA: 2s - loss: 1.149 - ETA: 1s - loss: 1.160 - ETA: 0s - loss: 1.175 - ETA: 0s - loss: 1.188 - 13s 868ms/step - loss: 1.2002 - val_loss: 0.6127\n",
      "\n",
      "Epoch 00025: val_loss did not improve from 0.44865\n",
      "Epoch 00025: early stopping\n",
      "1/1 [==============================] - ETA: 0s - loss: 0.746 - 0s 312ms/step - loss: 0.7463\n",
      "Val Score:  0.746306300163269\n",
432
433
434
435
436
      "====================================================================================\n",
      "\n",
      "\n",
      "Training on Fold:  2\n",
      "Epoch 1/100\n",
437
438
439
      "15/15 [==============================] - ETA: 25s - loss: 4.15 - ETA: 13s - loss: 3.82 - ETA: 12s - loss: 3.49 - ETA: 11s - loss: 3.26 - ETA: 9s - loss: 3.0956 - ETA: 8s - loss: 2.951 - ETA: 7s - loss: 2.844 - ETA: 6s - loss: 2.774 - ETA: 5s - loss: 2.712 - ETA: 4s - loss: 2.664 - ETA: 3s - loss: 2.638 - ETA: 2s - loss: 2.610 - ETA: 1s - loss: 2.575 - ETA: 0s - loss: 2.538 - ETA: 0s - loss: 2.506 - 14s 892ms/step - loss: 2.4782 - val_loss: 1.3604\n",
      "\n",
      "Epoch 00001: val_loss did not improve from 0.44865\n",
440
      "Epoch 2/100\n",
441
442
443
      "15/15 [==============================] - ETA: 12s - loss: 0.58 - ETA: 11s - loss: 1.43 - ETA: 10s - loss: 1.74 - ETA: 9s - loss: 1.7858 - ETA: 8s - loss: 1.785 - ETA: 7s - loss: 1.800 - ETA: 7s - loss: 1.841 - ETA: 6s - loss: 1.880 - ETA: 5s - loss: 1.898 - ETA: 4s - loss: 1.903 - ETA: 3s - loss: 1.908 - ETA: 2s - loss: 1.904 - ETA: 1s - loss: 1.896 - ETA: 0s - loss: 1.903 - ETA: 0s - loss: 1.911 - 13s 847ms/step - loss: 1.9179 - val_loss: 1.2686\n",
      "\n",
      "Epoch 00002: val_loss did not improve from 0.44865\n",
444
      "Epoch 3/100\n",
445
446
447
      "15/15 [==============================] - ETA: 12s - loss: 3.15 - ETA: 11s - loss: 2.56 - ETA: 10s - loss: 2.26 - ETA: 9s - loss: 2.0920 - ETA: 8s - loss: 2.034 - ETA: 7s - loss: 1.970 - ETA: 7s - loss: 1.901 - ETA: 6s - loss: 1.849 - ETA: 5s - loss: 1.801 - ETA: 4s - loss: 1.764 - ETA: 3s - loss: 1.739 - ETA: 2s - loss: 1.726 - ETA: 1s - loss: 1.720 - ETA: 0s - loss: 1.711 - ETA: 0s - loss: 1.702 - 13s 840ms/step - loss: 1.6953 - val_loss: 0.9715\n",
      "\n",
      "Epoch 00003: val_loss did not improve from 0.44865\n",
448
      "Epoch 4/100\n",
449
450
451
      "15/15 [==============================] - ETA: 12s - loss: 2.54 - ETA: 11s - loss: 2.48 - ETA: 10s - loss: 2.48 - ETA: 9s - loss: 2.4133 - ETA: 8s - loss: 2.302 - ETA: 8s - loss: 2.253 - ETA: 7s - loss: 2.191 - ETA: 6s - loss: 2.166 - ETA: 5s - loss: 2.134 - ETA: 4s - loss: 2.105 - ETA: 3s - loss: 2.084 - ETA: 2s - loss: 2.068 - ETA: 1s - loss: 2.047 - ETA: 0s - loss: 2.027 - ETA: 0s - loss: 2.009 - 13s 850ms/step - loss: 1.9942 - val_loss: 1.1945\n",
      "\n",
      "Epoch 00004: val_loss did not improve from 0.44865\n",
452
      "Epoch 5/100\n",
453
454
455
      "15/15 [==============================] - ETA: 12s - loss: 1.07 - ETA: 10s - loss: 0.94 - ETA: 10s - loss: 1.52 - ETA: 9s - loss: 1.7090 - ETA: 8s - loss: 1.762 - ETA: 7s - loss: 1.825 - ETA: 7s - loss: 1.893 - ETA: 6s - loss: 1.923 - ETA: 5s - loss: 1.947 - ETA: 4s - loss: 1.955 - ETA: 3s - loss: 1.964 - ETA: 2s - loss: 1.961 - ETA: 1s - loss: 1.954 - ETA: 0s - loss: 1.941 - ETA: 0s - loss: 1.930 - 13s 840ms/step - loss: 1.9213 - val_loss: 1.2474\n",
      "\n",
      "Epoch 00005: val_loss did not improve from 0.44865\n",
456
      "Epoch 6/100\n",
457
458
459
      "15/15 [==============================] - ETA: 12s - loss: 1.69 - ETA: 11s - loss: 1.91 - ETA: 10s - loss: 1.88 - ETA: 9s - loss: 1.9116 - ETA: 8s - loss: 1.970 - ETA: 7s - loss: 2.080 - ETA: 7s - loss: 2.133 - ETA: 6s - loss: 2.190 - ETA: 5s - loss: 2.239 - ETA: 4s - loss: 2.265 - ETA: 3s - loss: 2.278 - ETA: 2s - loss: 2.300 - ETA: 1s - loss: 2.312 - ETA: 0s - loss: 2.313 - ETA: 0s - loss: 2.312 - 13s 872ms/step - loss: 2.3112 - val_loss: 0.9989\n",
      "\n",
      "Epoch 00006: val_loss did not improve from 0.44865\n",
460
      "Epoch 7/100\n",
461
462
463
      "15/15 [==============================] - ETA: 12s - loss: 0.88 - ETA: 12s - loss: 1.10 - ETA: 11s - loss: 1.11 - ETA: 10s - loss: 1.09 - ETA: 9s - loss: 1.0706 - ETA: 8s - loss: 1.069 - ETA: 7s - loss: 1.088 - ETA: 6s - loss: 1.172 - ETA: 5s - loss: 1.245 - ETA: 4s - loss: 1.307 - ETA: 3s - loss: 1.355 - ETA: 2s - loss: 1.384 - ETA: 1s - loss: 1.411 - ETA: 0s - loss: 1.438 - ETA: 0s - loss: 1.461 - 13s 855ms/step - loss: 1.4812 - val_loss: 1.2634\n",
      "\n",
      "Epoch 00007: val_loss did not improve from 0.44865\n",
464
      "Epoch 8/100\n",
465
466
467
      "15/15 [==============================] - ETA: 12s - loss: 4.68 - ETA: 11s - loss: 4.27 - ETA: 10s - loss: 3.98 - ETA: 9s - loss: 3.7348 - ETA: 9s - loss: 3.495 - ETA: 8s - loss: 3.285 - ETA: 7s - loss: 3.132 - ETA: 6s - loss: 3.010 - ETA: 5s - loss: 2.907 - ETA: 4s - loss: 2.809 - ETA: 3s - loss: 2.721 - ETA: 2s - loss: 2.654 - ETA: 1s - loss: 2.600 - ETA: 0s - loss: 2.556 - ETA: 0s - loss: 2.516 - 13s 853ms/step - loss: 2.4815 - val_loss: 1.6122\n",
      "\n",
      "Epoch 00008: val_loss did not improve from 0.44865\n",
468
      "Epoch 9/100\n",
469
470
471
      "15/15 [==============================] - ETA: 12s - loss: 1.75 - ETA: 11s - loss: 1.95 - ETA: 10s - loss: 2.01 - ETA: 10s - loss: 2.04 - ETA: 9s - loss: 2.0061 - ETA: 8s - loss: 1.984 - ETA: 7s - loss: 1.957 - ETA: 6s - loss: 1.935 - ETA: 5s - loss: 1.927 - ETA: 4s - loss: 1.915 - ETA: 3s - loss: 1.922 - ETA: 2s - loss: 1.928 - ETA: 1s - loss: 1.925 - ETA: 0s - loss: 1.914 - ETA: 0s - loss: 1.904 - 13s 849ms/step - loss: 1.8949 - val_loss: 2.0124\n",
      "\n",
      "Epoch 00009: val_loss did not improve from 0.44865\n",
472
      "Epoch 10/100\n",
473
474
475
      "15/15 [==============================] - ETA: 12s - loss: 1.51 - ETA: 11s - loss: 2.22 - ETA: 11s - loss: 2.35 - ETA: 10s - loss: 2.32 - ETA: 9s - loss: 2.3012 - ETA: 8s - loss: 2.245 - ETA: 7s - loss: 2.196 - ETA: 6s - loss: 2.146 - ETA: 5s - loss: 2.113 - ETA: 4s - loss: 2.077 - ETA: 3s - loss: 2.057 - ETA: 2s - loss: 2.040 - ETA: 1s - loss: 2.018 - ETA: 0s - loss: 1.992 - ETA: 0s - loss: 1.968 - 14s 931ms/step - loss: 1.9482 - val_loss: 1.3693\n",
      "\n",
      "Epoch 00010: val_loss did not improve from 0.44865\n",
476
      "Epoch 11/100\n",
477
478
479
      "15/15 [==============================] - ETA: 12s - loss: 0.79 - ETA: 11s - loss: 1.01 - ETA: 10s - loss: 1.09 - ETA: 9s - loss: 1.0868 - ETA: 8s - loss: 1.231 - ETA: 7s - loss: 1.297 - ETA: 6s - loss: 1.366 - ETA: 6s - loss: 1.425 - ETA: 5s - loss: 1.459 - ETA: 4s - loss: 1.478 - ETA: 3s - loss: 1.491 - ETA: 2s - loss: 1.505 - ETA: 1s - loss: 1.515 - ETA: 0s - loss: 1.522 - ETA: 0s - loss: 1.527 - 13s 844ms/step - loss: 1.5318 - val_loss: 1.2899\n",
      "\n",
      "Epoch 00011: val_loss did not improve from 0.44865\n",
480
      "Epoch 12/100\n",
481
482
483
      "15/15 [==============================] - ETA: 12s - loss: 0.86 - ETA: 11s - loss: 1.43 - ETA: 10s - loss: 1.52 - ETA: 9s - loss: 1.5997 - ETA: 8s - loss: 1.631 - ETA: 7s - loss: 1.613 - ETA: 6s - loss: 1.663 - ETA: 6s - loss: 1.677 - ETA: 5s - loss: 1.704 - ETA: 4s - loss: 1.711 - ETA: 3s - loss: 1.713 - ETA: 2s - loss: 1.707 - ETA: 1s - loss: 1.700 - ETA: 0s - loss: 1.687 - ETA: 0s - loss: 1.677 - 13s 845ms/step - loss: 1.6690 - val_loss: 1.3677\n",
      "\n",
      "Epoch 00012: val_loss did not improve from 0.44865\n",
484
      "Epoch 13/100\n",
485
486
487
      "15/15 [==============================] - ETA: 12s - loss: 1.46 - ETA: 11s - loss: 1.39 - ETA: 10s - loss: 1.53 - ETA: 9s - loss: 1.6845 - ETA: 8s - loss: 1.765 - ETA: 8s - loss: 1.819 - ETA: 7s - loss: 1.831 - ETA: 6s - loss: 1.825 - ETA: 5s - loss: 1.819 - ETA: 4s - loss: 1.803 - ETA: 3s - loss: 1.787 - ETA: 2s - loss: 1.793 - ETA: 1s - loss: 1.793 - ETA: 0s - loss: 1.788 - ETA: 0s - loss: 1.783 - 14s 921ms/step - loss: 1.7786 - val_loss: 1.0831\n",
      "\n",
      "Epoch 00013: val_loss did not improve from 0.44865\n",
488
      "Epoch 14/100\n",
489
490
491
      "15/15 [==============================] - ETA: 12s - loss: 1.19 - ETA: 11s - loss: 1.03 - ETA: 10s - loss: 0.94 - ETA: 9s - loss: 0.9337 - ETA: 8s - loss: 0.932 - ETA: 7s - loss: 0.942 - ETA: 7s - loss: 0.942 - ETA: 6s - loss: 0.965 - ETA: 5s - loss: 0.983 - ETA: 4s - loss: 1.009 - ETA: 3s - loss: 1.039 - ETA: 2s - loss: 1.069 - ETA: 1s - loss: 1.097 - ETA: 0s - loss: 1.124 - ETA: 0s - loss: 1.147 - 13s 839ms/step - loss: 1.1680 - val_loss: 1.2562\n",
      "\n",
      "Epoch 00014: val_loss did not improve from 0.44865\n",
492
      "Epoch 15/100\n",
493
494
495
      "15/15 [==============================] - ETA: 11s - loss: 2.78 - ETA: 11s - loss: 2.66 - ETA: 10s - loss: 2.59 - ETA: 9s - loss: 2.4953 - ETA: 8s - loss: 2.414 - ETA: 7s - loss: 2.338 - ETA: 7s - loss: 2.261 - ETA: 6s - loss: 2.206 - ETA: 5s - loss: 2.148 - ETA: 4s - loss: 2.096 - ETA: 3s - loss: 2.042 - ETA: 2s - loss: 1.999 - ETA: 1s - loss: 1.960 - ETA: 0s - loss: 1.924 - ETA: 0s - loss: 1.892 - 13s 878ms/step - loss: 1.8648 - val_loss: 0.8436\n",
      "\n",
      "Epoch 00015: val_loss did not improve from 0.44865\n",
496
      "Epoch 16/100\n",
497
498
499
      "15/15 [==============================] - ETA: 12s - loss: 0.33 - ETA: 11s - loss: 0.42 - ETA: 10s - loss: 0.77 - ETA: 10s - loss: 0.88 - ETA: 9s - loss: 0.9202 - ETA: 8s - loss: 0.970 - ETA: 7s - loss: 1.002 - ETA: 6s - loss: 1.035 - ETA: 5s - loss: 1.059 - ETA: 4s - loss: 1.079 - ETA: 3s - loss: 1.106 - ETA: 2s - loss: 1.128 - ETA: 1s - loss: 1.143 - ETA: 0s - loss: 1.154 - ETA: 0s - loss: 1.163 - 13s 883ms/step - loss: 1.1714 - val_loss: 0.8714\n",
      "\n",
      "Epoch 00016: val_loss did not improve from 0.44865\n",
500
      "Epoch 17/100\n",
501
502
503
      "15/15 [==============================] - ETA: 12s - loss: 1.78 - ETA: 10s - loss: 1.44 - ETA: 10s - loss: 1.28 - ETA: 9s - loss: 1.1754 - ETA: 8s - loss: 1.182 - ETA: 7s - loss: 1.173 - ETA: 6s - loss: 1.175 - ETA: 6s - loss: 1.170 - ETA: 5s - loss: 1.160 - ETA: 4s - loss: 1.152 - ETA: 3s - loss: 1.151 - ETA: 2s - loss: 1.174 - ETA: 1s - loss: 1.191 - ETA: 0s - loss: 1.208 - ETA: 0s - loss: 1.222 - 13s 840ms/step - loss: 1.2347 - val_loss: 0.9080\n",
      "\n",
      "Epoch 00017: val_loss did not improve from 0.44865\n",
504
      "Epoch 18/100\n",
505
506
507
      "15/15 [==============================] - ETA: 12s - loss: 1.53 - ETA: 11s - loss: 1.33 - ETA: 10s - loss: 1.27 - ETA: 9s - loss: 1.2270 - ETA: 8s - loss: 1.318 - ETA: 7s - loss: 1.356 - ETA: 6s - loss: 1.363 - ETA: 6s - loss: 1.369 - ETA: 5s - loss: 1.367 - ETA: 4s - loss: 1.361 - ETA: 3s - loss: 1.353 - ETA: 2s - loss: 1.345 - ETA: 1s - loss: 1.343 - ETA: 0s - loss: 1.352 - ETA: 0s - loss: 1.359 - 13s 839ms/step - loss: 1.3660 - val_loss: 0.9811\n",
      "\n",
      "Epoch 00018: val_loss did not improve from 0.44865\n",
508
      "Epoch 19/100\n",
509
510
511
      "15/15 [==============================] - ETA: 12s - loss: 0.41 - ETA: 11s - loss: 0.59 - ETA: 10s - loss: 0.66 - ETA: 9s - loss: 0.8081 - ETA: 8s - loss: 0.875 - ETA: 7s - loss: 0.903 - ETA: 7s - loss: 0.919 - ETA: 6s - loss: 0.926 - ETA: 5s - loss: 0.939 - ETA: 4s - loss: 0.950 - ETA: 3s - loss: 0.961 - ETA: 2s - loss: 0.977 - ETA: 1s - loss: 0.986 - ETA: 0s - loss: 0.992 - ETA: 0s - loss: 0.996 - 13s 896ms/step - loss: 1.0007 - val_loss: 1.0833\n",
      "\n",
      "Epoch 00019: val_loss did not improve from 0.44865\n",
512
      "Epoch 20/100\n",
513
514
515
      "15/15 [==============================] - ETA: 12s - loss: 1.25 - ETA: 11s - loss: 1.35 - ETA: 10s - loss: 1.35 - ETA: 9s - loss: 1.3081 - ETA: 8s - loss: 1.396 - ETA: 7s - loss: 1.473 - ETA: 7s - loss: 1.527 - ETA: 6s - loss: 1.560 - ETA: 5s - loss: 1.580 - ETA: 4s - loss: 1.592 - ETA: 3s - loss: 1.594 - ETA: 2s - loss: 1.589 - ETA: 1s - loss: 1.580 - ETA: 0s - loss: 1.569 - ETA: 0s - loss: 1.558 - 13s 835ms/step - loss: 1.5492 - val_loss: 1.0959\n",
      "\n",
      "Epoch 00020: val_loss did not improve from 0.44865\n",
516
      "Epoch 21/100\n",
517
518
519
      "15/15 [==============================] - ETA: 12s - loss: 1.21 - ETA: 11s - loss: 1.20 - ETA: 10s - loss: 1.55 - ETA: 9s - loss: 1.6562 - ETA: 8s - loss: 1.666 - ETA: 7s - loss: 1.699 - ETA: 6s - loss: 1.722 - ETA: 6s - loss: 1.731 - ETA: 5s - loss: 1.721 - ETA: 4s - loss: 1.709 - ETA: 3s - loss: 1.696 - ETA: 2s - loss: 1.684 - ETA: 1s - loss: 1.674 - ETA: 0s - loss: 1.665 - ETA: 0s - loss: 1.657 - 13s 842ms/step - loss: 1.6508 - val_loss: 1.2509\n",
      "\n",
      "Epoch 00021: val_loss did not improve from 0.44865\n",
520
      "Epoch 22/100\n",
521
522
523
      "15/15 [==============================] - ETA: 12s - loss: 0.56 - ETA: 11s - loss: 0.63 - ETA: 10s - loss: 0.66 - ETA: 9s - loss: 0.7129 - ETA: 8s - loss: 0.721 - ETA: 7s - loss: 0.738 - ETA: 7s - loss: 0.835 - ETA: 6s - loss: 0.903 - ETA: 5s - loss: 0.953 - ETA: 4s - loss: 0.993 - ETA: 3s - loss: 1.019 - ETA: 2s - loss: 1.041 - ETA: 1s - loss: 1.058 - ETA: 0s - loss: 1.070 - ETA: 0s - loss: 1.080 - 13s 846ms/step - loss: 1.0893 - val_loss: 1.3005\n",
      "\n",
      "Epoch 00022: val_loss did not improve from 0.44865\n",
524
      "Epoch 23/100\n",
525
526
527
      "15/15 [==============================] - ETA: 11s - loss: 1.78 - ETA: 11s - loss: 1.87 - ETA: 10s - loss: 1.77 - ETA: 9s - loss: 1.6880 - ETA: 8s - loss: 1.586 - ETA: 7s - loss: 1.514 - ETA: 6s - loss: 1.476 - ETA: 6s - loss: 1.457 - ETA: 5s - loss: 1.444 - ETA: 4s - loss: 1.430 - ETA: 3s - loss: 1.418 - ETA: 2s - loss: 1.409 - ETA: 1s - loss: 1.399 - ETA: 0s - loss: 1.386 - ETA: 0s - loss: 1.374 - 13s 836ms/step - loss: 1.3634 - val_loss: 1.3377\n",
      "\n",
      "Epoch 00023: val_loss did not improve from 0.44865\n",
528
      "Epoch 24/100\n",
529
530
531
      "15/15 [==============================] - ETA: 12s - loss: 1.83 - ETA: 11s - loss: 1.65 - ETA: 10s - loss: 1.63 - ETA: 9s - loss: 1.5990 - ETA: 8s - loss: 1.536 - ETA: 7s - loss: 1.489 - ETA: 7s - loss: 1.438 - ETA: 6s - loss: 1.396 - ETA: 5s - loss: 1.367 - ETA: 4s - loss: 1.348 - ETA: 3s - loss: 1.338 - ETA: 2s - loss: 1.328 - ETA: 1s - loss: 1.318 - ETA: 0s - loss: 1.310 - ETA: 0s - loss: 1.303 - 13s 844ms/step - loss: 1.2977 - val_loss: 1.5595\n",
      "\n",
      "Epoch 00024: val_loss did not improve from 0.44865\n",
532
      "Epoch 25/100\n",
533
534
535
      "15/15 [==============================] - ETA: 12s - loss: 3.39 - ETA: 11s - loss: 2.84 - ETA: 10s - loss: 2.49 - ETA: 9s - loss: 2.2821 - ETA: 8s - loss: 2.131 - ETA: 7s - loss: 2.026 - ETA: 6s - loss: 1.935 - ETA: 6s - loss: 1.878 - ETA: 5s - loss: 1.828 - ETA: 4s - loss: 1.789 - ETA: 3s - loss: 1.751 - ETA: 2s - loss: 1.712 - ETA: 1s - loss: 1.675 - ETA: 0s - loss: 1.643 - ETA: 0s - loss: 1.614 - 13s 832ms/step - loss: 1.5888 - val_loss: 1.5028\n",
      "\n",
      "Epoch 00025: val_loss did not improve from 0.44865\n",
536
      "Epoch 26/100\n",
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
      "15/15 [==============================] - ETA: 12s - loss: 0.68 - ETA: 10s - loss: 0.81 - ETA: 10s - loss: 0.86 - ETA: 9s - loss: 0.9355 - ETA: 8s - loss: 0.965 - ETA: 7s - loss: 0.973 - ETA: 6s - loss: 0.994 - ETA: 6s - loss: 1.012 - ETA: 5s - loss: 1.029 - ETA: 4s - loss: 1.056 - ETA: 3s - loss: 1.074 - ETA: 2s - loss: 1.085 - ETA: 1s - loss: 1.096 - ETA: 0s - loss: 1.113 - ETA: 0s - loss: 1.126 - 13s 839ms/step - loss: 1.1383 - val_loss: 1.4799\n",
      "\n",
      "Epoch 00026: val_loss did not improve from 0.44865\n",
      "Epoch 27/100\n",
      "15/15 [==============================] - ETA: 12s - loss: 2.01 - ETA: 11s - loss: 1.75 - ETA: 10s - loss: 1.64 - ETA: 9s - loss: 1.6231 - ETA: 8s - loss: 1.576 - ETA: 7s - loss: 1.516 - ETA: 6s - loss: 1.532 - ETA: 6s - loss: 1.535 - ETA: 5s - loss: 1.523 - ETA: 4s - loss: 1.508 - ETA: 3s - loss: 1.491 - ETA: 2s - loss: 1.479 - ETA: 1s - loss: 1.468 - ETA: 0s - loss: 1.455 - ETA: 0s - loss: 1.444 - 13s 854ms/step - loss: 1.4349 - val_loss: 1.4481\n",
      "\n",
      "Epoch 00027: val_loss did not improve from 0.44865\n",
      "Epoch 28/100\n",
      "15/15 [==============================] - ETA: 12s - loss: 2.42 - ETA: 11s - loss: 2.21 - ETA: 10s - loss: 2.03 - ETA: 9s - loss: 1.9044 - ETA: 8s - loss: 1.799 - ETA: 7s - loss: 1.709 - ETA: 6s - loss: 1.640 - ETA: 6s - loss: 1.594 - ETA: 5s - loss: 1.587 - ETA: 4s - loss: 1.578 - ETA: 3s - loss: 1.568 - ETA: 2s - loss: 1.552 - ETA: 1s - loss: 1.538 - ETA: 0s - loss: 1.520 - ETA: 0s - loss: 1.504 - 13s 855ms/step - loss: 1.4905 - val_loss: 1.2126\n",
      "\n",
      "Epoch 00028: val_loss did not improve from 0.44865\n",
      "Epoch 29/100\n",
      "15/15 [==============================] - ETA: 13s - loss: 1.74 - ETA: 12s - loss: 1.47 - ETA: 11s - loss: 1.31 - ETA: 10s - loss: 1.28 - ETA: 9s - loss: 1.2361 - ETA: 8s - loss: 1.233 - ETA: 7s - loss: 1.237 - ETA: 6s - loss: 1.241 - ETA: 5s - loss: 1.246 - ETA: 4s - loss: 1.242 - ETA: 3s - loss: 1.236 - ETA: 2s - loss: 1.228 - ETA: 1s - loss: 1.236 - ETA: 0s - loss: 1.240 - ETA: 0s - loss: 1.242 - 13s 884ms/step - loss: 1.2453 - val_loss: 1.1602\n",
      "\n",
      "Epoch 00029: val_loss did not improve from 0.44865\n",
      "Epoch 30/100\n",
      "15/15 [==============================] - ETA: 13s - loss: 1.15 - ETA: 11s - loss: 1.14 - ETA: 11s - loss: 1.05 - ETA: 10s - loss: 1.01 - ETA: 9s - loss: 1.0672 - ETA: 8s - loss: 1.084 - ETA: 7s - loss: 1.131 - ETA: 6s - loss: 1.159 - ETA: 5s - loss: 1.175 - ETA: 4s - loss: 1.187 - ETA: 3s - loss: 1.205 - ETA: 2s - loss: 1.218 - ETA: 1s - loss: 1.229 - ETA: 0s - loss: 1.235 - ETA: 0s - loss: 1.239 - 13s 855ms/step - loss: 1.2424 - val_loss: 1.1383\n",
      "\n",
      "Epoch 00030: val_loss did not improve from 0.44865\n",
      "Epoch 31/100\n",
      "15/15 [==============================] - ETA: 12s - loss: 2.08 - ETA: 11s - loss: 1.70 - ETA: 10s - loss: 1.51 - ETA: 9s - loss: 1.4006 - ETA: 8s - loss: 1.423 - ETA: 7s - loss: 1.411 - ETA: 7s - loss: 1.386 - ETA: 6s - loss: 1.357 - ETA: 5s - loss: 1.338 - ETA: 4s - loss: 1.326 - ETA: 3s - loss: 1.314 - ETA: 2s - loss: 1.305 - ETA: 1s - loss: 1.296 - ETA: 0s - loss: 1.286 - ETA: 0s - loss: 1.277 - 13s 840ms/step - loss: 1.2690 - val_loss: 1.1642\n",
      "\n",
      "Epoch 00031: val_loss did not improve from 0.44865\n",
      "Epoch 32/100\n",
      "15/15 [==============================] - ETA: 12s - loss: 1.05 - ETA: 11s - loss: 1.11 - ETA: 10s - loss: 1.07 - ETA: 9s - loss: 1.0631 - ETA: 8s - loss: 1.053 - ETA: 7s - loss: 1.063 - ETA: 6s - loss: 1.061 - ETA: 6s - loss: 1.065 - ETA: 5s - loss: 1.067 - ETA: 4s - loss: 1.065 - ETA: 3s - loss: 1.058 - ETA: 2s - loss: 1.053 - ETA: 1s - loss: 1.050 - ETA: 0s - loss: 1.048 - ETA: 0s - loss: 1.056 - 13s 843ms/step - loss: 1.0629 - val_loss: 1.0830\n",
      "\n",
      "Epoch 00032: val_loss did not improve from 0.44865\n",
      "Epoch 33/100\n",
      "15/15 [==============================] - ETA: 12s - loss: 1.66 - ETA: 10s - loss: 1.53 - ETA: 10s - loss: 1.45 - ETA: 9s - loss: 1.4802 - ETA: 8s - loss: 1.458 - ETA: 7s - loss: 1.437 - ETA: 6s - loss: 1.428 - ETA: 6s - loss: 1.408 - ETA: 5s - loss: 1.383 - ETA: 4s - loss: 1.358 - ETA: 3s - loss: 1.339 - ETA: 2s - loss: 1.322 - ETA: 1s - loss: 1.319 - ETA: 0s - loss: 1.313 - ETA: 0s - loss: 1.306 - 13s 843ms/step - loss: 1.3014 - val_loss: 1.0512\n",
      "\n",
      "Epoch 00033: val_loss did not improve from 0.44865\n",
      "Epoch 34/100\n",
      "15/15 [==============================] - ETA: 11s - loss: 1.23 - ETA: 11s - loss: 1.38 - ETA: 10s - loss: 1.52 - ETA: 9s - loss: 1.5661 - ETA: 8s - loss: 1.539 - ETA: 7s - loss: 1.515 - ETA: 7s - loss: 1.481 - ETA: 6s - loss: 1.450 - ETA: 5s - loss: 1.423 - ETA: 4s - loss: 1.394 - ETA: 3s - loss: 1.395 - ETA: 2s - loss: 1.390 - ETA: 1s - loss: 1.383 - ETA: 0s - loss: 1.376 - ETA: 0s - loss: 1.369 - 13s 902ms/step - loss: 1.3626 - val_loss: 1.0382\n",
      "\n",
      "Epoch 00034: val_loss did not improve from 0.44865\n",
      "Epoch 35/100\n",
      "15/15 [==============================] - ETA: 20s - loss: 1.56 - ETA: 17s - loss: 1.32 - ETA: 16s - loss: 1.50 - ETA: 15s - loss: 1.54 - ETA: 13s - loss: 1.53 - ETA: 12s - loss: 1.53 - ETA: 11s - loss: 1.52 - ETA: 9s - loss: 1.5097 - ETA: 8s - loss: 1.488 - ETA: 7s - loss: 1.466 - ETA: 5s - loss: 1.454 - ETA: 4s - loss: 1.440 - ETA: 2s - loss: 1.425 - ETA: 1s - loss: 1.415 - ETA: 0s - loss: 1.405 - 21s 1s/step - loss: 1.3969 - val_loss: 1.0449\n",
      "\n",
      "Epoch 00035: val_loss did not improve from 0.44865\n",
      "Epoch 00035: early stopping\n",
      "1/1 [==============================] - ETA: 0s - loss: 0.739 - 0s 370ms/step - loss: 0.7395\n",
      "Val Score:  0.7395259141921997\n",
579
580
581
582
583
      "====================================================================================\n",
      "\n",
      "\n",
      "Training on Fold:  3\n",
      "Epoch 1/100\n",
584
585
586
      "15/15 [==============================] - ETA: 46s - loss: 1.86 - ETA: 20s - loss: 3.87 - ETA: 19s - loss: 4.04 - ETA: 17s - loss: 4.00 - ETA: 15s - loss: 4.06 - ETA: 13s - loss: 4.02 - ETA: 11s - loss: 4.02 - ETA: 9s - loss: 3.9962 - ETA: 8s - loss: 3.996 - ETA: 6s - loss: 3.977 - ETA: 5s - loss: 3.964 - ETA: 4s - loss: 3.940 - ETA: 2s - loss: 3.923 - ETA: 1s - loss: 3.903 - ETA: 0s - loss: 3.884 - 22s 1s/step - loss: 3.8677 - val_loss: 1.8225\n",
      "\n",
      "Epoch 00001: val_loss did not improve from 0.44865\n",
587
      "Epoch 2/100\n",
588
589
590
      "15/15 [==============================] - ETA: 18s - loss: 2.17 - ETA: 17s - loss: 2.35 - ETA: 15s - loss: 2.29 - ETA: 14s - loss: 2.36 - ETA: 12s - loss: 2.40 - ETA: 11s - loss: 2.43 - ETA: 10s - loss: 2.41 - ETA: 9s - loss: 2.3983 - ETA: 8s - loss: 2.410 - ETA: 6s - loss: 2.403 - ETA: 5s - loss: 2.402 - ETA: 4s - loss: 2.393 - ETA: 2s - loss: 2.394 - ETA: 1s - loss: 2.408 - ETA: 0s - loss: 2.428 - 19s 1s/step - loss: 2.4471 - val_loss: 2.5590\n",
      "\n",
      "Epoch 00002: val_loss did not improve from 0.44865\n",
591
      "Epoch 3/100\n",
592
593
594
      "15/15 [==============================] - ETA: 17s - loss: 1.48 - ETA: 16s - loss: 1.67 - ETA: 15s - loss: 1.80 - ETA: 13s - loss: 1.93 - ETA: 12s - loss: 2.01 - ETA: 11s - loss: 2.10 - ETA: 10s - loss: 2.15 - ETA: 8s - loss: 2.2036 - ETA: 7s - loss: 2.240 - ETA: 6s - loss: 2.283 - ETA: 4s - loss: 2.314 - ETA: 3s - loss: 2.340 - ETA: 2s - loss: 2.367 - ETA: 1s - loss: 2.378 - ETA: 0s - loss: 2.389 - 18s 1s/step - loss: 2.3995 - val_loss: 1.7421\n",
      "\n",
      "Epoch 00003: val_loss did not improve from 0.44865\n",
595
      "Epoch 4/100\n",
596
597
598
      "15/15 [==============================] - ETA: 16s - loss: 0.63 - ETA: 16s - loss: 0.85 - ETA: 14s - loss: 1.04 - ETA: 13s - loss: 1.21 - ETA: 12s - loss: 1.26 - ETA: 11s - loss: 1.37 - ETA: 9s - loss: 1.4576 - ETA: 8s - loss: 1.498 - ETA: 7s - loss: 1.520 - ETA: 6s - loss: 1.565 - ETA: 4s - loss: 1.598 - ETA: 3s - loss: 1.616 - ETA: 2s - loss: 1.645 - ETA: 1s - loss: 1.672 - ETA: 0s - loss: 1.695 - 18s 1s/step - loss: 1.7154 - val_loss: 1.2910\n",
      "\n",
      "Epoch 00004: val_loss did not improve from 0.44865\n",
599
      "Epoch 5/100\n",
600
601
602
      "15/15 [==============================] - ETA: 17s - loss: 3.84 - ETA: 15s - loss: 3.43 - ETA: 14s - loss: 3.25 - ETA: 13s - loss: 3.26 - ETA: 12s - loss: 3.25 - ETA: 10s - loss: 3.25 - ETA: 9s - loss: 3.2344 - ETA: 8s - loss: 3.202 - ETA: 7s - loss: 3.162 - ETA: 6s - loss: 3.109 - ETA: 4s - loss: 3.067 - ETA: 3s - loss: 3.025 - ETA: 2s - loss: 2.990 - ETA: 1s - loss: 2.950 - ETA: 0s - loss: 2.915 - 18s 1s/step - loss: 2.8855 - val_loss: 2.2154\n",
      "\n",
      "Epoch 00005: val_loss did not improve from 0.44865\n",
603
      "Epoch 6/100\n",
604
605
606
      "15/15 [==============================] - ETA: 16s - loss: 1.65 - ETA: 15s - loss: 1.81 - ETA: 14s - loss: 1.90 - ETA: 13s - loss: 1.94 - ETA: 12s - loss: 1.92 - ETA: 11s - loss: 1.89 - ETA: 9s - loss: 1.8510 - ETA: 8s - loss: 1.819 - ETA: 7s - loss: 1.798 - ETA: 6s - loss: 1.801 - ETA: 4s - loss: 1.810 - ETA: 3s - loss: 1.827 - ETA: 2s - loss: 1.838 - ETA: 1s - loss: 1.851 - ETA: 0s - loss: 1.862 - 18s 1s/step - loss: 1.8711 - val_loss: 1.7673\n",
      "\n",
      "Epoch 00006: val_loss did not improve from 0.44865\n",
607
      "Epoch 7/100\n",
608
609
610
      "15/15 [==============================] - ETA: 17s - loss: 1.32 - ETA: 15s - loss: 1.19 - ETA: 14s - loss: 1.20 - ETA: 13s - loss: 1.21 - ETA: 12s - loss: 1.21 - ETA: 11s - loss: 1.25 - ETA: 9s - loss: 1.2936 - ETA: 8s - loss: 1.324 - ETA: 7s - loss: 1.345 - ETA: 6s - loss: 1.362 - ETA: 4s - loss: 1.372 - ETA: 3s - loss: 1.382 - ETA: 2s - loss: 1.387 - ETA: 1s - loss: 1.388 - ETA: 0s - loss: 1.387 - 18s 1s/step - loss: 1.3876 - val_loss: 1.6762\n",
      "\n",
      "Epoch 00007: val_loss did not improve from 0.44865\n",
611
      "Epoch 8/100\n",
612
613
614
      "15/15 [==============================] - ETA: 16s - loss: 1.01 - ETA: 15s - loss: 0.92 - ETA: 15s - loss: 1.09 - ETA: 13s - loss: 1.18 - ETA: 12s - loss: 1.21 - ETA: 11s - loss: 1.24 - ETA: 9s - loss: 1.2663 - ETA: 8s - loss: 1.310 - ETA: 7s - loss: 1.359 - ETA: 6s - loss: 1.400 - ETA: 4s - loss: 1.427 - ETA: 3s - loss: 1.442 - ETA: 2s - loss: 1.450 - ETA: 1s - loss: 1.453 - ETA: 0s - loss: 1.455 - 17s 1s/step - loss: 1.4570 - val_loss: 1.6540\n",
      "\n",
      "Epoch 00008: val_loss did not improve from 0.44865\n",
615
      "Epoch 9/100\n",
616
617
618
      "15/15 [==============================] - ETA: 15s - loss: 1.65 - ETA: 14s - loss: 1.99 - ETA: 13s - loss: 2.20 - ETA: 13s - loss: 2.24 - ETA: 11s - loss: 2.36 - ETA: 10s - loss: 2.40 - ETA: 9s - loss: 2.3794 - ETA: 8s - loss: 2.362 - ETA: 7s - loss: 2.330 - ETA: 6s - loss: 2.294 - ETA: 4s - loss: 2.256 - ETA: 3s - loss: 2.220 - ETA: 2s - loss: 2.200 - ETA: 1s - loss: 2.186 - ETA: 0s - loss: 2.173 - 18s 1s/step - loss: 2.1626 - val_loss: 1.6360\n",
      "\n",
      "Epoch 00009: val_loss did not improve from 0.44865\n",
619
      "Epoch 10/100\n",
620
621
622
      "15/15 [==============================] - ETA: 18s - loss: 2.19 - ETA: 16s - loss: 1.91 - ETA: 14s - loss: 1.89 - ETA: 13s - loss: 1.83 - ETA: 12s - loss: 1.75 - ETA: 11s - loss: 1.69 - ETA: 9s - loss: 1.6655 - ETA: 8s - loss: 1.672 - ETA: 7s - loss: 1.669 - ETA: 6s - loss: 1.677 - ETA: 4s - loss: 1.680 - ETA: 3s - loss: 1.683 - ETA: 2s - loss: 1.684 - ETA: 1s - loss: 1.680 - ETA: 0s - loss: 1.676 - 18s 1s/step - loss: 1.6732 - val_loss: 1.6425\n",
      "\n",
      "Epoch 00010: val_loss did not improve from 0.44865\n",
623
      "Epoch 11/100\n",
624
625
626
      "15/15 [==============================] - ETA: 16s - loss: 1.46 - ETA: 16s - loss: 1.77 - ETA: 14s - loss: 1.86 - ETA: 13s - loss: 1.88 - ETA: 12s - loss: 1.87 - ETA: 11s - loss: 1.84 - ETA: 9s - loss: 1.8665 - ETA: 8s - loss: 1.875 - ETA: 7s - loss: 1.880 - ETA: 6s - loss: 1.877 - ETA: 4s - loss: 1.869 - ETA: 3s - loss: 1.858 - ETA: 2s - loss: 1.850 - ETA: 1s - loss: 1.836 - ETA: 0s - loss: 1.825 - 18s 1s/step - loss: 1.8157 - val_loss: 1.7229\n",
      "\n",
      "Epoch 00011: val_loss did not improve from 0.44865\n",
627
      "Epoch 12/100\n",
628
629
630
      "15/15 [==============================] - ETA: 17s - loss: 1.22 - ETA: 15s - loss: 1.22 - ETA: 14s - loss: 1.18 - ETA: 13s - loss: 1.21 - ETA: 12s - loss: 1.32 - ETA: 10s - loss: 1.39 - ETA: 9s - loss: 1.4458 - ETA: 8s - loss: 1.495 - ETA: 7s - loss: 1.547 - ETA: 6s - loss: 1.574 - ETA: 4s - loss: 1.585 - ETA: 3s - loss: 1.586 - ETA: 2s - loss: 1.583 - ETA: 1s - loss: 1.577 - ETA: 0s - loss: 1.571 - 18s 1s/step - loss: 1.5660 - val_loss: 1.5770\n",
      "\n",
      "Epoch 00012: val_loss did not improve from 0.44865\n",
631
      "Epoch 13/100\n",
632
633
634
      "15/15 [==============================] - ETA: 16s - loss: 0.59 - ETA: 16s - loss: 0.64 - ETA: 14s - loss: 0.91 - ETA: 13s - loss: 1.02 - ETA: 12s - loss: 1.04 - ETA: 11s - loss: 1.06 - ETA: 9s - loss: 1.1069 - ETA: 8s - loss: 1.147 - ETA: 7s - loss: 1.181 - ETA: 6s - loss: 1.218 - ETA: 4s - loss: 1.249 - ETA: 3s - loss: 1.277 - ETA: 2s - loss: 1.297 - ETA: 1s - loss: 1.312 - ETA: 0s - loss: 1.325 - 18s 1s/step - loss: 1.3360 - val_loss: 1.5445\n",
      "\n",
      "Epoch 00013: val_loss did not improve from 0.44865\n",
635
      "Epoch 14/100\n",
636
637
638
      "15/15 [==============================] - ETA: 17s - loss: 1.79 - ETA: 15s - loss: 1.63 - ETA: 14s - loss: 1.56 - ETA: 13s - loss: 1.59 - ETA: 12s - loss: 1.61 - ETA: 10s - loss: 1.59 - ETA: 9s - loss: 1.5689 - ETA: 8s - loss: 1.558 - ETA: 7s - loss: 1.543 - ETA: 6s - loss: 1.522 - ETA: 4s - loss: 1.509 - ETA: 3s - loss: 1.502 - ETA: 2s - loss: 1.491 - ETA: 1s - loss: 1.484 - ETA: 0s - loss: 1.480 - 18s 1s/step - loss: 1.4761 - val_loss: 1.5599\n",
      "\n",
      "Epoch 00014: val_loss did not improve from 0.44865\n",
639
      "Epoch 15/100\n",
640
641
642
      "15/15 [==============================] - ETA: 17s - loss: 1.09 - ETA: 15s - loss: 1.22 - ETA: 14s - loss: 1.18 - ETA: 13s - loss: 1.16 - ETA: 12s - loss: 1.17 - ETA: 11s - loss: 1.17 - ETA: 9s - loss: 1.1873 - ETA: 8s - loss: 1.191 - ETA: 7s - loss: 1.195 - ETA: 5s - loss: 1.194 - ETA: 4s - loss: 1.192 - ETA: 3s - loss: 1.195 - ETA: 2s - loss: 1.207 - ETA: 1s - loss: 1.227 - ETA: 0s - loss: 1.244 - 17s 1s/step - loss: 1.2583 - val_loss: 1.5916\n",
      "\n",
      "Epoch 00015: val_loss did not improve from 0.44865\n",
643
      "Epoch 16/100\n",
644
645
646
      "15/15 [==============================] - ETA: 16s - loss: 0.44 - ETA: 16s - loss: 0.93 - ETA: 15s - loss: 1.05 - ETA: 14s - loss: 1.16 - ETA: 13s - loss: 1.24 - ETA: 11s - loss: 1.29 - ETA: 10s - loss: 1.34 - ETA: 8s - loss: 1.3812 - ETA: 7s - loss: 1.395 - ETA: 6s - loss: 1.402 - ETA: 5s - loss: 1.404 - ETA: 3s - loss: 1.400 - ETA: 2s - loss: 1.409 - ETA: 1s - loss: 1.413 - ETA: 0s - loss: 1.416 - 18s 1s/step - loss: 1.4196 - val_loss: 1.5365\n",
      "\n",
      "Epoch 00016: val_loss did not improve from 0.44865\n",
647
      "Epoch 17/100\n",
648
649
650
      "15/15 [==============================] - ETA: 17s - loss: 0.79 - ETA: 16s - loss: 1.10 - ETA: 14s - loss: 1.15 - ETA: 13s - loss: 1.15 - ETA: 12s - loss: 1.19 - ETA: 11s - loss: 1.22 - ETA: 9s - loss: 1.2815 - ETA: 8s - loss: 1.317 - ETA: 7s - loss: 1.333 - ETA: 6s - loss: 1.345 - ETA: 4s - loss: 1.356 - ETA: 3s - loss: 1.360 - ETA: 2s - loss: 1.362 - ETA: 1s - loss: 1.379 - ETA: 0s - loss: 1.393 - 18s 1s/step - loss: 1.4061 - val_loss: 1.5330\n",
      "\n",
      "Epoch 00017: val_loss did not improve from 0.44865\n",
651
      "Epoch 18/100\n",
652
653
654
      "15/15 [==============================] - ETA: 16s - loss: 1.14 - ETA: 17s - loss: 1.01 - ETA: 15s - loss: 0.91 - ETA: 13s - loss: 0.85 - ETA: 12s - loss: 0.83 - ETA: 11s - loss: 0.83 - ETA: 9s - loss: 0.8431 - ETA: 8s - loss: 0.850 - ETA: 7s - loss: 0.863 - ETA: 6s - loss: 0.883 - ETA: 4s - loss: 0.893 - ETA: 3s - loss: 0.922 - ETA: 2s - loss: 0.948 - ETA: 1s - loss: 0.965 - ETA: 0s - loss: 0.980 - 18s 1s/step - loss: 0.9932 - val_loss: 1.5906\n",
      "\n",
      "Epoch 00018: val_loss did not improve from 0.44865\n",
655
      "Epoch 19/100\n",
656
657
658
      "15/15 [==============================] - ETA: 16s - loss: 1.49 - ETA: 16s - loss: 1.58 - ETA: 14s - loss: 1.65 - ETA: 13s - loss: 1.66 - ETA: 12s - loss: 1.68 - ETA: 11s - loss: 1.68 - ETA: 9s - loss: 1.6794 - ETA: 8s - loss: 1.668 - ETA: 7s - loss: 1.684 - ETA: 6s - loss: 1.692 - ETA: 4s - loss: 1.689 - ETA: 3s - loss: 1.679 - ETA: 2s - loss: 1.664 - ETA: 1s - loss: 1.649 - ETA: 0s - loss: 1.635 - 18s 1s/step - loss: 1.6242 - val_loss: 1.5867\n",
      "\n",
      "Epoch 00019: val_loss did not improve from 0.44865\n",
659
      "Epoch 20/100\n",
660
661
662
      "15/15 [==============================] - ETA: 17s - loss: 1.46 - ETA: 15s - loss: 1.85 - ETA: 14s - loss: 1.83 - ETA: 13s - loss: 1.81 - ETA: 12s - loss: 1.76 - ETA: 11s - loss: 1.72 - ETA: 9s - loss: 1.6858 - ETA: 8s - loss: 1.675 - ETA: 7s - loss: 1.656 - ETA: 6s - loss: 1.644 - ETA: 4s - loss: 1.632 - ETA: 3s - loss: 1.620 - ETA: 2s - loss: 1.606 - ETA: 1s - loss: 1.592 - ETA: 0s - loss: 1.580 - 18s 1s/step - loss: 1.5700 - val_loss: 1.5945\n",
      "\n",
      "Epoch 00020: val_loss did not improve from 0.44865\n",
663
      "Epoch 21/100\n",
664
665
666
      "15/15 [==============================] - ETA: 17s - loss: 1.50 - ETA: 15s - loss: 1.15 - ETA: 14s - loss: 1.00 - ETA: 13s - loss: 0.95 - ETA: 12s - loss: 0.91 - ETA: 11s - loss: 0.89 - ETA: 9s - loss: 0.8990 - ETA: 8s - loss: 0.908 - ETA: 7s - loss: 0.939 - ETA: 6s - loss: 0.974 - ETA: 4s - loss: 0.999 - ETA: 3s - loss: 1.018 - ETA: 2s - loss: 1.040 - ETA: 1s - loss: 1.064 - ETA: 0s - loss: 1.085 - 18s 1s/step - loss: 1.1029 - val_loss: 1.6673\n",
      "\n",
      "Epoch 00021: val_loss did not improve from 0.44865\n",
667
      "Epoch 22/100\n",
668
669
670
      "15/15 [==============================] - ETA: 16s - loss: 0.42 - ETA: 15s - loss: 0.80 - ETA: 14s - loss: 0.96 - ETA: 13s - loss: 1.06 - ETA: 11s - loss: 1.11 - ETA: 10s - loss: 1.16 - ETA: 9s - loss: 1.1820 - ETA: 8s - loss: 1.183 - ETA: 6s - loss: 1.178 - ETA: 5s - loss: 1.181 - ETA: 4s - loss: 1.199 - ETA: 3s - loss: 1.209 - ETA: 2s - loss: 1.216 - ETA: 1s - loss: 1.219 - ETA: 0s - loss: 1.223 - 17s 1s/step - loss: 1.2263 - val_loss: 1.5494\n",
      "\n",
      "Epoch 00022: val_loss did not improve from 0.44865\n",
671
      "Epoch 23/100\n",
672
673
674
      "15/15 [==============================] - ETA: 17s - loss: 1.90 - ETA: 15s - loss: 1.56 - ETA: 14s - loss: 1.44 - ETA: 13s - loss: 1.37 - ETA: 12s - loss: 1.40 - ETA: 11s - loss: 1.44 - ETA: 9s - loss: 1.4534 - ETA: 8s - loss: 1.465 - ETA: 7s - loss: 1.468 - ETA: 6s - loss: 1.467 - ETA: 4s - loss: 1.468 - ETA: 3s - loss: 1.466 - ETA: 2s - loss: 1.460 - ETA: 1s - loss: 1.458 - ETA: 0s - loss: 1.455 - 18s 1s/step - loss: 1.4539 - val_loss: 1.5596\n",
      "\n",
      "Epoch 00023: val_loss did not improve from 0.44865\n",
675
      "Epoch 24/100\n",
676
677
678
679
680
681
      "15/15 [==============================] - ETA: 17s - loss: 0.91 - ETA: 15s - loss: 1.11 - ETA: 14s - loss: 1.12 - ETA: 13s - loss: 1.15 - ETA: 12s - loss: 1.14 - ETA: 10s - loss: 1.21 - ETA: 9s - loss: 1.2502 - ETA: 8s - loss: 1.276 - ETA: 7s - loss: 1.306 - ETA: 6s - loss: 1.319 - ETA: 4s - loss: 1.328 - ETA: 3s - loss: 1.329 - ETA: 2s - loss: 1.330 - ETA: 1s - loss: 1.330 - ETA: 0s - loss: 1.330 - 18s 1s/step - loss: 1.3309 - val_loss: 1.8218\n",
      "\n",
      "Epoch 00024: val_loss did not improve from 0.44865\n",
      "Epoch 00024: early stopping\n",
      "1/1 [==============================] - ETA: 0s - loss: 1.116 - 0s 383ms/step - loss: 1.1163\n",
      "Val Score:  1.1162580251693726\n",
682
683
      "====================================================================================\n",
      "\n",
684
685
      "\n",
      "Computation time :  20.706 min\n"
686
     ]
Bannier Delphine's avatar
Bannier Delphine committed
687
688
689
    }
   ],
   "source": [
690
    "from time import time\n",
691
    "from processing.models import fit_and_evaluate\n",
692
    "t0 = time()\n",
693
694
695
696
    "n_folds=3\n",
    "epochs=100\n",
    "batch_size=8\n",
    "\n",
Bannier Delphine's avatar
Bannier Delphine committed
697
    "\n",
698
699
700
701
702
703
704
705
706
707
    "#save the model history in a list after fitting so that we can plot later\n",
    "model_history = [] \n",
    "\n",
    "for i in range(n_folds):\n",
    "    print(\"Training on Fold: \",i+1)\n",
    "    model = None\n",
    "    model = create_cnn(240, 240, 4, regress=True)\n",
    "    model.compile(loss=\"mean_squared_error\", optimizer=opt)\n",
    "    t_x, val_x, t_y, val_y = custom_shuffle_split(trainAttrX ,trainImagesX,trainY,test_size = 0.1)    \n",
    "    model_history.append(fit_and_evaluate(t_x, val_x, t_y, val_y, epochs, batch_size,model,es,cp))\n",
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
    "    print(\"=======\"*12, end=\"\\n\\n\\n\")\n",
    "    \n",
    "print(\"Computation time : \", round((time() - t0)/60,3), \"min\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt \n",
    "\n",
    "plt.title('Loss vs Epochs')\n",
    "plt.plot(model_history[0].history['loss'], label='Training Fold 1')\n",
    "plt.plot(model_history[1].history['loss'], label='Training Fold 2')\n",
    "plt.plot(model_history[2].history['loss'], label='Training Fold 3')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.models import load_model\n",
    "\n",
    "model = None\n",
    "model = load_model('clean_notebooks/cnn_superposition_4C.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         [(None, 240, 240, 4)]     0         \n",
      "_________________________________________________________________\n",
      "conv2d (Conv2D)              (None, 240, 240, 32)      1184      \n",
      "_________________________________________________________________\n",
      "activation (Activation)      (None, 240, 240, 32)      0         \n",
      "_________________________________________________________________\n",
      "batch_normalization (BatchNo (None, 240, 240, 32)      128       \n",
      "_________________________________________________________________\n",
      "max_pooling2d (MaxPooling2D) (None, 120, 120, 32)      0         \n",
      "_________________________________________________________________\n",
      "conv2d_1 (Conv2D)            (None, 120, 120, 64)      18496     \n",
      "_________________________________________________________________\n",
      "activation_1 (Activation)    (None, 120, 120, 64)      0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 120, 120, 64)      256       \n",
      "_________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2 (None, 60, 60, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_2 (Conv2D)            (None, 60, 60, 128)       73856     \n",
      "_________________________________________________________________\n",
      "activation_2 (Activation)    (None, 60, 60, 128)       0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 60, 60, 128)       512       \n",
      "_________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2 (None, 30, 30, 128)       0         \n",
      "_________________________________________________________________\n",
      "flatten (Flatten)            (None, 115200)            0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 16)                1843216   \n",
      "_________________________________________________________________\n",
      "activation_3 (Activation)    (None, 16)                0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_3 (Batch (None, 16)                64        \n",
      "_________________________________________________________________\n",
      "dropout (Dropout)            (None, 16)                0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 4)                 68        \n",
      "_________________________________________________________________\n",
      "activation_4 (Activation)    (None, 4)                 0         \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 4)                 0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 1)                 5         \n",
      "=================================================================\n",
      "Total params: 1,937,785\n",
      "Trainable params: 1,937,305\n",
      "Non-trainable params: 480\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# F - Postprocessing : Evaluation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_cnn(model,df, trainImagesX, trainY,sc):\n",
    "    logging.info(\"predicting ...\")\n",
    "    preds = model.predict(trainImagesX)\n",
    "    diff = preds.flatten() - trainY\n",
    "    percentDiff = (diff / (trainY)) * 100\n",
    "    absPercentDiff = np.abs(percentDiff)\n",
    "    mean = np.mean(absPercentDiff)\n",
    "    std = np.std(absPercentDiff)\n",
    "    print(\"avg. FVC: {}, std FVC {}\".format(df[\"FVC\"].mean(), df[\"FVC\"].std()))\n",
    "    print(\"mean difference : {:.2f}%, std: {:.2f}%\".format(mean, std))\n",
    "    return preds,diff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:predicting ...\n",
      "INFO:NumExpr defaulting to 8 threads.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "avg. FVC: 2772.7329545454545, std FVC 835.8620202226257\n",
      "mean difference : 105.51%, std: 39.44%\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1.0078867767359692"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from postprocessing.evaluate import compute_score\n",
    "\n",
    "preds_train,diff = evaluate_cnn(model, df, trainImagesX, trainY, sc)\n",
    "np.sqrt(np.mean(diff*diff))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5/5 [==============================] - ETA: 4s - loss: 0.836 - ETA: 2s - loss: 1.031 - ETA: 1s - loss: 0.955 - ETA: 0s - loss: 1.029 - ETA: 0s - loss: 1.015 - 4s 635ms/step - loss: 1.0158\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1.0158357620239258"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(trainImagesX, trainY)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:predicting ...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "avg. FVC: 2772.7329545454545, std FVC 835.8620202226257\n",
      "mean difference : 99.81%, std: 22.51%\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9023717951038608"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "preds,diff = evaluate_cnn(model, df, testImagesX, testY, sc)\n",
    "np.sqrt(np.mean(diff*diff))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2/2 [==============================] - ETA: 0s - loss: 0.807 - ETA: 0s - loss: 0.814 - 1s 155ms/step - loss: 0.8143\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.8142749071121216"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(testImagesX, testY)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# G - Postprocessing : Competition score"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dropout 0.2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(140, 240, 240, 4)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainImagesX.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "from postprocessing.dropout_predictions import create_dropout_predict_function\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "from postprocessing.evaluate import compute_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[<tf.Tensor 'input_1_2:0' shape=(None, 240, 240, 4) dtype=float32>]\n"
     ]
    }
   ],
   "source": [
    "tf.compat.v1.disable_eager_execution()\n",
    "\n",
    "dropout = 0.2\n",
    "num_iter = 20\n",
    "input_data=trainImagesX\n",
    "input_data = np.asarray(input_data).reshape(140,240,240,4)\n",
    "num_samples = input_data.shape[0]\n",
    "\n",
    "predict_with_dropout = create_dropout_predict_function(model, dropout)\n",
    "\n",
    "predictions = np.zeros((num_samples, num_iter))\n",
    "for i in range(num_iter):\n",
    "    predictions[:,i] = predict_with_dropout([input_data,1])[0].reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "FVC_pred = sc.inverse_transform(predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.std(FVC_pred, axis = 1), bins=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:NumExpr defaulting to 8 threads.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "diff_fvc = (np.mean(FVC_pred,axis=1) - sc.inverse_transform(trainY))\n",
    "diff = (np.mean(predictions,axis=1) - trainY)\n",
    "plt.hist(diff_fvc, bins=30)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  811530.4116128426\n",
      "RMSE :  900.8498274478619\n"
     ]
    }
   ],
   "source": [
    "MSE = np.mean(diff_fvc*diff_fvc)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  1.121575235764564\n",
      "RMSE :  1.0590444918720667\n"
     ]
    }
   ],
   "source": [
    "MSE = np.mean(diff*diff)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-10.17400081066618"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "compute_score(trainY,np.mean(FVC_pred,axis=1),np.std(FVC_pred,axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(36, 240, 240, 4)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testImagesX.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_data=testImagesX\n",
    "input_data = np.asarray(input_data).reshape(36,240,240,4)\n",
    "num_samples = input_data.shape[0]\n",
    "\n",
    "predictions = np.zeros((num_samples, num_iter))\n",
    "for i in range(num_iter):\n",
    "    predictions[:,i] = predict_with_dropout([input_data,1])[0].reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "FVC_pred = sc.inverse_transform(predictions)\n",
    "plt.hist(np.std(FVC_pred, axis = 1), bins=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAD4CAYAAADFAawfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAN+ElEQVR4nO3df4xddZ3G8eexBVxZXH70ioQ6Tsm6RDRZwRuWjS7ZBcVCXViymJRERdfNJBvZaKIxY/gH4z/oZje7ZolkVFxdEVTWKqFRKCtoTKQ6AwVaSpdSu4EGaREVZU2x7sc/7nfa63Cm99zpOfd+yrxfyc2cOefce565PfP0zPecM+OIEAAgr5eMOwAA4PAoagBIjqIGgOQoagBIjqIGgORWtvGiq1atisnJyTZeGgBelObm5p6OiE7VslaKenJyUrOzs228NAC8KNn+38WWMfQBAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQ3MCitn2m7S19j2dtf3AE2QAAqnEddUTskPQGSbK9QtIeSRvajQUAmDfs0MeFkh6LiEUvzAYANGvYOxPXS7q5aoHtKUlTkjQxMXGEsYDhTE5vrLXe7uvWtZwEaF7tI2rbx0q6VNLXqpZHxExEdCOi2+lU3q4OAFiCYYY+LpZ0X0Q81VYYAMALDVPUV2qRYQ8AQHtqFbXt4yW9VdLX240DAFio1snEiHhO0iktZwEAVODORABIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOQoagBIjqIGgOTq/hXyE23favsR29tt/3nbwQAAPbX+Crmkf5P07Yi4wvaxkl7WYiYAQJ+BRW37jySdL+k9khQRz0t6vt1YAIB5dYY+1kjaJ+nztu+3/Vnbxy9cyfaU7Vnbs/v27Ws8KAAsV3WKeqWkcyR9OiLOlvScpOmFK0XETER0I6Lb6XQajgkAy1edon5C0hMRsbl8fqt6xQ0AGIGBRR0RP5H0uO0zy6wLJT3caioAwEF1r/r4R0k3lSs+dkl6b3uRAAD9ahV1RGyR1G03CgCgCncmAkByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0Bytf4Kue3dkn4p6beSDkQEf5EcAEakVlEXfxURT7eWBABQiaEPAEiublGHpDttz9meqlrB9pTtWduz+/btay4hACxzdYv6zRFxjqSLJb3f9vkLV4iImYjoRkS30+k0GhIAlrNaRR0Re8rHvZI2SDq3zVAAgEMGFrXt422fMD8t6SJJW9sOBgDoqXPVx6mSNtieX//LEfHtVlMBAA4aWNQRsUvSn44gCwCgApfnAUByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJEdRA0ByFDUAJFe7qG2vsH2/7dvbDAQA+H3DHFF/QNL2toIAAKrVKmrbqyWtk/TZduMAABZaWXO9f5X0EUknLLaC7SlJU5I0MTFxxMGAF5PJ6Y2119193boWk+BoNPCI2vbbJe2NiLnDrRcRMxHRjYhup9NpLCAALHd1hj7eJOlS27sl3SLpAttfajUVAOCggUUdER+NiNURMSlpvaTvRMQ7W08GAJDEddQAkF7dk4mSpIi4R9I9rSQBAFTiiBoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkqOoASA5ihoAkhtY1LZfavuHth+wvc32x0YRDADQs7LGOvslXRARv7J9jKTv2/5WRNzbcjYAgGoUdUSEpF+VT48pj2gzFADgkDpH1LK9QtKcpD+WdH1EbK5YZ0rSlCRNTEw0mRFIa3J647gjYBmodTIxIn4bEW+QtFrSubZfX7HOTER0I6Lb6XQajgkAy9dQV31ExM8l3S1pbStpAAAvUOeqj47tE8v0H0h6q6RHWs4FACjqjFGfJukLZZz6JZK+GhG3txsLADCvzlUfD0o6ewRZAAAVuDMRAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEgOYoaAJKjqAEguYFFbftVtu+2/bDtbbY/MIpgAICegX+FXNIBSR+KiPtsnyBpzvamiHi45WwAANU4oo6IJyPivjL9S0nbJZ3edjAAQM9QY9S2JyWdLWlzK2kAAC9QZ+hDkmT7DyX9l6QPRsSzFcunJE1J0sTERGMB0Z7J6Y211tt93bpGX2+Y12xa01/zOA3zftdxNHzN4zLu/abWEbXtY9Qr6Zsi4utV60TETER0I6Lb6XSazAgAy1qdqz4s6XOStkfEv7QfCQDQr84R9ZskvUvSBba3lMclLecCABQDx6gj4vuSPIIsAIAK3JkIAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMlR1ACQHEUNAMkNLGrbN9rea3vrKAIBAH5fnSPq/5C0tuUcAIBFDCzqiPiepGdGkAUAUGFlUy9ke0rSlCRNTEws+XUmpzfWWm/3deuWvI1M2x1G3Yw4cuN8r8e17aa/B9r4Opre9ji/n4fR2MnEiJiJiG5EdDudTlMvCwDLHld9AEByFDUAJFfn8rybJf1A0pm2n7D9vvZjAQDmDTyZGBFXjiIIAKAaQx8AkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkFytora91vYO2zttT7cdCgBwyMCitr1C0vWSLpZ0lqQrbZ/VdjAAQE+dI+pzJe2MiF0R8bykWyRd1m4sAMA8R8ThV7CvkLQ2Iv6+fP4uSX8WEVcvWG9K0lT59ExJO5qPO9AqSU+PYbvDIGMzyNgMMjajiYyvjohO1YKVR/jCB0XEjKSZpl5vKWzPRkR3nBkGIWMzyNgMMjaj7Yx1hj72SHpV3+eryzwAwAjUKeofSXqN7TW2j5W0XtJt7cYCAMwbOPQREQdsXy3pDkkrJN0YEdtaT7Y0Yx16qYmMzSBjM8jYjFYzDjyZCAAYL+5MBIDkKGoASO6oKWrb/2T7EdsP2t5g+8S+ZR8tt7fvsP22vvmVt76XE6Oby/yvlJOkTWR8h+1ttv/fdrdv/qTtX9veUh439C17o+2HSpZP2XaZf7LtTbYfLR9PajNjWZbifazIfK3tPX3v3yVLzTwq497+giy7yz62xfZsmVe5f7nnUyX3g7bPaSnTjbb32t7aN2/oTLavKus/avuqEWQcz74YEUfFQ9JFklaW6U9I+kSZPkvSA5KOk7RG0mPqnfRcUabPkHRsWees8pyvSlpfpm+Q9A8NZXytejf73COp2zd/UtLWRZ7zQ0nnSbKkb0m6uMz/pKTpMj09//W2mDHN+1iR+VpJH66YP3TmEe2rY91+RZ7dklYtmFe5f0m6pOyHLvvl5pYynS/pnP7vi2EzSTpZ0q7y8aQyfVLLGceyLx41R9QRcWdEHCif3qve9dxS73b2WyJif0T8WNJO9W57r7z1vRyxXiDp1vL8L0j6m4Yybo+I2ndk2j5N0ssj4t7o/Wt/sS/LZSXbqDKmeR+HMFTmEeYa9/brWGz/ukzSF6PnXkknlv20URHxPUnPHGGmt0naFBHPRMTPJG2StLbljItpdV88aop6gb9T739YSTpd0uN9y54o8xabf4qkn/eV/vz8tq2xfb/t79r+izLv9LL9hRkl6dSIeLJM/0TSqS3ny/4+Xl1+7L2xbxho2MyjMu7tLxSS7rQ9596vepAW37/GmX3YTOPKOvJ9sbFbyJtg+y5Jr6xYdE1EfLOsc42kA5JuGmW2eXUyVnhS0kRE/NT2GyV9w/br6m4zIsJ27esol5hxrA6XWdKnJX1cvcL5uKR/Vu8/a9Tz5ojYY/sVkjbZfqR/4bD71yhkzFSMZV9MVdQR8ZbDLbf9Hklvl3RhGSqQDn+Le9X8n6r3o9PKcjQ41C3xgzIu8pz9kvaX6Tnbj0n6k7Ld1X2r9md5yvZpEfFk+TFvb5sZNeL3caG6mW1/RtLtS8w8Kql+7UJE7Ckf99reoN6P44vtX+PMPmymPZL+csH8e9oMGBFPzU+Pcl88aoY+bK+V9BFJl0bE//Utuk3SetvH2V4j6TXqnaCrvPW9FPzdkq4oz79KUqtHmbY77v1eb9k+o2TcVX7Me9b2eWXM9919WW4r2UaSUYnfxwVjpJdLmj8LP1TmNrItYtzbP8j28bZPmJ9W76T8Vi2+f90m6d3lSovzJP2ibziibcNmukPSRbZPKkMQF5V5rRnbvtjUGdK2H+oNzj8uaUt53NC37Br1zqzuULlqIg6dLf6fsuyavvlnlDdxp6SvSTquoYyXqzcGtV/SU5LuKPP/VtK2kvs+SX/d95xu+cd+TNK/69DdoqdI+m9Jj0q6S9LJbWbM9D5WZP5PSQ9JerDs5KctNfMI99exbn/Bv9ED5bFtPsti+5d6V1ZcX3I/pL4rgxrOdbN6Q4K/Kfvj+5aSSb1hh53l8d4RZBzLvsgt5ACQ3FEz9AEAyxVFDQDJUdQAkBxFDQDJUdQAkBxFDQDJUdQAkNzvABncAVIz4aJAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "diff_fvc = (np.mean(FVC_pred,axis=1) - sc.inverse_transform(testY))\n",
    "diff = (np.mean(predictions,axis=1) - testY)\n",
    "plt.hist(diff_fvc, bins=30)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  655212.3156046097\n",
      "RMSE :  809.4518612027584\n"
     ]
    }
   ],
   "source": [
    "MSE = np.mean(diff_fvc*diff_fvc)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  0.9055358823701997\n",
      "RMSE :  0.9515964913608076\n"
     ]
    }
   ],
   "source": [
    "MSE = np.mean(diff*diff)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-10.4494482791877"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "compute_score(testY,np.mean(FVC_pred,axis=1),np.std(FVC_pred,axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dropout 0.4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[<tf.Tensor 'input_1_3:0' shape=(None, 240, 240, 4) dtype=float32>]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "tf.compat.v1.disable_eager_execution()\n",
    "\n",
    "dropout = 0.4\n",
    "num_iter = 20\n",
    "input_data=trainImagesX\n",
    "input_data = np.asarray(input_data).reshape(140,240,240,4)\n",
    "num_samples = input_data.shape[0]\n",
    "\n",
    "predict_with_dropout = create_dropout_predict_function(model, dropout)\n",
    "\n",
    "predictions = np.zeros((num_samples, num_iter))\n",
    "for i in range(num_iter):\n",
    "    predictions[:,i] = predict_with_dropout([input_data,1])[0].reshape(-1)"
Bannier Delphine's avatar
Bannier Delphine committed
1387
1388
1389
1390
   ]
  },
  {
   "cell_type": "code",
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "FVC_pred = sc.inverse_transform(predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
Bannier Delphine's avatar
Bannier Delphine committed
1401
1402
   "metadata": {},
   "outputs": [
1403
1404
    {
     "data": {
1405
      "image/png": "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\n",
1406
      "text/plain": [
Bannier Delphine's avatar
Bannier Delphine committed
1407
       "<Figure size 432x288 with 1 Axes>"
1408
1409
      ]
     },
Bannier Delphine's avatar
Bannier Delphine committed
1410
1411
1412
1413
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
1414
1415
1416
    }
   ],
   "source": [
1417
    "plt.hist(np.std(FVC_pred, axis = 1), bins=15)\n",
1418
    "plt.show()"
1419
1420
   ]
  },
1421
1422
  {
   "cell_type": "code",
1423
   "execution_count": 36,
1424
   "metadata": {},
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
1439
   "source": [
1440
1441
1442
1443
    "diff_fvc = (np.mean(FVC_pred,axis=1) - sc.inverse_transform(trainY))\n",
    "diff = (np.mean(predictions,axis=1) - trainY)\n",
    "plt.hist(diff_fvc, bins=30)\n",
    "plt.show()"
1444
1445
1446
1447
   ]
  },
  {
   "cell_type": "code",
1448
   "execution_count": 37,
Bannier Delphine's avatar
Bannier Delphine committed
1449
1450
1451
   "metadata": {},
   "outputs": [
    {
1452
     "name": "stdout",
Bannier Delphine's avatar
Bannier Delphine committed
1453
1454
     "output_type": "stream",
     "text": [
1455
1456
      "MSE :  787815.6034817325\n",
      "RMSE :  887.5897720691313\n"
Bannier Delphine's avatar
Bannier Delphine committed
1457
     ]
1458
1459
1460
    }
   ],
   "source": [
1461
1462
1463
1464
    "MSE = np.mean(diff_fvc*diff_fvc)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
1465
1466
1467
1468
   ]
  },
  {
   "cell_type": "code",
1469
   "execution_count": 38,
1470
1471
   "metadata": {},
   "outputs": [
Bannier Delphine's avatar
Bannier Delphine committed
1472
    {
1473
1474
1475
1476
1477
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  1.0888001959876819\n",
      "RMSE :  1.0434558907724283\n"
Bannier Delphine's avatar
Bannier Delphine committed
1478
1479
1480
1481
     ]
    }
   ],
   "source": [
1482
1483
1484
1485
    "MSE = np.mean(diff*diff)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
Bannier Delphine's avatar
Bannier Delphine committed
1486
1487
1488
1489
   ]
  },
  {
   "cell_type": "code",
1490
   "execution_count": 39,
Bannier Delphine's avatar
Bannier Delphine committed
1491
1492
1493
1494
1495
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
1496
       "-9.192669005522239"
Bannier Delphine's avatar
Bannier Delphine committed
1497
1498
      ]
     },
1499
     "execution_count": 39,
Bannier Delphine's avatar
Bannier Delphine committed
1500
1501
1502
1503
1504
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
1505
    "compute_score(trainY,np.mean(FVC_pred,axis=1),np.std(FVC_pred,axis=1))"
Bannier Delphine's avatar
Bannier Delphine committed
1506
1507
   ]
  },
1508
1509
1510
1511
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
1512
    "**Test score**"
1513
1514
1515
1516
   ]
  },
  {
   "cell_type": "code",
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_data=testImagesX\n",
    "input_data = np.asarray(input_data).reshape(36,240,240,4)\n",
    "num_samples = input_data.shape[0]\n",
    "\n",
    "predictions = np.zeros((num_samples, num_iter))\n",
    "for i in range(num_iter):\n",
    "    predictions[:,i] = predict_with_dropout([input_data,1])[0].reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
1533
   "metadata": {},
Bannier Delphine's avatar
Bannier Delphine committed
1534
   "outputs": [
1535
1536
    {
     "data": {
1537
      "image/png": "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\n",
1538
      "text/plain": [
1539
       "<Figure size 432x288 with 1 Axes>"
1540
1541
      ]
     },
1542
1543
1544
1545
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
Bannier Delphine's avatar
Bannier Delphine committed
1546
1547
1548
    }
   ],
   "source": [
1549
1550
1551
    "FVC_pred = sc.inverse_transform(predictions)\n",
    "plt.hist(np.std(FVC_pred, axis = 1), bins=15)\n",
    "plt.show()"
Bannier Delphine's avatar
Bannier Delphine committed
1552
1553
1554
1555
   ]
  },
  {
   "cell_type": "code",
1556
   "execution_count": 42,
Bannier Delphine's avatar
Bannier Delphine committed
1557
1558
1559
1560
   "metadata": {},
   "outputs": [
    {
     "data": {
1561
      "image/png": "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\n",
Bannier Delphine's avatar
Bannier Delphine committed
1562
      "text/plain": [
1563
       "<Figure size 432x288 with 1 Axes>"
Bannier Delphine's avatar
Bannier Delphine committed
1564
1565
      ]
     },
1566
1567
1568
1569
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
Bannier Delphine's avatar
Bannier Delphine committed
1570
1571
    }
   ],
1572
   "source": [
1573
1574
1575
1576
    "diff_fvc = (np.mean(FVC_pred,axis=1) - sc.inverse_transform(testY))\n",
    "diff = (np.mean(predictions,axis=1) - testY)\n",
    "plt.hist(diff_fvc, bins=30)\n",
    "plt.show()"
1577
1578
1579
   ]
  },
  {
1580
1581
   "cell_type": "code",
   "execution_count": 43,
1582
   "metadata": {},
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  681588.1555234643\n",
      "RMSE :  825.583524256307\n"
     ]
    }
   ],
1593
   "source": [
1594
1595
1596
1597
    "MSE = np.mean(diff_fvc*diff_fvc)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
1598
1599
   ]
  },
1600
1601
  {
   "cell_type": "code",
1602
   "execution_count": 44,
1603
   "metadata": {},
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE :  0.9419885999173889\n",
      "RMSE :  0.970560971767044\n"
     ]
    }
   ],
1614
   "source": [
1615
1616
1617
1618
    "MSE = np.mean(diff*diff)\n",
    "RMSE = np.sqrt(MSE)\n",
    "print(\"MSE : \",MSE)\n",
    "print(\"RMSE : \", RMSE)"
1619
1620
1621
1622
   ]
  },
  {
   "cell_type": "code",
1623
   "execution_count": 45,
1624
1625
1626
1627
1628
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
1629
       "-9.239719545564624"
1630
1631
      ]
     },
1632
     "execution_count": 45,
1633
1634
1635
1636
1637
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
1638
    "compute_score(testY,np.mean(FVC_pred,axis=1),np.std(FVC_pred,axis=1))"
1639
1640
1641
1642
1643
1644
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
1645
    "## Dropout 0.5"
1646
1647
1648
1649
   ]
  },
  {
   "cell_type": "code",
1650
   "execution_count": 46,
1651
1652
1653
1654
1655
1656
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
1657
      "[<tf.Tensor 'input_1_4:0' shape=(None, 240, 240, 4) dtype=float32>]\n"
1658
1659
1660
1661
     ]
    }
   ],
   "source": [
1662
    "\n",
1663
1664
    "tf.compat.v1.disable_eager_execution()\n",
    "\n",
1665
    "dropout = 0.5\n",
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
    "num_iter = 20\n",
    "input_data=trainImagesX\n",
    "input_data = np.asarray(input_data).reshape(140,240,240,4)\n",
    "num_samples = input_data.shape[0]\n",
    "\n",
    "predict_with_dropout = create_dropout_predict_function(model, dropout)\n",
    "\n",
    "predictions = np.zeros((num_samples, num_iter))\n",
    "for i in range(num_iter):\n",
    "    predictions[:,i] = predict_with_dropout([input_data,1])[0].reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
1680
   "execution_count": 47,
1681
1682
1683
1684
1685
1686
1687
1688
   "metadata": {},
   "outputs": [],
   "source": [
    "FVC_pred = sc.inverse_transform(predictions)"
   ]
  },
  {
   "cell_type": "code",
1689
   "execution_count": 48,
1690
1691
1692
1693
   "metadata": {},
   "outputs": [
    {
     "data": {
1694
      "image/png": "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