Switch to unified view

a b/lung-diesease-prediction-using-transfer-learning.ipynb
1
{
2
 "cells": [
3
  {
4
   "cell_type": "markdown",
5
   "id": "09fd3030",
6
   "metadata": {
7
    "papermill": {
8
     "duration": 0.028076,
9
     "end_time": "2021-08-16T05:06:05.145059",
10
     "exception": false,
11
     "start_time": "2021-08-16T05:06:05.116983",
12
     "status": "completed"
13
    },
14
    "tags": []
15
   },
16
   "source": [
17
    "### ***Loading the Necessary Libraries***"
18
   ]
19
  },
20
  {
21
   "cell_type": "code",
22
   "execution_count": 1,
23
   "id": "4b3425c5",
24
   "metadata": {
25
    "execution": {
26
     "iopub.execute_input": "2021-08-16T05:06:05.283511Z",
27
     "iopub.status.busy": "2021-08-16T05:06:05.282681Z",
28
     "iopub.status.idle": "2021-08-16T05:06:10.491936Z",
29
     "shell.execute_reply": "2021-08-16T05:06:10.492406Z",
30
     "shell.execute_reply.started": "2021-08-16T04:09:38.337295Z"
31
    },
32
    "papermill": {
33
     "duration": 5.32112,
34
     "end_time": "2021-08-16T05:06:10.492715",
35
     "exception": false,
36
     "start_time": "2021-08-16T05:06:05.171595",
37
     "status": "completed"
38
    },
39
    "tags": []
40
   },
41
   "outputs": [],
42
   "source": [
43
    "from keras.layers import Input, Dense, Flatten\n",
44
    "from keras.models import Model, Sequential\n",
45
    "from keras.applications.resnet50 import ResNet50, preprocess_input\n",
46
    "from keras.preprocessing import image\n",
47
    "from keras.preprocessing.image import ImageDataGenerator\n",
48
    "import numpy as np\n",
49
    "from glob import glob\n",
50
    "import matplotlib.pyplot as plt"
51
   ]
52
  },
53
  {
54
   "cell_type": "markdown",
55
   "id": "546e4190",
56
   "metadata": {
57
    "papermill": {
58
     "duration": 0.026496,
59
     "end_time": "2021-08-16T05:06:10.545796",
60
     "exception": false,
61
     "start_time": "2021-08-16T05:06:10.519300",
62
     "status": "completed"
63
    },
64
    "tags": []
65
   },
66
   "source": [
67
    "#### ***Geting the Datasets Path***"
68
   ]
69
  },
70
  {
71
   "cell_type": "code",
72
   "execution_count": 2,
73
   "id": "4e88794c",
74
   "metadata": {
75
    "execution": {
76
     "iopub.execute_input": "2021-08-16T05:06:10.603466Z",
77
     "iopub.status.busy": "2021-08-16T05:06:10.602555Z",
78
     "iopub.status.idle": "2021-08-16T05:06:10.606013Z",
79
     "shell.execute_reply": "2021-08-16T05:06:10.605459Z",
80
     "shell.execute_reply.started": "2021-08-16T04:09:38.345320Z"
81
    },
82
    "papermill": {
83
     "duration": 0.034888,
84
     "end_time": "2021-08-16T05:06:10.606135",
85
     "exception": false,
86
     "start_time": "2021-08-16T05:06:10.571247",
87
     "status": "completed"
88
    },
89
    "tags": []
90
   },
91
   "outputs": [],
92
   "source": [
93
    "train_path='../input/chest-xray-pneumonia/chest_xray/train'\n",
94
    "val_path='../input/chest-xray-pneumonia/chest_xray/val'\n",
95
    "test_path='../input/chest-xray-pneumonia/chest_xray/test'\n",
96
    "\n",
97
    "image_shape=[224, 224]"
98
   ]
99
  },
100
  {
101
   "cell_type": "markdown",
102
   "id": "8b04761c",
103
   "metadata": {
104
    "papermill": {
105
     "duration": 0.025203,
106
     "end_time": "2021-08-16T05:06:10.656383",
107
     "exception": false,
108
     "start_time": "2021-08-16T05:06:10.631180",
109
     "status": "completed"
110
    },
111
    "tags": []
112
   },
113
   "source": [
114
    "#### ***ResNet model***"
115
   ]
116
  },
117
  {
118
   "cell_type": "code",
119
   "execution_count": 3,
120
   "id": "bc5b36cc",
121
   "metadata": {
122
    "execution": {
123
     "iopub.execute_input": "2021-08-16T05:06:10.716140Z",
124
     "iopub.status.busy": "2021-08-16T05:06:10.715376Z",
125
     "iopub.status.idle": "2021-08-16T05:06:16.062417Z",
126
     "shell.execute_reply": "2021-08-16T05:06:16.061571Z",
127
     "shell.execute_reply.started": "2021-08-16T04:09:38.358999Z"
128
    },
129
    "papermill": {
130
     "duration": 5.380965,
131
     "end_time": "2021-08-16T05:06:16.062584",
132
     "exception": false,
133
     "start_time": "2021-08-16T05:06:10.681619",
134
     "status": "completed"
135
    },
136
    "tags": []
137
   },
138
   "outputs": [
139
    {
140
     "name": "stdout",
141
     "output_type": "stream",
142
     "text": [
143
      "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5\n",
144
      "94773248/94765736 [==============================] - 1s 0us/step\n"
145
     ]
146
    },
147
    {
148
     "data": {
149
      "text/plain": [
150
       "<tensorflow.python.keras.engine.functional.Functional at 0x7f6da5dafd50>"
151
      ]
152
     },
153
     "execution_count": 3,
154
     "metadata": {},
155
     "output_type": "execute_result"
156
    }
157
   ],
158
   "source": [
159
    "resnet=ResNet50(input_shape=image_shape + [3], weights='imagenet', include_top=False) #Without top layers\n",
160
    "resnet"
161
   ]
162
  },
163
  {
164
   "cell_type": "markdown",
165
   "id": "d34fb950",
166
   "metadata": {
167
    "papermill": {
168
     "duration": 0.034955,
169
     "end_time": "2021-08-16T05:06:16.131767",
170
     "exception": false,
171
     "start_time": "2021-08-16T05:06:16.096812",
172
     "status": "completed"
173
    },
174
    "tags": []
175
   },
176
   "source": [
177
    "##### **No train for the RestNet layers as they are pretrained**"
178
   ]
179
  },
180
  {
181
   "cell_type": "code",
182
   "execution_count": 4,
183
   "id": "8a367913",
184
   "metadata": {
185
    "execution": {
186
     "iopub.execute_input": "2021-08-16T05:06:16.211391Z",
187
     "iopub.status.busy": "2021-08-16T05:06:16.210417Z",
188
     "iopub.status.idle": "2021-08-16T05:06:16.215176Z",
189
     "shell.execute_reply": "2021-08-16T05:06:16.214625Z",
190
     "shell.execute_reply.started": "2021-08-16T04:09:39.666034Z"
191
    },
192
    "papermill": {
193
     "duration": 0.049822,
194
     "end_time": "2021-08-16T05:06:16.215333",
195
     "exception": false,
196
     "start_time": "2021-08-16T05:06:16.165511",
197
     "status": "completed"
198
    },
199
    "tags": []
200
   },
201
   "outputs": [],
202
   "source": [
203
    "for layers in resnet.layers:\n",
204
    "    layers.trainable=False"
205
   ]
206
  },
207
  {
208
   "cell_type": "markdown",
209
   "id": "be827032",
210
   "metadata": {
211
    "papermill": {
212
     "duration": 0.034619,
213
     "end_time": "2021-08-16T05:06:16.283430",
214
     "exception": false,
215
     "start_time": "2021-08-16T05:06:16.248811",
216
     "status": "completed"
217
    },
218
    "tags": []
219
   },
220
   "source": [
221
    "##### **Finding the output classes**"
222
   ]
223
  },
224
  {
225
   "cell_type": "code",
226
   "execution_count": 5,
227
   "id": "208ea9c8",
228
   "metadata": {
229
    "execution": {
230
     "iopub.execute_input": "2021-08-16T05:06:16.354936Z",
231
     "iopub.status.busy": "2021-08-16T05:06:16.354269Z",
232
     "iopub.status.idle": "2021-08-16T05:06:16.378411Z",
233
     "shell.execute_reply": "2021-08-16T05:06:16.377746Z",
234
     "shell.execute_reply.started": "2021-08-16T04:09:39.677612Z"
235
    },
236
    "papermill": {
237
     "duration": 0.061179,
238
     "end_time": "2021-08-16T05:06:16.378608",
239
     "exception": false,
240
     "start_time": "2021-08-16T05:06:16.317429",
241
     "status": "completed"
242
    },
243
    "tags": []
244
   },
245
   "outputs": [
246
    {
247
     "data": {
248
      "text/plain": [
249
       "['../input/chest-xray-pneumonia/chest_xray/train/PNEUMONIA',\n",
250
       " '../input/chest-xray-pneumonia/chest_xray/train/NORMAL']"
251
      ]
252
     },
253
     "execution_count": 5,
254
     "metadata": {},
255
     "output_type": "execute_result"
256
    }
257
   ],
258
   "source": [
259
    "classes=glob('../input/chest-xray-pneumonia/chest_xray/train/*')\n",
260
    "classes"
261
   ]
262
  },
263
  {
264
   "cell_type": "markdown",
265
   "id": "ab7424d3",
266
   "metadata": {
267
    "papermill": {
268
     "duration": 0.066458,
269
     "end_time": "2021-08-16T05:06:16.491582",
270
     "exception": false,
271
     "start_time": "2021-08-16T05:06:16.425124",
272
     "status": "completed"
273
    },
274
    "tags": []
275
   },
276
   "source": [
277
    "##### **Making the top layers**"
278
   ]
279
  },
280
  {
281
   "cell_type": "code",
282
   "execution_count": 6,
283
   "id": "85d8235e",
284
   "metadata": {
285
    "execution": {
286
     "iopub.execute_input": "2021-08-16T05:06:16.606301Z",
287
     "iopub.status.busy": "2021-08-16T05:06:16.605186Z",
288
     "iopub.status.idle": "2021-08-16T05:06:16.765023Z",
289
     "shell.execute_reply": "2021-08-16T05:06:16.766808Z",
290
     "shell.execute_reply.started": "2021-08-16T04:09:39.692790Z"
291
    },
292
    "papermill": {
293
     "duration": 0.207924,
294
     "end_time": "2021-08-16T05:06:16.767448",
295
     "exception": false,
296
     "start_time": "2021-08-16T05:06:16.559524",
297
     "status": "completed"
298
    },
299
    "tags": []
300
   },
301
   "outputs": [
302
    {
303
     "name": "stdout",
304
     "output_type": "stream",
305
     "text": [
306
      "Model: \"model\"\n",
307
      "__________________________________________________________________________________________________\n",
308
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
309
      "==================================================================================================\n",
310
      "input_1 (InputLayer)            [(None, 224, 224, 3) 0                                            \n",
311
      "__________________________________________________________________________________________________\n",
312
      "conv1_pad (ZeroPadding2D)       (None, 230, 230, 3)  0           input_1[0][0]                    \n",
313
      "__________________________________________________________________________________________________\n",
314
      "conv1_conv (Conv2D)             (None, 112, 112, 64) 9472        conv1_pad[0][0]                  \n",
315
      "__________________________________________________________________________________________________\n",
316
      "conv1_bn (BatchNormalization)   (None, 112, 112, 64) 256         conv1_conv[0][0]                 \n",
317
      "__________________________________________________________________________________________________\n",
318
      "conv1_relu (Activation)         (None, 112, 112, 64) 0           conv1_bn[0][0]                   \n",
319
      "__________________________________________________________________________________________________\n",
320
      "pool1_pad (ZeroPadding2D)       (None, 114, 114, 64) 0           conv1_relu[0][0]                 \n",
321
      "__________________________________________________________________________________________________\n",
322
      "pool1_pool (MaxPooling2D)       (None, 56, 56, 64)   0           pool1_pad[0][0]                  \n",
323
      "__________________________________________________________________________________________________\n",
324
      "conv2_block1_1_conv (Conv2D)    (None, 56, 56, 64)   4160        pool1_pool[0][0]                 \n",
325
      "__________________________________________________________________________________________________\n",
326
      "conv2_block1_1_bn (BatchNormali (None, 56, 56, 64)   256         conv2_block1_1_conv[0][0]        \n",
327
      "__________________________________________________________________________________________________\n",
328
      "conv2_block1_1_relu (Activation (None, 56, 56, 64)   0           conv2_block1_1_bn[0][0]          \n",
329
      "__________________________________________________________________________________________________\n",
330
      "conv2_block1_2_conv (Conv2D)    (None, 56, 56, 64)   36928       conv2_block1_1_relu[0][0]        \n",
331
      "__________________________________________________________________________________________________\n",
332
      "conv2_block1_2_bn (BatchNormali (None, 56, 56, 64)   256         conv2_block1_2_conv[0][0]        \n",
333
      "__________________________________________________________________________________________________\n",
334
      "conv2_block1_2_relu (Activation (None, 56, 56, 64)   0           conv2_block1_2_bn[0][0]          \n",
335
      "__________________________________________________________________________________________________\n",
336
      "conv2_block1_0_conv (Conv2D)    (None, 56, 56, 256)  16640       pool1_pool[0][0]                 \n",
337
      "__________________________________________________________________________________________________\n",
338
      "conv2_block1_3_conv (Conv2D)    (None, 56, 56, 256)  16640       conv2_block1_2_relu[0][0]        \n",
339
      "__________________________________________________________________________________________________\n",
340
      "conv2_block1_0_bn (BatchNormali (None, 56, 56, 256)  1024        conv2_block1_0_conv[0][0]        \n",
341
      "__________________________________________________________________________________________________\n",
342
      "conv2_block1_3_bn (BatchNormali (None, 56, 56, 256)  1024        conv2_block1_3_conv[0][0]        \n",
343
      "__________________________________________________________________________________________________\n",
344
      "conv2_block1_add (Add)          (None, 56, 56, 256)  0           conv2_block1_0_bn[0][0]          \n",
345
      "                                                                 conv2_block1_3_bn[0][0]          \n",
346
      "__________________________________________________________________________________________________\n",
347
      "conv2_block1_out (Activation)   (None, 56, 56, 256)  0           conv2_block1_add[0][0]           \n",
348
      "__________________________________________________________________________________________________\n",
349
      "conv2_block2_1_conv (Conv2D)    (None, 56, 56, 64)   16448       conv2_block1_out[0][0]           \n",
350
      "__________________________________________________________________________________________________\n",
351
      "conv2_block2_1_bn (BatchNormali (None, 56, 56, 64)   256         conv2_block2_1_conv[0][0]        \n",
352
      "__________________________________________________________________________________________________\n",
353
      "conv2_block2_1_relu (Activation (None, 56, 56, 64)   0           conv2_block2_1_bn[0][0]          \n",
354
      "__________________________________________________________________________________________________\n",
355
      "conv2_block2_2_conv (Conv2D)    (None, 56, 56, 64)   36928       conv2_block2_1_relu[0][0]        \n",
356
      "__________________________________________________________________________________________________\n",
357
      "conv2_block2_2_bn (BatchNormali (None, 56, 56, 64)   256         conv2_block2_2_conv[0][0]        \n",
358
      "__________________________________________________________________________________________________\n",
359
      "conv2_block2_2_relu (Activation (None, 56, 56, 64)   0           conv2_block2_2_bn[0][0]          \n",
360
      "__________________________________________________________________________________________________\n",
361
      "conv2_block2_3_conv (Conv2D)    (None, 56, 56, 256)  16640       conv2_block2_2_relu[0][0]        \n",
362
      "__________________________________________________________________________________________________\n",
363
      "conv2_block2_3_bn (BatchNormali (None, 56, 56, 256)  1024        conv2_block2_3_conv[0][0]        \n",
364
      "__________________________________________________________________________________________________\n",
365
      "conv2_block2_add (Add)          (None, 56, 56, 256)  0           conv2_block1_out[0][0]           \n",
366
      "                                                                 conv2_block2_3_bn[0][0]          \n",
367
      "__________________________________________________________________________________________________\n",
368
      "conv2_block2_out (Activation)   (None, 56, 56, 256)  0           conv2_block2_add[0][0]           \n",
369
      "__________________________________________________________________________________________________\n",
370
      "conv2_block3_1_conv (Conv2D)    (None, 56, 56, 64)   16448       conv2_block2_out[0][0]           \n",
371
      "__________________________________________________________________________________________________\n",
372
      "conv2_block3_1_bn (BatchNormali (None, 56, 56, 64)   256         conv2_block3_1_conv[0][0]        \n",
373
      "__________________________________________________________________________________________________\n",
374
      "conv2_block3_1_relu (Activation (None, 56, 56, 64)   0           conv2_block3_1_bn[0][0]          \n",
375
      "__________________________________________________________________________________________________\n",
376
      "conv2_block3_2_conv (Conv2D)    (None, 56, 56, 64)   36928       conv2_block3_1_relu[0][0]        \n",
377
      "__________________________________________________________________________________________________\n",
378
      "conv2_block3_2_bn (BatchNormali (None, 56, 56, 64)   256         conv2_block3_2_conv[0][0]        \n",
379
      "__________________________________________________________________________________________________\n",
380
      "conv2_block3_2_relu (Activation (None, 56, 56, 64)   0           conv2_block3_2_bn[0][0]          \n",
381
      "__________________________________________________________________________________________________\n",
382
      "conv2_block3_3_conv (Conv2D)    (None, 56, 56, 256)  16640       conv2_block3_2_relu[0][0]        \n",
383
      "__________________________________________________________________________________________________\n",
384
      "conv2_block3_3_bn (BatchNormali (None, 56, 56, 256)  1024        conv2_block3_3_conv[0][0]        \n",
385
      "__________________________________________________________________________________________________\n",
386
      "conv2_block3_add (Add)          (None, 56, 56, 256)  0           conv2_block2_out[0][0]           \n",
387
      "                                                                 conv2_block3_3_bn[0][0]          \n",
388
      "__________________________________________________________________________________________________\n",
389
      "conv2_block3_out (Activation)   (None, 56, 56, 256)  0           conv2_block3_add[0][0]           \n",
390
      "__________________________________________________________________________________________________\n",
391
      "conv3_block1_1_conv (Conv2D)    (None, 28, 28, 128)  32896       conv2_block3_out[0][0]           \n",
392
      "__________________________________________________________________________________________________\n",
393
      "conv3_block1_1_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block1_1_conv[0][0]        \n",
394
      "__________________________________________________________________________________________________\n",
395
      "conv3_block1_1_relu (Activation (None, 28, 28, 128)  0           conv3_block1_1_bn[0][0]          \n",
396
      "__________________________________________________________________________________________________\n",
397
      "conv3_block1_2_conv (Conv2D)    (None, 28, 28, 128)  147584      conv3_block1_1_relu[0][0]        \n",
398
      "__________________________________________________________________________________________________\n",
399
      "conv3_block1_2_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block1_2_conv[0][0]        \n",
400
      "__________________________________________________________________________________________________\n",
401
      "conv3_block1_2_relu (Activation (None, 28, 28, 128)  0           conv3_block1_2_bn[0][0]          \n",
402
      "__________________________________________________________________________________________________\n",
403
      "conv3_block1_0_conv (Conv2D)    (None, 28, 28, 512)  131584      conv2_block3_out[0][0]           \n",
404
      "__________________________________________________________________________________________________\n",
405
      "conv3_block1_3_conv (Conv2D)    (None, 28, 28, 512)  66048       conv3_block1_2_relu[0][0]        \n",
406
      "__________________________________________________________________________________________________\n",
407
      "conv3_block1_0_bn (BatchNormali (None, 28, 28, 512)  2048        conv3_block1_0_conv[0][0]        \n",
408
      "__________________________________________________________________________________________________\n",
409
      "conv3_block1_3_bn (BatchNormali (None, 28, 28, 512)  2048        conv3_block1_3_conv[0][0]        \n",
410
      "__________________________________________________________________________________________________\n",
411
      "conv3_block1_add (Add)          (None, 28, 28, 512)  0           conv3_block1_0_bn[0][0]          \n",
412
      "                                                                 conv3_block1_3_bn[0][0]          \n",
413
      "__________________________________________________________________________________________________\n",
414
      "conv3_block1_out (Activation)   (None, 28, 28, 512)  0           conv3_block1_add[0][0]           \n",
415
      "__________________________________________________________________________________________________\n",
416
      "conv3_block2_1_conv (Conv2D)    (None, 28, 28, 128)  65664       conv3_block1_out[0][0]           \n",
417
      "__________________________________________________________________________________________________\n",
418
      "conv3_block2_1_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block2_1_conv[0][0]        \n",
419
      "__________________________________________________________________________________________________\n",
420
      "conv3_block2_1_relu (Activation (None, 28, 28, 128)  0           conv3_block2_1_bn[0][0]          \n",
421
      "__________________________________________________________________________________________________\n",
422
      "conv3_block2_2_conv (Conv2D)    (None, 28, 28, 128)  147584      conv3_block2_1_relu[0][0]        \n",
423
      "__________________________________________________________________________________________________\n",
424
      "conv3_block2_2_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block2_2_conv[0][0]        \n",
425
      "__________________________________________________________________________________________________\n",
426
      "conv3_block2_2_relu (Activation (None, 28, 28, 128)  0           conv3_block2_2_bn[0][0]          \n",
427
      "__________________________________________________________________________________________________\n",
428
      "conv3_block2_3_conv (Conv2D)    (None, 28, 28, 512)  66048       conv3_block2_2_relu[0][0]        \n",
429
      "__________________________________________________________________________________________________\n",
430
      "conv3_block2_3_bn (BatchNormali (None, 28, 28, 512)  2048        conv3_block2_3_conv[0][0]        \n",
431
      "__________________________________________________________________________________________________\n",
432
      "conv3_block2_add (Add)          (None, 28, 28, 512)  0           conv3_block1_out[0][0]           \n",
433
      "                                                                 conv3_block2_3_bn[0][0]          \n",
434
      "__________________________________________________________________________________________________\n",
435
      "conv3_block2_out (Activation)   (None, 28, 28, 512)  0           conv3_block2_add[0][0]           \n",
436
      "__________________________________________________________________________________________________\n",
437
      "conv3_block3_1_conv (Conv2D)    (None, 28, 28, 128)  65664       conv3_block2_out[0][0]           \n",
438
      "__________________________________________________________________________________________________\n",
439
      "conv3_block3_1_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block3_1_conv[0][0]        \n",
440
      "__________________________________________________________________________________________________\n",
441
      "conv3_block3_1_relu (Activation (None, 28, 28, 128)  0           conv3_block3_1_bn[0][0]          \n",
442
      "__________________________________________________________________________________________________\n",
443
      "conv3_block3_2_conv (Conv2D)    (None, 28, 28, 128)  147584      conv3_block3_1_relu[0][0]        \n",
444
      "__________________________________________________________________________________________________\n",
445
      "conv3_block3_2_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block3_2_conv[0][0]        \n",
446
      "__________________________________________________________________________________________________\n",
447
      "conv3_block3_2_relu (Activation (None, 28, 28, 128)  0           conv3_block3_2_bn[0][0]          \n",
448
      "__________________________________________________________________________________________________\n",
449
      "conv3_block3_3_conv (Conv2D)    (None, 28, 28, 512)  66048       conv3_block3_2_relu[0][0]        \n",
450
      "__________________________________________________________________________________________________\n",
451
      "conv3_block3_3_bn (BatchNormali (None, 28, 28, 512)  2048        conv3_block3_3_conv[0][0]        \n",
452
      "__________________________________________________________________________________________________\n",
453
      "conv3_block3_add (Add)          (None, 28, 28, 512)  0           conv3_block2_out[0][0]           \n",
454
      "                                                                 conv3_block3_3_bn[0][0]          \n",
455
      "__________________________________________________________________________________________________\n",
456
      "conv3_block3_out (Activation)   (None, 28, 28, 512)  0           conv3_block3_add[0][0]           \n",
457
      "__________________________________________________________________________________________________\n",
458
      "conv3_block4_1_conv (Conv2D)    (None, 28, 28, 128)  65664       conv3_block3_out[0][0]           \n",
459
      "__________________________________________________________________________________________________\n",
460
      "conv3_block4_1_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block4_1_conv[0][0]        \n",
461
      "__________________________________________________________________________________________________\n",
462
      "conv3_block4_1_relu (Activation (None, 28, 28, 128)  0           conv3_block4_1_bn[0][0]          \n",
463
      "__________________________________________________________________________________________________\n",
464
      "conv3_block4_2_conv (Conv2D)    (None, 28, 28, 128)  147584      conv3_block4_1_relu[0][0]        \n",
465
      "__________________________________________________________________________________________________\n",
466
      "conv3_block4_2_bn (BatchNormali (None, 28, 28, 128)  512         conv3_block4_2_conv[0][0]        \n",
467
      "__________________________________________________________________________________________________\n",
468
      "conv3_block4_2_relu (Activation (None, 28, 28, 128)  0           conv3_block4_2_bn[0][0]          \n",
469
      "__________________________________________________________________________________________________\n",
470
      "conv3_block4_3_conv (Conv2D)    (None, 28, 28, 512)  66048       conv3_block4_2_relu[0][0]        \n",
471
      "__________________________________________________________________________________________________\n",
472
      "conv3_block4_3_bn (BatchNormali (None, 28, 28, 512)  2048        conv3_block4_3_conv[0][0]        \n",
473
      "__________________________________________________________________________________________________\n",
474
      "conv3_block4_add (Add)          (None, 28, 28, 512)  0           conv3_block3_out[0][0]           \n",
475
      "                                                                 conv3_block4_3_bn[0][0]          \n",
476
      "__________________________________________________________________________________________________\n",
477
      "conv3_block4_out (Activation)   (None, 28, 28, 512)  0           conv3_block4_add[0][0]           \n",
478
      "__________________________________________________________________________________________________\n",
479
      "conv4_block1_1_conv (Conv2D)    (None, 14, 14, 256)  131328      conv3_block4_out[0][0]           \n",
480
      "__________________________________________________________________________________________________\n",
481
      "conv4_block1_1_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block1_1_conv[0][0]        \n",
482
      "__________________________________________________________________________________________________\n",
483
      "conv4_block1_1_relu (Activation (None, 14, 14, 256)  0           conv4_block1_1_bn[0][0]          \n",
484
      "__________________________________________________________________________________________________\n",
485
      "conv4_block1_2_conv (Conv2D)    (None, 14, 14, 256)  590080      conv4_block1_1_relu[0][0]        \n",
486
      "__________________________________________________________________________________________________\n",
487
      "conv4_block1_2_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block1_2_conv[0][0]        \n",
488
      "__________________________________________________________________________________________________\n",
489
      "conv4_block1_2_relu (Activation (None, 14, 14, 256)  0           conv4_block1_2_bn[0][0]          \n",
490
      "__________________________________________________________________________________________________\n",
491
      "conv4_block1_0_conv (Conv2D)    (None, 14, 14, 1024) 525312      conv3_block4_out[0][0]           \n",
492
      "__________________________________________________________________________________________________\n",
493
      "conv4_block1_3_conv (Conv2D)    (None, 14, 14, 1024) 263168      conv4_block1_2_relu[0][0]        \n",
494
      "__________________________________________________________________________________________________\n",
495
      "conv4_block1_0_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block1_0_conv[0][0]        \n",
496
      "__________________________________________________________________________________________________\n",
497
      "conv4_block1_3_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block1_3_conv[0][0]        \n",
498
      "__________________________________________________________________________________________________\n",
499
      "conv4_block1_add (Add)          (None, 14, 14, 1024) 0           conv4_block1_0_bn[0][0]          \n",
500
      "                                                                 conv4_block1_3_bn[0][0]          \n",
501
      "__________________________________________________________________________________________________\n",
502
      "conv4_block1_out (Activation)   (None, 14, 14, 1024) 0           conv4_block1_add[0][0]           \n",
503
      "__________________________________________________________________________________________________\n",
504
      "conv4_block2_1_conv (Conv2D)    (None, 14, 14, 256)  262400      conv4_block1_out[0][0]           \n",
505
      "__________________________________________________________________________________________________\n",
506
      "conv4_block2_1_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block2_1_conv[0][0]        \n",
507
      "__________________________________________________________________________________________________\n",
508
      "conv4_block2_1_relu (Activation (None, 14, 14, 256)  0           conv4_block2_1_bn[0][0]          \n",
509
      "__________________________________________________________________________________________________\n",
510
      "conv4_block2_2_conv (Conv2D)    (None, 14, 14, 256)  590080      conv4_block2_1_relu[0][0]        \n",
511
      "__________________________________________________________________________________________________\n",
512
      "conv4_block2_2_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block2_2_conv[0][0]        \n",
513
      "__________________________________________________________________________________________________\n",
514
      "conv4_block2_2_relu (Activation (None, 14, 14, 256)  0           conv4_block2_2_bn[0][0]          \n",
515
      "__________________________________________________________________________________________________\n",
516
      "conv4_block2_3_conv (Conv2D)    (None, 14, 14, 1024) 263168      conv4_block2_2_relu[0][0]        \n",
517
      "__________________________________________________________________________________________________\n",
518
      "conv4_block2_3_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block2_3_conv[0][0]        \n",
519
      "__________________________________________________________________________________________________\n",
520
      "conv4_block2_add (Add)          (None, 14, 14, 1024) 0           conv4_block1_out[0][0]           \n",
521
      "                                                                 conv4_block2_3_bn[0][0]          \n",
522
      "__________________________________________________________________________________________________\n",
523
      "conv4_block2_out (Activation)   (None, 14, 14, 1024) 0           conv4_block2_add[0][0]           \n",
524
      "__________________________________________________________________________________________________\n",
525
      "conv4_block3_1_conv (Conv2D)    (None, 14, 14, 256)  262400      conv4_block2_out[0][0]           \n",
526
      "__________________________________________________________________________________________________\n",
527
      "conv4_block3_1_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block3_1_conv[0][0]        \n",
528
      "__________________________________________________________________________________________________\n",
529
      "conv4_block3_1_relu (Activation (None, 14, 14, 256)  0           conv4_block3_1_bn[0][0]          \n",
530
      "__________________________________________________________________________________________________\n",
531
      "conv4_block3_2_conv (Conv2D)    (None, 14, 14, 256)  590080      conv4_block3_1_relu[0][0]        \n",
532
      "__________________________________________________________________________________________________\n",
533
      "conv4_block3_2_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block3_2_conv[0][0]        \n",
534
      "__________________________________________________________________________________________________\n",
535
      "conv4_block3_2_relu (Activation (None, 14, 14, 256)  0           conv4_block3_2_bn[0][0]          \n",
536
      "__________________________________________________________________________________________________\n",
537
      "conv4_block3_3_conv (Conv2D)    (None, 14, 14, 1024) 263168      conv4_block3_2_relu[0][0]        \n",
538
      "__________________________________________________________________________________________________\n",
539
      "conv4_block3_3_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block3_3_conv[0][0]        \n",
540
      "__________________________________________________________________________________________________\n",
541
      "conv4_block3_add (Add)          (None, 14, 14, 1024) 0           conv4_block2_out[0][0]           \n",
542
      "                                                                 conv4_block3_3_bn[0][0]          \n",
543
      "__________________________________________________________________________________________________\n",
544
      "conv4_block3_out (Activation)   (None, 14, 14, 1024) 0           conv4_block3_add[0][0]           \n",
545
      "__________________________________________________________________________________________________\n",
546
      "conv4_block4_1_conv (Conv2D)    (None, 14, 14, 256)  262400      conv4_block3_out[0][0]           \n",
547
      "__________________________________________________________________________________________________\n",
548
      "conv4_block4_1_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block4_1_conv[0][0]        \n",
549
      "__________________________________________________________________________________________________\n",
550
      "conv4_block4_1_relu (Activation (None, 14, 14, 256)  0           conv4_block4_1_bn[0][0]          \n",
551
      "__________________________________________________________________________________________________\n",
552
      "conv4_block4_2_conv (Conv2D)    (None, 14, 14, 256)  590080      conv4_block4_1_relu[0][0]        \n",
553
      "__________________________________________________________________________________________________\n",
554
      "conv4_block4_2_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block4_2_conv[0][0]        \n",
555
      "__________________________________________________________________________________________________\n",
556
      "conv4_block4_2_relu (Activation (None, 14, 14, 256)  0           conv4_block4_2_bn[0][0]          \n",
557
      "__________________________________________________________________________________________________\n",
558
      "conv4_block4_3_conv (Conv2D)    (None, 14, 14, 1024) 263168      conv4_block4_2_relu[0][0]        \n",
559
      "__________________________________________________________________________________________________\n",
560
      "conv4_block4_3_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block4_3_conv[0][0]        \n",
561
      "__________________________________________________________________________________________________\n",
562
      "conv4_block4_add (Add)          (None, 14, 14, 1024) 0           conv4_block3_out[0][0]           \n",
563
      "                                                                 conv4_block4_3_bn[0][0]          \n",
564
      "__________________________________________________________________________________________________\n",
565
      "conv4_block4_out (Activation)   (None, 14, 14, 1024) 0           conv4_block4_add[0][0]           \n",
566
      "__________________________________________________________________________________________________\n",
567
      "conv4_block5_1_conv (Conv2D)    (None, 14, 14, 256)  262400      conv4_block4_out[0][0]           \n",
568
      "__________________________________________________________________________________________________\n",
569
      "conv4_block5_1_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block5_1_conv[0][0]        \n",
570
      "__________________________________________________________________________________________________\n",
571
      "conv4_block5_1_relu (Activation (None, 14, 14, 256)  0           conv4_block5_1_bn[0][0]          \n",
572
      "__________________________________________________________________________________________________\n",
573
      "conv4_block5_2_conv (Conv2D)    (None, 14, 14, 256)  590080      conv4_block5_1_relu[0][0]        \n",
574
      "__________________________________________________________________________________________________\n",
575
      "conv4_block5_2_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block5_2_conv[0][0]        \n",
576
      "__________________________________________________________________________________________________\n",
577
      "conv4_block5_2_relu (Activation (None, 14, 14, 256)  0           conv4_block5_2_bn[0][0]          \n",
578
      "__________________________________________________________________________________________________\n",
579
      "conv4_block5_3_conv (Conv2D)    (None, 14, 14, 1024) 263168      conv4_block5_2_relu[0][0]        \n",
580
      "__________________________________________________________________________________________________\n",
581
      "conv4_block5_3_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block5_3_conv[0][0]        \n",
582
      "__________________________________________________________________________________________________\n",
583
      "conv4_block5_add (Add)          (None, 14, 14, 1024) 0           conv4_block4_out[0][0]           \n",
584
      "                                                                 conv4_block5_3_bn[0][0]          \n",
585
      "__________________________________________________________________________________________________\n",
586
      "conv4_block5_out (Activation)   (None, 14, 14, 1024) 0           conv4_block5_add[0][0]           \n",
587
      "__________________________________________________________________________________________________\n",
588
      "conv4_block6_1_conv (Conv2D)    (None, 14, 14, 256)  262400      conv4_block5_out[0][0]           \n",
589
      "__________________________________________________________________________________________________\n",
590
      "conv4_block6_1_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block6_1_conv[0][0]        \n",
591
      "__________________________________________________________________________________________________\n",
592
      "conv4_block6_1_relu (Activation (None, 14, 14, 256)  0           conv4_block6_1_bn[0][0]          \n",
593
      "__________________________________________________________________________________________________\n",
594
      "conv4_block6_2_conv (Conv2D)    (None, 14, 14, 256)  590080      conv4_block6_1_relu[0][0]        \n",
595
      "__________________________________________________________________________________________________\n",
596
      "conv4_block6_2_bn (BatchNormali (None, 14, 14, 256)  1024        conv4_block6_2_conv[0][0]        \n",
597
      "__________________________________________________________________________________________________\n",
598
      "conv4_block6_2_relu (Activation (None, 14, 14, 256)  0           conv4_block6_2_bn[0][0]          \n",
599
      "__________________________________________________________________________________________________\n",
600
      "conv4_block6_3_conv (Conv2D)    (None, 14, 14, 1024) 263168      conv4_block6_2_relu[0][0]        \n",
601
      "__________________________________________________________________________________________________\n",
602
      "conv4_block6_3_bn (BatchNormali (None, 14, 14, 1024) 4096        conv4_block6_3_conv[0][0]        \n",
603
      "__________________________________________________________________________________________________\n",
604
      "conv4_block6_add (Add)          (None, 14, 14, 1024) 0           conv4_block5_out[0][0]           \n",
605
      "                                                                 conv4_block6_3_bn[0][0]          \n",
606
      "__________________________________________________________________________________________________\n",
607
      "conv4_block6_out (Activation)   (None, 14, 14, 1024) 0           conv4_block6_add[0][0]           \n",
608
      "__________________________________________________________________________________________________\n",
609
      "conv5_block1_1_conv (Conv2D)    (None, 7, 7, 512)    524800      conv4_block6_out[0][0]           \n",
610
      "__________________________________________________________________________________________________\n",
611
      "conv5_block1_1_bn (BatchNormali (None, 7, 7, 512)    2048        conv5_block1_1_conv[0][0]        \n",
612
      "__________________________________________________________________________________________________\n",
613
      "conv5_block1_1_relu (Activation (None, 7, 7, 512)    0           conv5_block1_1_bn[0][0]          \n",
614
      "__________________________________________________________________________________________________\n",
615
      "conv5_block1_2_conv (Conv2D)    (None, 7, 7, 512)    2359808     conv5_block1_1_relu[0][0]        \n",
616
      "__________________________________________________________________________________________________\n",
617
      "conv5_block1_2_bn (BatchNormali (None, 7, 7, 512)    2048        conv5_block1_2_conv[0][0]        \n",
618
      "__________________________________________________________________________________________________\n",
619
      "conv5_block1_2_relu (Activation (None, 7, 7, 512)    0           conv5_block1_2_bn[0][0]          \n",
620
      "__________________________________________________________________________________________________\n",
621
      "conv5_block1_0_conv (Conv2D)    (None, 7, 7, 2048)   2099200     conv4_block6_out[0][0]           \n",
622
      "__________________________________________________________________________________________________\n",
623
      "conv5_block1_3_conv (Conv2D)    (None, 7, 7, 2048)   1050624     conv5_block1_2_relu[0][0]        \n",
624
      "__________________________________________________________________________________________________\n",
625
      "conv5_block1_0_bn (BatchNormali (None, 7, 7, 2048)   8192        conv5_block1_0_conv[0][0]        \n",
626
      "__________________________________________________________________________________________________\n",
627
      "conv5_block1_3_bn (BatchNormali (None, 7, 7, 2048)   8192        conv5_block1_3_conv[0][0]        \n",
628
      "__________________________________________________________________________________________________\n",
629
      "conv5_block1_add (Add)          (None, 7, 7, 2048)   0           conv5_block1_0_bn[0][0]          \n",
630
      "                                                                 conv5_block1_3_bn[0][0]          \n",
631
      "__________________________________________________________________________________________________\n",
632
      "conv5_block1_out (Activation)   (None, 7, 7, 2048)   0           conv5_block1_add[0][0]           \n",
633
      "__________________________________________________________________________________________________\n",
634
      "conv5_block2_1_conv (Conv2D)    (None, 7, 7, 512)    1049088     conv5_block1_out[0][0]           \n",
635
      "__________________________________________________________________________________________________\n",
636
      "conv5_block2_1_bn (BatchNormali (None, 7, 7, 512)    2048        conv5_block2_1_conv[0][0]        \n",
637
      "__________________________________________________________________________________________________\n",
638
      "conv5_block2_1_relu (Activation (None, 7, 7, 512)    0           conv5_block2_1_bn[0][0]          \n",
639
      "__________________________________________________________________________________________________\n",
640
      "conv5_block2_2_conv (Conv2D)    (None, 7, 7, 512)    2359808     conv5_block2_1_relu[0][0]        \n",
641
      "__________________________________________________________________________________________________\n",
642
      "conv5_block2_2_bn (BatchNormali (None, 7, 7, 512)    2048        conv5_block2_2_conv[0][0]        \n",
643
      "__________________________________________________________________________________________________\n",
644
      "conv5_block2_2_relu (Activation (None, 7, 7, 512)    0           conv5_block2_2_bn[0][0]          \n",
645
      "__________________________________________________________________________________________________\n",
646
      "conv5_block2_3_conv (Conv2D)    (None, 7, 7, 2048)   1050624     conv5_block2_2_relu[0][0]        \n",
647
      "__________________________________________________________________________________________________\n",
648
      "conv5_block2_3_bn (BatchNormali (None, 7, 7, 2048)   8192        conv5_block2_3_conv[0][0]        \n",
649
      "__________________________________________________________________________________________________\n",
650
      "conv5_block2_add (Add)          (None, 7, 7, 2048)   0           conv5_block1_out[0][0]           \n",
651
      "                                                                 conv5_block2_3_bn[0][0]          \n",
652
      "__________________________________________________________________________________________________\n",
653
      "conv5_block2_out (Activation)   (None, 7, 7, 2048)   0           conv5_block2_add[0][0]           \n",
654
      "__________________________________________________________________________________________________\n",
655
      "conv5_block3_1_conv (Conv2D)    (None, 7, 7, 512)    1049088     conv5_block2_out[0][0]           \n",
656
      "__________________________________________________________________________________________________\n",
657
      "conv5_block3_1_bn (BatchNormali (None, 7, 7, 512)    2048        conv5_block3_1_conv[0][0]        \n",
658
      "__________________________________________________________________________________________________\n",
659
      "conv5_block3_1_relu (Activation (None, 7, 7, 512)    0           conv5_block3_1_bn[0][0]          \n",
660
      "__________________________________________________________________________________________________\n",
661
      "conv5_block3_2_conv (Conv2D)    (None, 7, 7, 512)    2359808     conv5_block3_1_relu[0][0]        \n",
662
      "__________________________________________________________________________________________________\n",
663
      "conv5_block3_2_bn (BatchNormali (None, 7, 7, 512)    2048        conv5_block3_2_conv[0][0]        \n",
664
      "__________________________________________________________________________________________________\n",
665
      "conv5_block3_2_relu (Activation (None, 7, 7, 512)    0           conv5_block3_2_bn[0][0]          \n",
666
      "__________________________________________________________________________________________________\n",
667
      "conv5_block3_3_conv (Conv2D)    (None, 7, 7, 2048)   1050624     conv5_block3_2_relu[0][0]        \n",
668
      "__________________________________________________________________________________________________\n",
669
      "conv5_block3_3_bn (BatchNormali (None, 7, 7, 2048)   8192        conv5_block3_3_conv[0][0]        \n",
670
      "__________________________________________________________________________________________________\n",
671
      "conv5_block3_add (Add)          (None, 7, 7, 2048)   0           conv5_block2_out[0][0]           \n",
672
      "                                                                 conv5_block3_3_bn[0][0]          \n",
673
      "__________________________________________________________________________________________________\n",
674
      "conv5_block3_out (Activation)   (None, 7, 7, 2048)   0           conv5_block3_add[0][0]           \n",
675
      "__________________________________________________________________________________________________\n",
676
      "flatten (Flatten)               (None, 100352)       0           conv5_block3_out[0][0]           \n",
677
      "__________________________________________________________________________________________________\n",
678
      "dense (Dense)                   (None, 256)          25690368    flatten[0][0]                    \n",
679
      "__________________________________________________________________________________________________\n",
680
      "dense_1 (Dense)                 (None, 2)            514         dense[0][0]                      \n",
681
      "==================================================================================================\n",
682
      "Total params: 49,278,594\n",
683
      "Trainable params: 25,690,882\n",
684
      "Non-trainable params: 23,587,712\n",
685
      "__________________________________________________________________________________________________\n"
686
     ]
687
    }
688
   ],
689
   "source": [
690
    "x=Flatten()(resnet.output)\n",
691
    "d=Dense(256, activation='relu')(x)\n",
692
    "prediction=Dense(len(classes), activation='softmax')(d)\n",
693
    "model=Model(inputs=resnet.input, outputs=prediction)\n",
694
    "model.summary()"
695
   ]
696
  },
697
  {
698
   "cell_type": "code",
699
   "execution_count": 7,
700
   "id": "f316b4ea",
701
   "metadata": {
702
    "execution": {
703
     "iopub.execute_input": "2021-08-16T05:06:16.855632Z",
704
     "iopub.status.busy": "2021-08-16T05:06:16.854472Z",
705
     "iopub.status.idle": "2021-08-16T05:06:16.864142Z",
706
     "shell.execute_reply": "2021-08-16T05:06:16.863634Z",
707
     "shell.execute_reply.started": "2021-08-16T04:09:39.801724Z"
708
    },
709
    "papermill": {
710
     "duration": 0.05726,
711
     "end_time": "2021-08-16T05:06:16.864267",
712
     "exception": false,
713
     "start_time": "2021-08-16T05:06:16.807007",
714
     "status": "completed"
715
    },
716
    "tags": []
717
   },
718
   "outputs": [],
719
   "source": [
720
    "model.compile(\n",
721
    "  loss='categorical_crossentropy',\n",
722
    "  optimizer='adam',\n",
723
    "  metrics=['accuracy']\n",
724
    ")"
725
   ]
726
  },
727
  {
728
   "cell_type": "code",
729
   "execution_count": 8,
730
   "id": "736dbd9a",
731
   "metadata": {
732
    "execution": {
733
     "iopub.execute_input": "2021-08-16T05:06:16.995523Z",
734
     "iopub.status.busy": "2021-08-16T05:06:16.994379Z",
735
     "iopub.status.idle": "2021-08-16T05:06:16.998467Z",
736
     "shell.execute_reply": "2021-08-16T05:06:16.999444Z",
737
     "shell.execute_reply.started": "2021-08-16T04:09:39.819726Z"
738
    },
739
    "papermill": {
740
     "duration": 0.082266,
741
     "end_time": "2021-08-16T05:06:16.999688",
742
     "exception": false,
743
     "start_time": "2021-08-16T05:06:16.917422",
744
     "status": "completed"
745
    },
746
    "tags": []
747
   },
748
   "outputs": [],
749
   "source": [
750
    "train_datagen=ImageDataGenerator(rescale=1/255, shear_range=0.1, zoom_range=0.1, horizontal_flip=True)"
751
   ]
752
  },
753
  {
754
   "cell_type": "code",
755
   "execution_count": 9,
756
   "id": "b146ba5c",
757
   "metadata": {
758
    "execution": {
759
     "iopub.execute_input": "2021-08-16T05:06:17.137218Z",
760
     "iopub.status.busy": "2021-08-16T05:06:17.136186Z",
761
     "iopub.status.idle": "2021-08-16T05:06:17.142680Z",
762
     "shell.execute_reply": "2021-08-16T05:06:17.143501Z",
763
     "shell.execute_reply.started": "2021-08-16T04:09:39.828124Z"
764
    },
765
    "papermill": {
766
     "duration": 0.073148,
767
     "end_time": "2021-08-16T05:06:17.143645",
768
     "exception": false,
769
     "start_time": "2021-08-16T05:06:17.070497",
770
     "status": "completed"
771
    },
772
    "tags": []
773
   },
774
   "outputs": [],
775
   "source": [
776
    "test_datagen=ImageDataGenerator(rescale=1/255)\n",
777
    "val_datagen=ImageDataGenerator(rescale=1/255)"
778
   ]
779
  },
780
  {
781
   "cell_type": "code",
782
   "execution_count": 10,
783
   "id": "b6de9b34",
784
   "metadata": {
785
    "execution": {
786
     "iopub.execute_input": "2021-08-16T05:06:17.271937Z",
787
     "iopub.status.busy": "2021-08-16T05:06:17.270887Z",
788
     "iopub.status.idle": "2021-08-16T05:06:22.773288Z",
789
     "shell.execute_reply": "2021-08-16T05:06:22.772748Z",
790
     "shell.execute_reply.started": "2021-08-16T04:09:39.836850Z"
791
    },
792
    "papermill": {
793
     "duration": 5.56956,
794
     "end_time": "2021-08-16T05:06:22.773435",
795
     "exception": false,
796
     "start_time": "2021-08-16T05:06:17.203875",
797
     "status": "completed"
798
    },
799
    "tags": []
800
   },
801
   "outputs": [
802
    {
803
     "name": "stdout",
804
     "output_type": "stream",
805
     "text": [
806
      "Found 5216 images belonging to 2 classes.\n"
807
     ]
808
    }
809
   ],
810
   "source": [
811
    "training_set=train_datagen.flow_from_directory('../input/chest-xray-pneumonia/chest_xray/train', target_size=(224, 224), batch_size=32, class_mode='categorical')"
812
   ]
813
  },
814
  {
815
   "cell_type": "code",
816
   "execution_count": 11,
817
   "id": "c264e133",
818
   "metadata": {
819
    "execution": {
820
     "iopub.execute_input": "2021-08-16T05:06:22.911819Z",
821
     "iopub.status.busy": "2021-08-16T05:06:22.910747Z",
822
     "iopub.status.idle": "2021-08-16T05:06:23.125862Z",
823
     "shell.execute_reply": "2021-08-16T05:06:23.127159Z",
824
     "shell.execute_reply.started": "2021-08-16T04:09:40.056000Z"
825
    },
826
    "papermill": {
827
     "duration": 0.288735,
828
     "end_time": "2021-08-16T05:06:23.127539",
829
     "exception": false,
830
     "start_time": "2021-08-16T05:06:22.838804",
831
     "status": "completed"
832
    },
833
    "tags": []
834
   },
835
   "outputs": [
836
    {
837
     "name": "stdout",
838
     "output_type": "stream",
839
     "text": [
840
      "Found 624 images belonging to 2 classes.\n"
841
     ]
842
    }
843
   ],
844
   "source": [
845
    "test_set=test_datagen.flow_from_directory('../input/chest-xray-pneumonia/chest_xray/test', target_size=(224, 224), batch_size=32, class_mode='categorical')"
846
   ]
847
  },
848
  {
849
   "cell_type": "code",
850
   "execution_count": 12,
851
   "id": "aa42029c",
852
   "metadata": {
853
    "execution": {
854
     "iopub.execute_input": "2021-08-16T05:06:23.256295Z",
855
     "iopub.status.busy": "2021-08-16T05:06:23.255038Z",
856
     "iopub.status.idle": "2021-08-16T05:06:23.372332Z",
857
     "shell.execute_reply": "2021-08-16T05:06:23.371728Z",
858
     "shell.execute_reply.started": "2021-08-16T04:09:40.166897Z"
859
    },
860
    "papermill": {
861
     "duration": 0.184016,
862
     "end_time": "2021-08-16T05:06:23.372494",
863
     "exception": false,
864
     "start_time": "2021-08-16T05:06:23.188478",
865
     "status": "completed"
866
    },
867
    "tags": []
868
   },
869
   "outputs": [
870
    {
871
     "name": "stdout",
872
     "output_type": "stream",
873
     "text": [
874
      "Found 16 images belonging to 2 classes.\n"
875
     ]
876
    }
877
   ],
878
   "source": [
879
    "val_set=val_datagen.flow_from_directory('../input/chest-xray-pneumonia/chest_xray/val', target_size=(224, 224), batch_size=32, class_mode='categorical')"
880
   ]
881
  },
882
  {
883
   "cell_type": "code",
884
   "execution_count": 13,
885
   "id": "82c500c8",
886
   "metadata": {
887
    "execution": {
888
     "iopub.execute_input": "2021-08-16T05:06:23.455153Z",
889
     "iopub.status.busy": "2021-08-16T05:06:23.454380Z",
890
     "iopub.status.idle": "2021-08-16T05:27:03.128121Z",
891
     "shell.execute_reply": "2021-08-16T05:27:03.127602Z",
892
     "shell.execute_reply.started": "2021-08-16T04:09:40.281960Z"
893
    },
894
    "papermill": {
895
     "duration": 1239.717644,
896
     "end_time": "2021-08-16T05:27:03.128268",
897
     "exception": false,
898
     "start_time": "2021-08-16T05:06:23.410624",
899
     "status": "completed"
900
    },
901
    "tags": []
902
   },
903
   "outputs": [
904
    {
905
     "name": "stdout",
906
     "output_type": "stream",
907
     "text": [
908
      "Epoch 1/10\n",
909
      "163/163 [==============================] - 174s 1s/step - loss: 1.4933 - accuracy: 0.6808 - val_loss: 0.9421 - val_accuracy: 0.5000\n",
910
      "Epoch 2/10\n",
911
      "163/163 [==============================] - 118s 724ms/step - loss: 0.4017 - accuracy: 0.7802 - val_loss: 0.7580 - val_accuracy: 0.6250\n",
912
      "Epoch 3/10\n",
913
      "163/163 [==============================] - 116s 712ms/step - loss: 0.3392 - accuracy: 0.8526 - val_loss: 1.0316 - val_accuracy: 0.6250\n",
914
      "Epoch 4/10\n",
915
      "163/163 [==============================] - 117s 720ms/step - loss: 0.3040 - accuracy: 0.8687 - val_loss: 1.0229 - val_accuracy: 0.6250\n",
916
      "Epoch 5/10\n",
917
      "163/163 [==============================] - 119s 729ms/step - loss: 0.2893 - accuracy: 0.8778 - val_loss: 0.5503 - val_accuracy: 0.6875\n",
918
      "Epoch 6/10\n",
919
      "163/163 [==============================] - 118s 719ms/step - loss: 0.2680 - accuracy: 0.8829 - val_loss: 1.8514 - val_accuracy: 0.6250\n",
920
      "Epoch 7/10\n",
921
      "163/163 [==============================] - 119s 730ms/step - loss: 0.2803 - accuracy: 0.8843 - val_loss: 0.7620 - val_accuracy: 0.6875\n",
922
      "Epoch 8/10\n",
923
      "163/163 [==============================] - 118s 726ms/step - loss: 0.1997 - accuracy: 0.9184 - val_loss: 0.7933 - val_accuracy: 0.6875\n",
924
      "Epoch 9/10\n",
925
      "163/163 [==============================] - 118s 726ms/step - loss: 0.1999 - accuracy: 0.9168 - val_loss: 0.7006 - val_accuracy: 0.6875\n",
926
      "Epoch 10/10\n",
927
      "163/163 [==============================] - 120s 735ms/step - loss: 0.1854 - accuracy: 0.9218 - val_loss: 1.5245 - val_accuracy: 0.6250\n"
928
     ]
929
    }
930
   ],
931
   "source": [
932
    "fit=model.fit(training_set, validation_data=val_set, epochs=10, steps_per_epoch=len(training_set), validation_steps=len(val_set))"
933
   ]
934
  },
935
  {
936
   "cell_type": "code",
937
   "execution_count": 14,
938
   "id": "2ae23b71",
939
   "metadata": {
940
    "execution": {
941
     "iopub.execute_input": "2021-08-16T05:27:04.322970Z",
942
     "iopub.status.busy": "2021-08-16T05:27:04.319808Z",
943
     "iopub.status.idle": "2021-08-16T05:27:04.495629Z",
944
     "shell.execute_reply": "2021-08-16T05:27:04.496143Z",
945
     "shell.execute_reply.started": "2021-08-16T04:28:45.355662Z"
946
    },
947
    "papermill": {
948
     "duration": 0.791967,
949
     "end_time": "2021-08-16T05:27:04.496311",
950
     "exception": false,
951
     "start_time": "2021-08-16T05:27:03.704344",
952
     "status": "completed"
953
    },
954
    "tags": []
955
   },
956
   "outputs": [
957
    {
958
     "data": {
959
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA210lEQVR4nO3deXxU5bnA8d+TdbITIKxhSSyy74GiKNG6gQtqrRXUutSl1qXttfXWLrdWW69ava21aq22LnVX0LqhaC2IdakJCBIEZIcJWwIkJGSfvPePdyYMIXtm5sxMnu/nM5/JnHNmzpMhPOec57yLGGNQSikVvWKcDkAppVRwaaJXSqkop4leKaWinCZ6pZSKcprolVIqysU5HUBL+vbta4YPH+50GEopFTGWL19eaozJamldWCb64cOHU1hY6HQYSikVMURkW2vrtHSjlFJRThO9UkpFOU30SikV5cKyRq+Uil719fW43W5qamqcDiUiuVwusrOziY+P7/B7NNErpULK7XaTlpbG8OHDERGnw4koxhj27duH2+0mJyenw+/T0o1SKqRqamro06ePJvkuEBH69OnT6ashTfRKqZDTJN91XfnuNNErFUqb/gV71zodhephNNErFSqNjfDyFfDOz5yOpMcqKyvj4Ycf7tJ7zzzzTMrKyjq8/a9//Wvuu+++Lu0r0DTRKxUq+zZATTls/xQaap2OpkdqK9E3NDS0+d5FixbRq1evIEQVfJrolQoVd4F9bqiGHZ85G0sPdeutt7Jp0yYmTZrELbfcwtKlSznxxBOZO3cuY8aMAeC8885j6tSpjB07lkcffbTpvcOHD6e0tJStW7cyevRorrnmGsaOHcvpp59OdXV1m/tduXIlM2bMYMKECZx//vkcOHAAgAceeIAxY8YwYcIE5s2bB8AHH3zApEmTmDRpEpMnT6aioqLbv7c2r1QqVNwFkJAG9VWw5QPIOdHpiBx3+xtr+HLnwYB+5phB6dx2ztgW1919990UFRWxcuVKAJYuXcqKFSsoKipqaq74+OOP07t3b6qrq5k2bRoXXHABffr0OeJzNmzYwPPPP89jjz3Gt7/9bRYuXMill17aakyXXXYZf/rTn8jPz+dXv/oVt99+O/fffz933303W7ZsITExsaksdN999/HQQw8xc+ZMKisrcblc3f5O9IxeqVBxF8KQ6TBoMmz+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\n",
960
      "text/plain": [
961
       "<Figure size 432x288 with 1 Axes>"
962
      ]
963
     },
964
     "metadata": {
965
      "needs_background": "light"
966
     },
967
     "output_type": "display_data"
968
    }
969
   ],
970
   "source": [
971
    "plt.plot(fit.history['loss'], label='train loss')\n",
972
    "plt.plot(fit.history['val_loss'], label='val loss')\n",
973
    "plt.legend()\n",
974
    "plt.show()"
975
   ]
976
  },
977
  {
978
   "cell_type": "code",
979
   "execution_count": 15,
980
   "id": "9f02e3b3",
981
   "metadata": {
982
    "execution": {
983
     "iopub.execute_input": "2021-08-16T05:27:05.685287Z",
984
     "iopub.status.busy": "2021-08-16T05:27:05.684081Z",
985
     "iopub.status.idle": "2021-08-16T05:27:05.830416Z",
986
     "shell.execute_reply": "2021-08-16T05:27:05.831005Z",
987
     "shell.execute_reply.started": "2021-08-16T04:29:40.090459Z"
988
    },
989
    "papermill": {
990
     "duration": 0.75719,
991
     "end_time": "2021-08-16T05:27:05.831229",
992
     "exception": false,
993
     "start_time": "2021-08-16T05:27:05.074039",
994
     "status": "completed"
995
    },
996
    "tags": []
997
   },
998
   "outputs": [
999
    {
1000
     "data": {
1001
      "image/png": "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efLJJ4mMjGTt2rUAHDp0iPT0dEaOHMkXX3xBQkICBw8ePOOfZcuWLUydOpUePXoAMH78eOrVq0dhYSF9+vRhzZo1tGnThsGDBzNz5ky6du1KVlYWYWFhjBgxgilTpvCvf/2LzZs3k5ube9ZhDv4c6HlH4JO/QJNE6DzM7WpEvM7pRtLVqVu3bifca/38888zZ84cAHbt2sWWLVt+EegJCQklo9suXbqwY8eOX+w3NTWVwYMHs2fPHvLy8kqOsWjRImbMmFGyXXR0NB988AEXXnhhyTb16tU7Y90tWrQoCXOAWbNmMWnSJAoKCtizZw8bNmzAGEOTJk3o2rUrABEREQAMGjSIJ598kn/84x+89tpr3HbbbWc8Xnn47zn0r/4NWWnQ7+/OAhYi4pVq165d8vizzz5j0aJFfPPNN6xevZqkpKQy78WuVatWyePAwMAyz7/fc889jB49mrVr1/Lyyy9XanZsUFDQCefHS++jdN0//PADzzzzDIsXL2bNmjUMGDDgtMcLDw+nb9++vP/++8yaNYthwzwz6PTPQM/Y6QR6h+ugxa/crkZEitWtW5fDhw+f8v3MzEyio6MJDw9n06ZNLF26tNLHyszMJDbWWbhm6tSpJa/37duXiRMnljw/dOgQPXr04IsvvuCHH34AKDnlEh8fz4oVKwBYsWJFyfsny8rKonbt2kRGRrJ3714+/vhjAM477zz27NnDsmXLADh8+HDJfz533HEH9957L127diU6OrrSf87S/DPQP/kLYOCSx92uRERKqV+/Pj179qRDhw488MAvb1To168fBQUFtG3blrFjx55wSqOiHnvsMQYNGkSXLl1o0ODnVh8PP/wwhw4dokOHDiQmJrJkyRJiYmKYNGkS1157LYmJiQwePBiA6667joMHD9K+fXteeOEFWrduXeaxEhMTSUpKok2bNtx444307NkTgJCQEGbOnMk999xDYmIiffv2LRm5d+nShYiICIYPH17pP+PJjLXWYzuriOTkZJuSkuL5He/4Cqb0h94PQe+xnt+/iA/buHEjbdu2dbsMAXbv3k3v3r3ZtGkTAQFlj63L+vsyxiy31iaXtb1/jdCLCmH+nyAiDi641+1qRETKNG3aNLp378748eNPGeaV4V93uax8A35aC9e/BiHhblcjIlKmW265hVtuucXj+/WfEXpOBix+EppfAO2v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\n",
1002
      "text/plain": [
1003
       "<Figure size 432x288 with 1 Axes>"
1004
      ]
1005
     },
1006
     "metadata": {
1007
      "needs_background": "light"
1008
     },
1009
     "output_type": "display_data"
1010
    }
1011
   ],
1012
   "source": [
1013
    "plt.plot(fit.history['accuracy'], label='train accuracy')\n",
1014
    "plt.plot(fit.history['val_accuracy'], label='val accuracy')\n",
1015
    "plt.legend()\n",
1016
    "plt.show()"
1017
   ]
1018
  },
1019
  {
1020
   "cell_type": "code",
1021
   "execution_count": 16,
1022
   "id": "1bea68b4",
1023
   "metadata": {
1024
    "execution": {
1025
     "iopub.execute_input": "2021-08-16T05:27:07.006543Z",
1026
     "iopub.status.busy": "2021-08-16T05:27:07.004882Z",
1027
     "iopub.status.idle": "2021-08-16T05:27:18.296132Z",
1028
     "shell.execute_reply": "2021-08-16T05:27:18.295561Z",
1029
     "shell.execute_reply.started": "2021-08-16T04:31:53.958544Z"
1030
    },
1031
    "papermill": {
1032
     "duration": 11.87738,
1033
     "end_time": "2021-08-16T05:27:18.296341",
1034
     "exception": false,
1035
     "start_time": "2021-08-16T05:27:06.418961",
1036
     "status": "completed"
1037
    },
1038
    "tags": []
1039
   },
1040
   "outputs": [
1041
    {
1042
     "name": "stdout",
1043
     "output_type": "stream",
1044
     "text": [
1045
      "20/20 [==============================] - 11s 541ms/step - loss: 0.9395 - accuracy: 0.6971\n"
1046
     ]
1047
    },
1048
    {
1049
     "data": {
1050
      "text/plain": [
1051
       "[0.939464271068573, 0.6971153616905212]"
1052
      ]
1053
     },
1054
     "execution_count": 16,
1055
     "metadata": {},
1056
     "output_type": "execute_result"
1057
    }
1058
   ],
1059
   "source": [
1060
    "model.evaluate(test_set)"
1061
   ]
1062
  },
1063
  {
1064
   "cell_type": "markdown",
1065
   "id": "c10f5944",
1066
   "metadata": {
1067
    "papermill": {
1068
     "duration": 0.603564,
1069
     "end_time": "2021-08-16T05:27:19.509005",
1070
     "exception": false,
1071
     "start_time": "2021-08-16T05:27:18.905441",
1072
     "status": "completed"
1073
    },
1074
    "tags": []
1075
   },
1076
   "source": [
1077
    "#### ***VGG16 Model***"
1078
   ]
1079
  },
1080
  {
1081
   "cell_type": "markdown",
1082
   "id": "68a12168",
1083
   "metadata": {
1084
    "papermill": {
1085
     "duration": 0.639483,
1086
     "end_time": "2021-08-16T05:27:20.754854",
1087
     "exception": false,
1088
     "start_time": "2021-08-16T05:27:20.115371",
1089
     "status": "completed"
1090
    },
1091
    "tags": []
1092
   },
1093
   "source": [
1094
    "##### **Same as ResNet**"
1095
   ]
1096
  },
1097
  {
1098
   "cell_type": "code",
1099
   "execution_count": 17,
1100
   "id": "0c2176f7",
1101
   "metadata": {
1102
    "execution": {
1103
     "iopub.execute_input": "2021-08-16T05:27:22.041061Z",
1104
     "iopub.status.busy": "2021-08-16T05:27:22.038837Z",
1105
     "iopub.status.idle": "2021-08-16T05:27:22.042466Z",
1106
     "shell.execute_reply": "2021-08-16T05:27:22.043409Z",
1107
     "shell.execute_reply.started": "2021-08-16T04:33:26.806992Z"
1108
    },
1109
    "papermill": {
1110
     "duration": 0.675097,
1111
     "end_time": "2021-08-16T05:27:22.043841",
1112
     "exception": false,
1113
     "start_time": "2021-08-16T05:27:21.368744",
1114
     "status": "completed"
1115
    },
1116
    "tags": []
1117
   },
1118
   "outputs": [],
1119
   "source": [
1120
    "from keras.applications.vgg16 import VGG16"
1121
   ]
1122
  },
1123
  {
1124
   "cell_type": "code",
1125
   "execution_count": 18,
1126
   "id": "995bc724",
1127
   "metadata": {
1128
    "execution": {
1129
     "iopub.execute_input": "2021-08-16T05:27:23.473507Z",
1130
     "iopub.status.busy": "2021-08-16T05:27:23.472356Z",
1131
     "iopub.status.idle": "2021-08-16T05:27:24.875125Z",
1132
     "shell.execute_reply": "2021-08-16T05:27:24.874514Z",
1133
     "shell.execute_reply.started": "2021-08-16T04:34:33.004848Z"
1134
    },
1135
    "papermill": {
1136
     "duration": 2.014499,
1137
     "end_time": "2021-08-16T05:27:24.875272",
1138
     "exception": false,
1139
     "start_time": "2021-08-16T05:27:22.860773",
1140
     "status": "completed"
1141
    },
1142
    "tags": []
1143
   },
1144
   "outputs": [
1145
    {
1146
     "name": "stdout",
1147
     "output_type": "stream",
1148
     "text": [
1149
      "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5\n",
1150
      "58892288/58889256 [==============================] - 1s 0us/step\n"
1151
     ]
1152
    },
1153
    {
1154
     "data": {
1155
      "text/plain": [
1156
       "<tensorflow.python.keras.engine.functional.Functional at 0x7f6d0024b7d0>"
1157
      ]
1158
     },
1159
     "execution_count": 18,
1160
     "metadata": {},
1161
     "output_type": "execute_result"
1162
    }
1163
   ],
1164
   "source": [
1165
    "vgg=VGG16(input_shape=image_shape + [3], weights='imagenet', include_top=False)\n",
1166
    "vgg"
1167
   ]
1168
  },
1169
  {
1170
   "cell_type": "code",
1171
   "execution_count": 19,
1172
   "id": "fa4c22ea",
1173
   "metadata": {
1174
    "execution": {
1175
     "iopub.execute_input": "2021-08-16T05:27:26.090470Z",
1176
     "iopub.status.busy": "2021-08-16T05:27:26.088184Z",
1177
     "iopub.status.idle": "2021-08-16T05:27:26.091359Z",
1178
     "shell.execute_reply": "2021-08-16T05:27:26.091951Z",
1179
     "shell.execute_reply.started": "2021-08-16T04:35:06.993251Z"
1180
    },
1181
    "papermill": {
1182
     "duration": 0.613982,
1183
     "end_time": "2021-08-16T05:27:26.092103",
1184
     "exception": false,
1185
     "start_time": "2021-08-16T05:27:25.478121",
1186
     "status": "completed"
1187
    },
1188
    "tags": []
1189
   },
1190
   "outputs": [],
1191
   "source": [
1192
    "for layers in vgg.layers:\n",
1193
    "    layers.trainable=False"
1194
   ]
1195
  },
1196
  {
1197
   "cell_type": "code",
1198
   "execution_count": 20,
1199
   "id": "3044655b",
1200
   "metadata": {
1201
    "execution": {
1202
     "iopub.execute_input": "2021-08-16T05:27:27.365721Z",
1203
     "iopub.status.busy": "2021-08-16T05:27:27.364566Z",
1204
     "iopub.status.idle": "2021-08-16T05:27:27.411993Z",
1205
     "shell.execute_reply": "2021-08-16T05:27:27.411420Z",
1206
     "shell.execute_reply.started": "2021-08-16T04:36:08.092886Z"
1207
    },
1208
    "papermill": {
1209
     "duration": 0.719969,
1210
     "end_time": "2021-08-16T05:27:27.412160",
1211
     "exception": false,
1212
     "start_time": "2021-08-16T05:27:26.692191",
1213
     "status": "completed"
1214
    },
1215
    "tags": []
1216
   },
1217
   "outputs": [
1218
    {
1219
     "name": "stdout",
1220
     "output_type": "stream",
1221
     "text": [
1222
      "Model: \"model_1\"\n",
1223
      "_________________________________________________________________\n",
1224
      "Layer (type)                 Output Shape              Param #   \n",
1225
      "=================================================================\n",
1226
      "input_2 (InputLayer)         [(None, 224, 224, 3)]     0         \n",
1227
      "_________________________________________________________________\n",
1228
      "block1_conv1 (Conv2D)        (None, 224, 224, 64)      1792      \n",
1229
      "_________________________________________________________________\n",
1230
      "block1_conv2 (Conv2D)        (None, 224, 224, 64)      36928     \n",
1231
      "_________________________________________________________________\n",
1232
      "block1_pool (MaxPooling2D)   (None, 112, 112, 64)      0         \n",
1233
      "_________________________________________________________________\n",
1234
      "block2_conv1 (Conv2D)        (None, 112, 112, 128)     73856     \n",
1235
      "_________________________________________________________________\n",
1236
      "block2_conv2 (Conv2D)        (None, 112, 112, 128)     147584    \n",
1237
      "_________________________________________________________________\n",
1238
      "block2_pool (MaxPooling2D)   (None, 56, 56, 128)       0         \n",
1239
      "_________________________________________________________________\n",
1240
      "block3_conv1 (Conv2D)        (None, 56, 56, 256)       295168    \n",
1241
      "_________________________________________________________________\n",
1242
      "block3_conv2 (Conv2D)        (None, 56, 56, 256)       590080    \n",
1243
      "_________________________________________________________________\n",
1244
      "block3_conv3 (Conv2D)        (None, 56, 56, 256)       590080    \n",
1245
      "_________________________________________________________________\n",
1246
      "block3_pool (MaxPooling2D)   (None, 28, 28, 256)       0         \n",
1247
      "_________________________________________________________________\n",
1248
      "block4_conv1 (Conv2D)        (None, 28, 28, 512)       1180160   \n",
1249
      "_________________________________________________________________\n",
1250
      "block4_conv2 (Conv2D)        (None, 28, 28, 512)       2359808   \n",
1251
      "_________________________________________________________________\n",
1252
      "block4_conv3 (Conv2D)        (None, 28, 28, 512)       2359808   \n",
1253
      "_________________________________________________________________\n",
1254
      "block4_pool (MaxPooling2D)   (None, 14, 14, 512)       0         \n",
1255
      "_________________________________________________________________\n",
1256
      "block5_conv1 (Conv2D)        (None, 14, 14, 512)       2359808   \n",
1257
      "_________________________________________________________________\n",
1258
      "block5_conv2 (Conv2D)        (None, 14, 14, 512)       2359808   \n",
1259
      "_________________________________________________________________\n",
1260
      "block5_conv3 (Conv2D)        (None, 14, 14, 512)       2359808   \n",
1261
      "_________________________________________________________________\n",
1262
      "block5_pool (MaxPooling2D)   (None, 7, 7, 512)         0         \n",
1263
      "_________________________________________________________________\n",
1264
      "flatten_1 (Flatten)          (None, 25088)             0         \n",
1265
      "_________________________________________________________________\n",
1266
      "dense_2 (Dense)              (None, 256)               6422784   \n",
1267
      "_________________________________________________________________\n",
1268
      "dense_3 (Dense)              (None, 2)                 514       \n",
1269
      "=================================================================\n",
1270
      "Total params: 21,137,986\n",
1271
      "Trainable params: 6,423,298\n",
1272
      "Non-trainable params: 14,714,688\n",
1273
      "_________________________________________________________________\n"
1274
     ]
1275
    }
1276
   ],
1277
   "source": [
1278
    "x=Flatten()(vgg.output)\n",
1279
    "d=Dense(256, activation='relu')(x)\n",
1280
    "prediction=Dense(len(classes), activation='softmax')(d)\n",
1281
    "model=Model(inputs=vgg.input, outputs=prediction)\n",
1282
    "model.summary()"
1283
   ]
1284
  },
1285
  {
1286
   "cell_type": "code",
1287
   "execution_count": 21,
1288
   "id": "0a7eb997",
1289
   "metadata": {
1290
    "execution": {
1291
     "iopub.execute_input": "2021-08-16T05:27:29.295938Z",
1292
     "iopub.status.busy": "2021-08-16T05:27:29.294853Z",
1293
     "iopub.status.idle": "2021-08-16T05:27:29.301299Z",
1294
     "shell.execute_reply": "2021-08-16T05:27:29.300625Z",
1295
     "shell.execute_reply.started": "2021-08-16T04:36:25.133906Z"
1296
    },
1297
    "papermill": {
1298
     "duration": 0.897504,
1299
     "end_time": "2021-08-16T05:27:29.301489",
1300
     "exception": false,
1301
     "start_time": "2021-08-16T05:27:28.403985",
1302
     "status": "completed"
1303
    },
1304
    "tags": []
1305
   },
1306
   "outputs": [],
1307
   "source": [
1308
    "model.compile(\n",
1309
    "  loss='categorical_crossentropy',\n",
1310
    "  optimizer='adam',\n",
1311
    "  metrics=['accuracy']\n",
1312
    ")"
1313
   ]
1314
  },
1315
  {
1316
   "cell_type": "code",
1317
   "execution_count": 22,
1318
   "id": "34419381",
1319
   "metadata": {
1320
    "execution": {
1321
     "iopub.execute_input": "2021-08-16T05:27:30.572228Z",
1322
     "iopub.status.busy": "2021-08-16T05:27:30.569709Z",
1323
     "iopub.status.idle": "2021-08-16T05:47:04.715087Z",
1324
     "shell.execute_reply": "2021-08-16T05:47:04.716519Z",
1325
     "shell.execute_reply.started": "2021-08-16T04:36:52.627303Z"
1326
    },
1327
    "papermill": {
1328
     "duration": 1174.774257,
1329
     "end_time": "2021-08-16T05:47:04.716859",
1330
     "exception": false,
1331
     "start_time": "2021-08-16T05:27:29.942602",
1332
     "status": "completed"
1333
    },
1334
    "tags": []
1335
   },
1336
   "outputs": [
1337
    {
1338
     "name": "stdout",
1339
     "output_type": "stream",
1340
     "text": [
1341
      "Epoch 1/10\n",
1342
      "163/163 [==============================] - 121s 721ms/step - loss: 0.5151 - accuracy: 0.8927 - val_loss: 0.5354 - val_accuracy: 0.7500\n",
1343
      "Epoch 2/10\n",
1344
      "163/163 [==============================] - 118s 722ms/step - loss: 0.1138 - accuracy: 0.9598 - val_loss: 0.0728 - val_accuracy: 0.9375\n",
1345
      "Epoch 3/10\n",
1346
      "163/163 [==============================] - 118s 724ms/step - loss: 0.0780 - accuracy: 0.9705 - val_loss: 0.1995 - val_accuracy: 0.9375\n",
1347
      "Epoch 4/10\n",
1348
      "163/163 [==============================] - 117s 717ms/step - loss: 0.0817 - accuracy: 0.9694 - val_loss: 0.1454 - val_accuracy: 0.9375\n",
1349
      "Epoch 5/10\n",
1350
      "163/163 [==============================] - 118s 718ms/step - loss: 0.0485 - accuracy: 0.9809 - val_loss: 0.0538 - val_accuracy: 1.0000\n",
1351
      "Epoch 6/10\n",
1352
      "163/163 [==============================] - 116s 714ms/step - loss: 0.0746 - accuracy: 0.9735 - val_loss: 0.1198 - val_accuracy: 0.9375\n",
1353
      "Epoch 7/10\n",
1354
      "163/163 [==============================] - 117s 721ms/step - loss: 0.0474 - accuracy: 0.9817 - val_loss: 0.0866 - val_accuracy: 1.0000\n",
1355
      "Epoch 8/10\n",
1356
      "163/163 [==============================] - 115s 706ms/step - loss: 0.0445 - accuracy: 0.9839 - val_loss: 0.0728 - val_accuracy: 1.0000\n",
1357
      "Epoch 9/10\n",
1358
      "163/163 [==============================] - 118s 723ms/step - loss: 0.0414 - accuracy: 0.9855 - val_loss: 0.0504 - val_accuracy: 1.0000\n",
1359
      "Epoch 10/10\n",
1360
      "163/163 [==============================] - 115s 705ms/step - loss: 0.0523 - accuracy: 0.9811 - val_loss: 0.0381 - val_accuracy: 1.0000\n"
1361
     ]
1362
    }
1363
   ],
1364
   "source": [
1365
    "fit=model.fit(training_set, validation_data=val_set, epochs=10, steps_per_epoch=len(training_set), validation_steps=len(val_set))"
1366
   ]
1367
  },
1368
  {
1369
   "cell_type": "code",
1370
   "execution_count": 23,
1371
   "id": "bf713d20",
1372
   "metadata": {
1373
    "execution": {
1374
     "iopub.execute_input": "2021-08-16T05:47:07.143499Z",
1375
     "iopub.status.busy": "2021-08-16T05:47:07.142240Z",
1376
     "iopub.status.idle": "2021-08-16T05:47:07.308206Z",
1377
     "shell.execute_reply": "2021-08-16T05:47:07.307615Z",
1378
     "shell.execute_reply.started": "2021-08-16T04:55:00.797118Z"
1379
    },
1380
    "papermill": {
1381
     "duration": 1.392018,
1382
     "end_time": "2021-08-16T05:47:07.308357",
1383
     "exception": false,
1384
     "start_time": "2021-08-16T05:47:05.916339",
1385
     "status": "completed"
1386
    },
1387
    "tags": []
1388
   },
1389
   "outputs": [
1390
    {
1391
     "data": {
1392
      "image/png": "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\n",
1393
      "text/plain": [
1394
       "<Figure size 432x288 with 1 Axes>"
1395
      ]
1396
     },
1397
     "metadata": {
1398
      "needs_background": "light"
1399
     },
1400
     "output_type": "display_data"
1401
    }
1402
   ],
1403
   "source": [
1404
    "plt.plot(fit.history['loss'], label='train loss')\n",
1405
    "plt.plot(fit.history['val_loss'], label='val loss')\n",
1406
    "plt.legend()\n",
1407
    "plt.show()"
1408
   ]
1409
  },
1410
  {
1411
   "cell_type": "code",
1412
   "execution_count": 24,
1413
   "id": "b8976366",
1414
   "metadata": {
1415
    "execution": {
1416
     "iopub.execute_input": "2021-08-16T05:47:09.806433Z",
1417
     "iopub.status.busy": "2021-08-16T05:47:09.805257Z",
1418
     "iopub.status.idle": "2021-08-16T05:47:10.042425Z",
1419
     "shell.execute_reply": "2021-08-16T05:47:10.039446Z",
1420
     "shell.execute_reply.started": "2021-08-16T04:55:21.557068Z"
1421
    },
1422
    "papermill": {
1423
     "duration": 1.497025,
1424
     "end_time": "2021-08-16T05:47:10.042661",
1425
     "exception": false,
1426
     "start_time": "2021-08-16T05:47:08.545636",
1427
     "status": "completed"
1428
    },
1429
    "tags": []
1430
   },
1431
   "outputs": [
1432
    {
1433
     "data": {
1434
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAtQUlEQVR4nO3deXxU1f3/8dcn+x6yESALQUUQ0ICsFb+KWipuoFKK1r0u5atSbWst+tW6/4qtWmsVK7Yu1JViFbS4gSK2SiAgq+yImQQIISQhIQlZ5vz+uJMwgSyTZDI3mfk8H488ZubeOzMfpvU9Z8499xwxxqCUUsp/BdldgFJKqa6lQa+UUn5Og14ppfycBr1SSvk5DXqllPJzIXYXcKzk5GSTlZVldxlKKdWjrF69+oAxJqW5fd0u6LOyssjNzbW7DKWU6lFE5PuW9mnXjVJK+TkNeqWU8nMa9Eop5ec06JVSys9p0CullJ9rM+hF5CUR2S8iG1vYLyLyjIjsEJH1InK6277rRGS76+86bxaulFLKM5606F8BJrWy/wJgoOvvFuB5ABFJBB4AxgJjgAdEJKEzxSqllGq/NsfRG2OWi0hWK4dMAeYZa77jFSLSS0T6AhOAT40xBwFE5FOsL4w3O121Uu313XIIj4N+w+2uxH71tZD7MhwusrsSday4fjDqBq+/rDcumEoDHG6P813bWtp+HBG5BevXAJmZmV4oSSk3hZvgtakQFg23roDYPnZXZK8vHoflfwTE7krUsdJHddug7zRjzFxgLsCoUaN0JRTlPXU18K+fW635msOwaCb8dD5IgIZc/mr48inI/ilc9rzd1Sgf8caomwIgw+1xumtbS9uV8p0vHofCDTD5LzDxIdj+CayZZ3dV9qiphHd/DrF94YLZdlejfMgbQb8IuNY1+mYcUGaM2Qt8DPxIRBJcJ2F/5NqmlG84VsF/noLhV8HgC2H0zTDgLPj4XijZbXd1vrf0ISjeDpc+BxHxdlejfMiT4ZVvAl8Dg0QkX0RuFJEZIjLDdchiYBewA3gRuBXAdRL2EWCV6+/hhhOzSnW5mkp4bwbEpcGk31vbgoJgyhyQIHjvVnA67a3Rl3Z9ATl/hTE/hxMm2F2N8jFPRt1c2cZ+A9zWwr6XgJc6VppSnbDkQSjeAdcuatp67ZUBk2bDwlthxRw443bbSvSZ6jJYeBsknQQ/fNDuapQN9MpY5X92LYOVL8DYGXDC2cfvH/5TGHQRLH0Y9m/xeXk+99G9cKgALv0rhEXZXY2ygQa98i/VZfCeq/V63gPNHyMCl/wZwmOsk5P1tb6t0Ze2LIa1r8GZv4SM0XZXo2yiQa/8y0f3QPkeuOyF1luvMSlw8dOwdy0sf8JX1fnW4QPw/i8g9VQ4e5bd1SgbadAr/7Hl37D2dTjzV9aFJ20ZMhlOm25dPFSwpuvr8yVj4INfQlUpXPZXCAmzuyJlo25xwZRSnXb4ALx/B/Q5Fc7+refPu+AP8N2X8O4M+PkXEBrZdTX60oZ/wuZF1snXPsPsruY4dfVOvj9YSX5JFWHBQUSFBRMZFkxkqNttaDBBQQF6YZuXadCrns8Y+OBOq3/+2oXta71G9rLGlf/jMvjsUTj/sa6q0ncO7YHFd0HGWDjjF7aWUlvv5PviSrYXlrN9fwXbCsvZsb+CXUWHqalve3hreEgQkWHBRIUGE+H6AogKCyYi9Oj9SNfjKNd+634IkWFBri+OkKbPc71eZFgw4SFBSABcJa1Br3q+9fNh8/vww4cgdWj7n3/iuTD6Jvj6ORh0AWSd6f0afcUYayhlfS1c+jwEBfvkbWvrnew+cLgxzLfvr2BHYQW7DlRQW390VpOMxEhO7h3L2YNSGNg7lszEKOrqnVTV1lNVW09lTT3VtfVU1ViP3W8ra+updj0ur66jqPzI0ee49tc72zeDigiNXwJRYSFEh4cQHRZs3YYHE92wLdzaFhMeQlRYCDHhR4+3tgVbt+HBhIf45jNvDw161bOVFcDi30DGODhjZsdfZ+LDsPMzeO9/4X+/gvBY79XoS7l/t/4dFz4BSSd6/eVr6pzsLj7M9sKjrfNtheV8d+Awda6QFYGMhChOTo3hnMG9OTk1hoG9YzmxdzRRYV0bOTV11pdGtesLoOGLovGx68uisqaOqlrXF0xNHZU11v6KI3UcPlJHaVUtBaVVHHY9Plzj+ZdIaLC4vjCsLwjri+HYL45jvlBc21JiwhmW5v2rljXoVc/V0Hp11sKlc1ptvdbWOwkWabnPNyzaGmf+8iRrioTJf+miortQ8U745H444RzrF0onHKmrZ/eBysbWeUPXy+5jAr1/YhQn9Y7lh0NSjwZ6SgyRYfa0asNCgggLCSI+MtSrr2uM4Uid0xX89RyuOfoFcPhIHRVH6qh0PW64X3HE+kJp+PI4UHHE2uc6pqbu+K6r4Rm9eO+28V6tHTToVQ9TW++krKqW0spaQtf8nf67PmfNqfez5luhtHIrpVU1lFTWUlZZS0llDaWVtZRV1VJxpI6osGAGpsYyODWWQX2O/iXHhFsvnunq0/7v0zD4Yjj5fFv/re3irLemdQgKhSnPeTw755G6enYVHT4a5oUVbN9fzu7iysYWbJBA/6RoTuodw/lDUxnYO5aBqTGcmBJDRGj366boCiJChKv/PynGO69ZW++k8kg9FQ1fGkfqCA3umoGQGvTKFnUNgV1VS6krkEtd4dwQ5Mfdr6yl/EgdAP1lHx+GPcZy56lcu2owsJkggV5RYfSKDKVXVCipcREMSo2lV1QY8ZGhlFTWsK2wnCWbC3k79+hSCckxYQzqE8vJqbEMSbmGixM+ImLhTOS2FRCVaNMn1E5f/QUcK+CyuRDfdNmHmjone0qr+P5gJXkHK3EcrGT3gcPs2F/B7uLDNPRIBAlkJUUzMDWGC4b1ZaCrhX5CSnTABLovhQYHER8VRHyUd399NEesqWq6j1GjRpnc3Fy7y1CddKDiCOvzS1nrKOO7A4cpdYV2Qyu7vLquxecGCcRHhlqhHRXqCu6G+2EkRAZx0eobiSvfyfapnxCT0p/4qFBiw0M8Ho5XVH6ErfvK2VpYztZ9h9i6r5xthRVU1dYzRHbzXtj9fBnyA97q/xCDG1r/qbEMSI4mpItaXR1WuAkzdwKHMs7jyxFPkldSRV6xFep5ByvZU1qFe/dyWEgQmYlRnJQSY4V5aiwDe8cwIFkDvScTkdXGmGYvINEWveq0w0fq2FhQxrr8UtY5rNv8kirACu2MxCgSosJIjA7jhOToJgGeEG21thPcgjw2oo3A/s+f4OA3cPmLDBl8SodqTokNJyU2nDMHJjduczoNjpJKtuwrJ3dlPud9P4ev937InC0jG7sxwoKDOLF3DINdvwAavgT6xkd06TC9eqdhT2kVjoOVjS3zvOJK9hSX8fuDd5JkIjh/yxQOblkLWL9SMhKjGNk/gctHpJGRGEX/pGgyE6PoHRuu49MDjLboVbvU1jvZVlhuBbqjlHX5pWwrLG9sMWYkRpKd3sv6y+jFsLQ474602LcR5k6whkH+ZF7XrRRVX2edmD2wnepb/svO6li3XwDW396y6sbDYyNCGOTq+z/6JRDXrp/lFUfq3Frih8k7WMn3xVZXS35JVeNJULBGdqQnRHFn0NtMOfQGn5z6FM5BF9E/KYqMxChiwrUNF2haa9Fr0KsWGWNwHKxibX6pFeqOUjbuKaO61hotkBAVSnaGFerDM3pxWno8SQ0nNrtCXQ28eC5U7LPWfo1Obvs5nXFgB/z1TGtc/VX/PO5Lpayylm37y9my72j3z5Z95U26pfrERRw98ZtqfQFU1tQ1dqu4h3nx4Zomrx8fGdoY3P0To8hMjCIzybrtGx9J8J7V8PeJcNoVuiyg0q4b5ZniiiOsc/Wrr3OUsj6/lJJKa2bHiNAghvWL56qx/cnO6MXw9F5kJEb69qrCL2ZbywJe8WbXhzxA8knW8oMf3g1rXoWR1zfZHR8VyuisREZnHT1ha4xh36FqtuwrZ5ur5b9lXzlf7yo+bjhdkEBaQiSZiVH8aGgqmYlW10r/pCgyEqJa/zXQuCxgP10WULVJgz5AVdbUsbHgEOscpY0tdvd+9ZNTYzl/aB9OS+9FdkY8J6fGdtnQL484Vll988OvtpYF9JXRN1uTpX38f9bKTAlZrR4uIvSNj6RvfCTnDOrduL2u3snu4kp27C8nKiyE/klR9OsV2fHPdOlDzS+solQztOsmANTVO9lWWOE6WVrKWkfTfvX0hMjGVnqX9Kt3Vk2l1YVSX2NdtRoR59v3L8uHOT+A1GFw/Qc+m1agRbu+gHmTrWUBL/yDvbWobkO7bgKA02koPlzDvrJq9h2qZl9ZFbuLK1mfX8qGgqP96r2iQslO78WPhvZheEY8p6X3OnrBUHe15AE4uBOue9/3IQ8Qnw4XPG5Nj7BiTuemWuis6jLrwihdFlC1gwZ9D1BT52R/eTX7yqrZW1ZN4SHr1gp0629/eXWTyaPAmvnv1LSj/erZ6fFkJkb1rNn6di2DlXOtZQEHnGVfHdlXwuYPYOkjcNIPoXfHhnV2WsPCKj/7RJcFVB7ToLfZ4SN1TcLbuq1iX9kR9h2ybg9UHDnueZGhwfSNj6BPfARjByTSx3W/T1xE4/3k6B4+XtqTZQF9pWH5wTljrZOgNy2F4K6/orGJLYuthVX+59e6LKBqFw36LmKMoaSylr1lVUdb4A1/bi3xhkv63SW4Lt/vGx/BqWnx9ImLpE98OH3iIxuDPC4ipGe1zDviw1lW6/XGT7tH67Vh+cH511jLD55zj+/eW5cFVJ2gQe9FTqdhfq6DuV/uIr+kqtnhdL1jI0iNj+DElBjGn5TcpBXeNz6C1LgIvQwdrJEu696As37j2bKAvjJksjVuffkfrUnP0k7v+vfszMIqSqFB7zUb8su4b+FG1jlKGZHZi4mnpDYJ777xkSTHhHW/eVK6o4oiWPQL6HManHW33dUc74LHYfeXVhfOz5d3/fKDjQurPNixhVVUwNOg76TSyhr++PFW3liZR1J0OH+ans2lw9P8v1ulqzS0Xo8cgsve756t18heMOVZa/nBpY/ApP/Xde/VuLCK/csCqp5Lg76DGrppHv9oC4eq67jhjAHcOXEgcRE+PkHnb9a/DVs+cC0LOMTualrWsPzgijnWBVxdsfygMbDodtfCKr5bFlD5Hw36DtiQX8b9Czey1lHK6KwEHp4yjFP62jC+29+U5cPiuzu/LKCvdPXyg128LKAKHNph3A6llTXc994GJj/3H/JLqvjT9Gzm//wHGvLeYAwsvB2cddYEXT2h9dqw/GBZvrX8oDd5cVlApbRF7wGn0/DP1Q4e/2grpZU1XH9GFr+ceLJ203jTqr/Brs/hoqcg8QS7q/Fc5lgYf4c1D4+3lh901lu/Etq5LKBSLdGgb8PGgjLue8+9m2astuC9raH1euJ5MOpndlfTfhPuge2fwqKZ1vTJnV1+8KtnwJHT7LKASnWEdt20oKGb5pJnrW6ap36i3TRdwlkP786wRtdMebZntl5DwuGyv0LlQfj3rzr3WoWb4PP/B6dcAqf9xDv1qYDnUdCLyCQR2SoiO0TkuMvyRKS/iCwVkfUiskxE0t321YvIWtffIm8W3xWcTsP8VQ7OffIL3sjJ4/ozsvjsrrO5/PR0HTLZFf77Z8hfaZ1wjOtndzUd1+dUmDALNr0LGxZ07DXqauBfP7emHb746Z75pae6pTa7bkQkGHgOmAjkA6tEZJEx5lu3w54A5hljXhWRc4HfA9e49lUZY4Z7t+yusbHAGk3zTV4po/pb3TRD+mkLvsvs2+hqvU6GU6fZXU3njb8Ttn0E//419B8PcX3b9/wvHnctrPKGbxZWUQHDkxb9GGCHMWaXMaYGeAuYcswxQ4DPXPc/b2Z/t1ZWWcvvFm5k8rP/wXGwkienZfPPGT/QkO9KdUesK0sjE+DiP/lH6zU4xBqFU3fEGv/enrUeHKvgP0/B8Ktg8EVdV6MKSJ4EfRrgcHuc79rmbh1wuev+ZUCsiCS5HkeISK6IrBCRS5t7AxG5xXVMblFRkefVd1LDRU/nPrmM11Z8z7U/yGLprycwdaR203S5ZbOhcCNMfsa/Wq/JJ1nj63csgdWvePacmkp4bwbEpcGk33dpeSoweWvUzV3AsyJyPbAcKADqXfv6G2MKROQE4DMR2WCM2en+ZGPMXGAuWCtMeammVm0sKON3CzeyxtVN8w/tpvEdx0r479PWsoCDLrC7Gu8bfZN1dW/D8oOJA1o/fsmDuiyg6lKetOgLgAy3x+mubY2MMXuMMZcbY0YA/+faVuq6LXDd7gKWASM6XXUnuHfT5B2s5Ilp1mgaDXkfqTlsjbLx59ZrUBBcOse66Ou9W62RRS3ZtQxWvmAtC3jC2T4rUQUWT4J+FTBQRAaISBhwBdBk9IyIJItIw2vdA7zk2p4gIuENxwDjAfeTuD7jdBr+2Uw3zY9HpvfsxTl6miUPWssCXjrHnmUBfaVh+cG8r6z5cJrjvrCKLguoulCbXTfGmDoRuR34GAgGXjLGbBKRh4FcY8wiYALwexExWF03t7mefgrwgog4sb5UZh8zWscnNu0p43cLN7H6+xJG9k9g3pQxDO2nP5F9rnFZwP+1d1lAX8m+0ppXf+nDzS8/2N0WVlF+S0x7Rgb4wKhRo0xubq5XXqusqpanPtnKP1Z8T0JUGLMuGMzU07UFb4uqUnj+DAiNghlfdv0c7t1FRRHMGWdd4eq+/OCWf8NbP4X/uQvOu9/eGpVfEJHVxphmV+nxyykQnE7DO2vymf3hFkoqa7hmXH9+9aNBxEfq3DS2+WgWlO+zWq+BEvJgLT94ydPw9tXWqlTn3OtaFvAO6yKrs39rd4UqAPhd0Lt305ye2Yt5N2o3je02fwDr3nQtCzjS7mp875RLXMsPPmFNevafP+mygMqn/CboD1XX8tQn25j39W4SosL4449Ps6+bprrMumhGQfUhV+u1my4L6CsNyw++NhWqSnRZQOVTfhP01bX1vPtNAVeP68+vJw4iPsqmbpqCNfDiuUD3Ovdhq+Cw7rssoK+4Lz+oywIqH/OboO8dG8Hyu8+xvx9+52eAgUmPW5fEK+g3onsvC+grJ54L1y+2Rt/0hIVVlN/wqySyPeTBmkc8eRCMm2F3Jao7yhpvdwUqAOl89N7kdFqX92eMsbsSpZRqpEHvTQe2QXUpZI6zuxKllGqkQe9NjhzrNmOsvXUopZQbDXpvcqyEyERr7hKllOomNOi9ybHCas3rXPZKqW5Eg95bDhdbc4rriVilVDejQe8t+SutWz0Rq5TqZjTovSVvBQSFWhcHKaVUN6JB7y2OldA3O7BmZlRK9Qga9N5QVwN71uiwSqVUt6RB7w371kNdtZ6IVUp1Sxr03qAXSimlujENem/IWwG9MiGur92VKKXUcTToO8sYq0WvrXmlVDelQd9Zpd9DRaEGvVKq29Kg7yyH60IpDXqlVDelQd9ZjhwIi9H1P5VS3ZYGfWfl5UD6KF0aTinVbWnQd0b1Idi/SbttlFLdmgZ9ZxTkgnFq0CulujUN+s5wrATE6rpRSqluSoO+Mxw51knYiHi7K1FKqRZp0HeUsx4cq3R+G6VUt6dB31H7N0NNufbPK6W6PY+CXkQmichWEdkhIrOa2d9fRJaKyHoRWSYi6W77rhOR7a6/67xZvK0cK6xbDXqlVDfXZtCLSDDwHHABMAS4UkSGHHPYE8A8Y8xpwMPA713PTQQeAMYCY4AHRCTBe+XbyLESontDQpbdlSilVKs8adGPAXYYY3YZY2qAt4ApxxwzBPjMdf9zt/3nA58aYw4aY0qAT4FJnS+7G3DkQOZYELG7EqWUapUnQZ8GONwe57u2uVsHXO66fxkQKyJJHj4XEblFRHJFJLeoqMjT2u1TXgglu7XbRinVI3jrZOxdwNki8g1wNlAA1Hv6ZGPMXGPMKGPMqJSUFC+V1IV0oRGlVA8S4sExBUCG2+N017ZGxpg9uFr0IhIDTDXGlIpIATDhmOcu60S93YMjB4LDrcXAlVKqm/OkRb8KGCgiA0QkDLgCWOR+gIgki0jDa90DvOS6/zHwIxFJcJ2E/ZFrW8/myIF+IyAk3O5KlFKqTW0GvTGmDrgdK6A3A/ONMZtE5GERmew6bAKwVUS2AanAY67nHgQewfqyWAU87NrWc9VWw5611olYpZTqATzpusEYsxhYfMy237ndXwAsaOG5L3G0hd/z7fkGnLXaP6+U6jH0ytj2ajgRm65THyilegYN+vZy5EDiiRDTA0YHKaUUGvTtY4wV9Npto5TqQTTo2+PgLqgs1hOxSqkeRYO+PfJ0IjOlVM+jQd8ejhxrkZHkQXZXopRSHtOgbw9HjjXaJkg/NqVUz6GJ5amqEijaot02SqkeR4PeU/m51q2eiFVK9TAa9J7KWwESDP1Ot7sSpZRqFw16TzlyoM8wCI+xuxKllGoXDXpP1NdCwWrIGGd3JUop1W4a9J4o3Ai1lZCh89sopXoeDXpPOFZat5naoldK9Twa9J7IWwFxaRCfbnclSinVbhr0nnCs1G4bpVSPpUHflrJ8OJSvJ2KVUj2WBn1bGhYa0Ra9UqqH0qBvi2MlhEZBn1PtrkQppTpEg74teSsgbSQEh9pdiVJKdYgGfWtqDsO+Ddpto5Tq0TToW1OwBky9nohVSvVoGvStcbhWlEofZW8dSinVCRr0rXGstFaTikq0uxKllOowDfqWOJ3W0Eqdf14p1cNp0LfkwDaoLtMVpZRSPZ4GfUsaL5TSE7FKqZ5Ng74ljhyITISkE+2uRCmlOkWDviWOHKvbRsTuSpRSqlM06Jtz+AAU79ATsUopv6BB35yGhUb0RKxSyg94FPQiMklEtorIDhGZ1cz+TBH5XES+EZH1InKha3uWiFSJyFrX31+9/Q/oEo4cCAqFfiPsrkQppTotpK0DRCQYeA6YCOQDq0RkkTHmW7fD7gPmG2OeF5EhwGIgy7VvpzFmuFer7mqOHOibDaGRdleilFKd5kmLfgywwxizyxhTA7wFTDnmGAPEue7HA3u8V6KP1dVYc9xot41Syk94EvRpgMPtcb5rm7sHgatFJB+rNT/Tbd8AV5fOFyLyP829gYjcIiK5IpJbVFTkefVdYe86qD+iJ2KVUn7DWydjrwReMcakAxcC/xCRIGAvkGmMGQH8CnhDROKOfbIxZq4xZpQxZlRKSoqXSuqgxgulNOiVUv7Bk6AvADLcHqe7trm7EZgPYIz5GogAko0xR4wxxa7tq4GdwMmdLbpLOXKgV3+I7WN3JUop5RWeBP0qYKCIDBCRMOAKYNExx+QB5wGIyClYQV8kIimuk7mIyAnAQGCXt4r3OmOOXiillFJ+os1RN8aYOhG5HfgYCAZeMsZsEpGHgVxjzCLg18CLIvJLrBOz1xtjjIicBTwsIrWAE5hhjDnYZf+azir9HioKdUUppZRfaTPoAYwxi7FOsrpv+53b/W+B8c087x3gnU7W6Dt5rv75TJ3ITCnlP/TKWHeOHAiLhd5D7K5EKaW8RoPenWOltWxgULDdlSillNdo0DeoPgT7N+mJWKWU39Ggb1CQC8apJ2KVUn5Hg75BXg4gkD7a7kqUUsqrNOgbOHIgdShEHHfhrlJK9Wga9ADOesjP1f55pZRf0qAH2P8t1JRr0Cul/JIGPbhNZKYnYpVS/keDHqwTsTGpkJBldyVKKeV1GvTgmshsDIjYXYlSSnmdBn35Pmsyswyd30Yp5Z806HWhEaWUn9Ogd6yE4HDoe5rdlSilVJfQoM9bAWmnQ0i43ZUopVSXCOygr62yFgPXYZVKKT8W2EG/Zy04a/VErFLKrwV20DtWWLfaoldK+bEAD/qVkHgiRCfbXYlSSnWZwA16Y6yhlbo+rFLKzwVu0BfvhMpi7bZRSvm9wA16vVBKKRUgAjjoV0BEPCQPsrsSpZTqUgEc9CshfQwEBe5HoJQKDIGZclUlULQFMrXbRinl/wIz6B2rrFvtn1dKBYAADfockGBIG2l3JUop1eUCN+j7nAph0XZXopRSXS7wgr6+FgpWa7eNUipgBF7QF26E2ko9EauUChgeBb2ITBKRrSKyQ0RmNbM/U0Q+F5FvRGS9iFzotu8e1/O2isj53iy+Q/L0QimlVGAJaesAEQkGngMmAvnAKhFZZIz51u2w+4D5xpjnRWQIsBjIct2/AhgK9AOWiMjJxph6b/9DPObIgbg0iE+3rQSllPIlT1r0Y4Adxphdxpga4C1gyjHHGCDOdT8e2OO6PwV4yxhzxBjzHbDD9Xr2ceRoa14pFVA8Cfo0wOH2ON+1zd2DwNUiko/Vmp/ZjuciIreISK6I5BYVFXlYegeU5cOhAg16pVRA8dbJ2CuBV4wx6cCFwD9ExOPXNsbMNcaMMsaMSklJ8VJJzWiYyExPxCqlAkibffRAAZDh9jjdtc3djcAkAGPM1yISASR7+FzfycuB0ChIHWZbCUop5WuetLpXAQNFZICIhGGdXF10zDF5wHkAInIKEAEUuY67QkTCRWQAMBBY6a3i282RY10NGxxqWwlKKeVrbQa9MaYOuB34GNiMNbpmk4g8LCKTXYf9GrhZRNYBbwLXG8smYD7wLfARcJttI26OVMC+Ddo/r5QKOJ503WCMWYx1ktV92+/c7n8LjG/huY8Bj3WiRu/YswZMvQa9UirgBM6VsY0rSo22tw6llPKxwAn6vBxIGQyRCXZXopRSPhUYQe90Qv5KXQhcKRWQAiPoD2yF6jLIGGd3JUop5XOBEfQOnchMKRW4AiToV0JUEiSdaHclSinlcx4Nr+zx8lZYrXkRuytRqtuqra0lPz+f6upqu0tRrYiIiCA9PZ3QUM8v/PT/oD98AA7uhNOvsbsSpbq1/Px8YmNjycrKQrRR1C0ZYyguLiY/P58BAwZ4/Dz/77pp7J/XE7FKtaa6upqkpCQN+W5MREhKSmr3r67ACPqgUOg33O5KlOr2NOS7v478bxQAQb/SCvnQSLsrUUopW/h30NcdgYI1OqxSqR6gtLSUOXPmdOi5F154IaWlpd4tyI/4d9DvXQ/1R/SKWKV6gNaCvq6urtXnLl68mF69enVBVZ1jjMHpdNpdhp+PunGssG61Ra9Uuzz0/ia+3XPIq685pF8cD1wytMX9s2bNYufOnQwfPpyJEydy0UUXcf/995OQkMCWLVvYtm0bl156KQ6Hg+rqau644w5uueUWALKyssjNzaWiooILLriAM888k6+++oq0tDQWLlxIZGTTrtv333+fRx99lJqaGpKSknj99ddJTU2loqKCmTNnkpubi4jwwAMPMHXqVD766CPuvfde6uvrSU5OZunSpTz44IPExMRw1113ATBs2DA++OADAM4//3zGjh3L6tWrWbx4MbNnz2bVqlVUVVXx4x//mIceegiAVatWcccdd3D48GHCw8NZunQpF110Ec888wzDhw8H4Mwzz+S5554jOzu7w5+9nwd9DvTqD7F97K5EKdWG2bNns3HjRtauXQvAsmXLWLNmDRs3bmwcSvjSSy+RmJhIVVUVo0ePZurUqSQlJTV5ne3bt/Pmm2/y4osv8pOf/IR33nmHq6++uskxZ555JitWrEBE+Nvf/sYf/vAHnnzySR555BHi4+PZsGEDACUlJRQVFXHzzTezfPlyBgwYwMGDB9v8t2zfvp1XX32VceOs0X6PPfYYiYmJ1NfXc95557F+/XoGDx7M9OnTefvttxk9ejSHDh0iMjKSG2+8kVdeeYWnn36abdu2UV1d3amQB38OemOsE7EnTLC7EqV6nNZa3r40ZsyYJuPFn3nmGd59910AHA4H27dvPy7oBwwY0NgaHjlyJLt37z7udfPz85k+fTp79+6lpqam8T2WLFnCW2+91XhcQkIC77//PmeddVbjMYmJiW3W3b9//8aQB5g/fz5z586lrq6OvXv38u233yIi9O3bl9GjranT4+LiAJg2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\n",
1435
      "text/plain": [
1436
       "<Figure size 432x288 with 1 Axes>"
1437
      ]
1438
     },
1439
     "metadata": {
1440
      "needs_background": "light"
1441
     },
1442
     "output_type": "display_data"
1443
    }
1444
   ],
1445
   "source": [
1446
    "plt.plot(fit.history['accuracy'], label='train accuracy')\n",
1447
    "plt.plot(fit.history['val_accuracy'], label='val accuracy')\n",
1448
    "plt.legend()\n",
1449
    "plt.show()"
1450
   ]
1451
  },
1452
  {
1453
   "cell_type": "code",
1454
   "execution_count": 25,
1455
   "id": "0a8d626d",
1456
   "metadata": {
1457
    "execution": {
1458
     "iopub.execute_input": "2021-08-16T05:47:12.617024Z",
1459
     "iopub.status.busy": "2021-08-16T05:47:12.615595Z",
1460
     "iopub.status.idle": "2021-08-16T05:47:19.505613Z",
1461
     "shell.execute_reply": "2021-08-16T05:47:19.504696Z",
1462
     "shell.execute_reply.started": "2021-08-16T04:55:48.222802Z"
1463
    },
1464
    "papermill": {
1465
     "duration": 8.065534,
1466
     "end_time": "2021-08-16T05:47:19.505775",
1467
     "exception": false,
1468
     "start_time": "2021-08-16T05:47:11.440241",
1469
     "status": "completed"
1470
    },
1471
    "tags": []
1472
   },
1473
   "outputs": [
1474
    {
1475
     "name": "stdout",
1476
     "output_type": "stream",
1477
     "text": [
1478
      "20/20 [==============================] - 7s 328ms/step - loss: 0.3233 - accuracy: 0.9183\n"
1479
     ]
1480
    },
1481
    {
1482
     "data": {
1483
      "text/plain": [
1484
       "[0.3232859969139099, 0.9182692170143127]"
1485
      ]
1486
     },
1487
     "execution_count": 25,
1488
     "metadata": {},
1489
     "output_type": "execute_result"
1490
    }
1491
   ],
1492
   "source": [
1493
    "model.evaluate(test_set)"
1494
   ]
1495
  },
1496
  {
1497
   "cell_type": "code",
1498
   "execution_count": null,
1499
   "id": "96acda4e",
1500
   "metadata": {
1501
    "papermill": {
1502
     "duration": 2.053401,
1503
     "end_time": "2021-08-16T05:47:22.715855",
1504
     "exception": false,
1505
     "start_time": "2021-08-16T05:47:20.662454",
1506
     "status": "completed"
1507
    },
1508
    "tags": []
1509
   },
1510
   "outputs": [],
1511
   "source": []
1512
  }
1513
 ],
1514
 "metadata": {
1515
  "kernelspec": {
1516
   "display_name": "Python 3",
1517
   "language": "python",
1518
   "name": "python3"
1519
  },
1520
  "language_info": {
1521
   "codemirror_mode": {
1522
    "name": "ipython",
1523
    "version": 3
1524
   },
1525
   "file_extension": ".py",
1526
   "mimetype": "text/x-python",
1527
   "name": "python",
1528
   "nbconvert_exporter": "python",
1529
   "pygments_lexer": "ipython3",
1530
   "version": "3.7.10"
1531
  },
1532
  "papermill": {
1533
   "default_parameters": {},
1534
   "duration": 2490.272696,
1535
   "end_time": "2021-08-16T05:47:27.021874",
1536
   "environment_variables": {},
1537
   "exception": null,
1538
   "input_path": "__notebook__.ipynb",
1539
   "output_path": "__notebook__.ipynb",
1540
   "parameters": {},
1541
   "start_time": "2021-08-16T05:05:56.749178",
1542
   "version": "2.3.3"
1543
  }
1544
 },
1545
 "nbformat": 4,
1546
 "nbformat_minor": 5
1547
}