appledog00 commited on
Commit
1f65fc2
Β·
verified Β·
1 Parent(s): 89f0425

Upload modeltraining.ipynb

Browse files
Files changed (1) hide show
  1. modeltraining.ipynb +775 -0
modeltraining.ipynb ADDED
@@ -0,0 +1,775 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "nbformat": 4,
3
+ "nbformat_minor": 0,
4
+ "metadata": {
5
+ "colab": {
6
+ "provenance": []
7
+ },
8
+ "kernelspec": {
9
+ "name": "python3",
10
+ "display_name": "Python 3"
11
+ },
12
+ "language_info": {
13
+ "name": "python"
14
+ }
15
+ },
16
+ "cells": [
17
+ {
18
+ "cell_type": "code",
19
+ "source": [
20
+ "import pandas as pd\n",
21
+ "import numpy as np\n",
22
+ "import matplotlib.pyplot as plt\n",
23
+ "import matplotlib.mlab as mlab\n",
24
+ "\n",
25
+ "import tensorflow as tf\n",
26
+ "# 'flatten' has moved to tf.keras.layers in TensorFlow 2.0\n",
27
+ "from tensorflow.keras.layers import Flatten\n",
28
+ "\n",
29
+ "# Import MaxPooling2D from tensorflow.keras.layers instead of keras.layers.pooling\n",
30
+ "from tensorflow.keras.layers import MaxPooling2D\n",
31
+ "from tensorflow.keras.models import Sequential, Model\n",
32
+ "from tensorflow.keras.callbacks import EarlyStopping, Callback\n",
33
+ "from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Lambda, ELU,GlobalAveragePooling2D\n",
34
+ "# Import regularizers from tf.keras.regularizers\n",
35
+ "from tensorflow.keras import regularizers\n",
36
+ "from tensorflow.keras.layers import Convolution2D, Cropping2D, Conv2D\n",
37
+ "# Import MaxPooling2D from tensorflow.keras.layers instead of keras.layers.pooling\n",
38
+ "from tensorflow.keras.layers import MaxPooling2D\n",
39
+ "from tensorflow.keras.optimizers import Adam # Use Adam instead of adam\n",
40
+ "from sklearn.utils import shuffle\n",
41
+ "from tensorflow.keras.utils import to_categorical # Use to_categorical instead of np_utils\n",
42
+ "\n",
43
+ "\n",
44
+ "import time, cv2, glob"
45
+ ],
46
+ "metadata": {
47
+ "id": "bPYJsyFGBz2V"
48
+ },
49
+ "execution_count": 48,
50
+ "outputs": []
51
+ },
52
+ {
53
+ "cell_type": "code",
54
+ "source": [
55
+ "global inputShape,size"
56
+ ],
57
+ "metadata": {
58
+ "id": "2jnbeZv_Cd28"
59
+ },
60
+ "execution_count": 49,
61
+ "outputs": []
62
+ },
63
+ {
64
+ "cell_type": "code",
65
+ "source": [
66
+ "def kerasModel4():\n",
67
+ " model = Sequential()\n",
68
+ " model.add(Conv2D(16, (8, 8), strides=(4, 4), padding='valid', input_shape=(size,size,1)))\n",
69
+ " model.add(Activation('relu'))\n",
70
+ " model.add(Conv2D(32, (5, 5), padding=\"same\"))\n",
71
+ " model.add(Activation('relu'))\n",
72
+ " model.add(GlobalAveragePooling2D())\n",
73
+ " # model.add(Dropout(.2))\n",
74
+ " # model.add(Activation('relu'))\n",
75
+ " # model.add(Dense(1024))\n",
76
+ " # model.add(Dropout(.5))\n",
77
+ " model.add(Dense(512))\n",
78
+ " model.add(Dropout(.1))\n",
79
+ " model.add(Activation('relu'))\n",
80
+ " # model.add(Dense(256))\n",
81
+ " # model.add(Dropout(.5))\n",
82
+ " # model.add(Activation('relu'))\n",
83
+ " model.add(Dense(2))\n",
84
+ " model.add(Activation('softmax'))\n",
85
+ " return model\n",
86
+ "\n",
87
+ "size=100"
88
+ ],
89
+ "metadata": {
90
+ "id": "OvWEIo0rCfWS"
91
+ },
92
+ "execution_count": 50,
93
+ "outputs": []
94
+ },
95
+ {
96
+ "cell_type": "code",
97
+ "source": [
98
+ "# Paths to datasets (update these paths)\n",
99
+ "from google.colab import drive\n",
100
+ "drive.mount('/content/drive') # Mount Google Drive if datasets are stored there"
101
+ ],
102
+ "metadata": {
103
+ "colab": {
104
+ "base_uri": "https://localhost:8080/"
105
+ },
106
+ "id": "QHoe_-u5CnKK",
107
+ "outputId": "0bdebe3f-f19b-4178-d556-6e8f6e3c1f96"
108
+ },
109
+ "execution_count": 51,
110
+ "outputs": [
111
+ {
112
+ "output_type": "stream",
113
+ "name": "stdout",
114
+ "text": [
115
+ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
116
+ ]
117
+ }
118
+ ]
119
+ },
120
+ {
121
+ "cell_type": "code",
122
+ "source": [
123
+ " ## load Training data : pothole\n",
124
+ "potholeTrainImages = glob.glob(\"/content/drive/MyDrive/Colab Notebooks/withpotholes/*.jpg\")\n",
125
+ "potholeTrainImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/withpotholes/*jpg\"))\n",
126
+ "potholeTrainImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/withpotholes/*jpg\"))\n"
127
+ ],
128
+ "metadata": {
129
+ "id": "4kqT_bfhCso2"
130
+ },
131
+ "execution_count": 52,
132
+ "outputs": []
133
+ },
134
+ {
135
+ "cell_type": "code",
136
+ "source": [
137
+ "train1 = [cv2.imread(img,0) for img in potholeTrainImages]\n",
138
+ "for i in range(0,len(train1)):\n",
139
+ " train1[i] = cv2.resize(train1[i],(size,size))\n",
140
+ "temp1 = np.asarray(train1)\n"
141
+ ],
142
+ "metadata": {
143
+ "id": "kFAke355Dbhg"
144
+ },
145
+ "execution_count": 53,
146
+ "outputs": []
147
+ },
148
+ {
149
+ "cell_type": "code",
150
+ "source": [
151
+ "# ## load Training data : non-pothole\n",
152
+ "nonPotholeTrainImages = glob.glob(\"/content/drive/MyDrive/Colab Notebooks/withpotholes/*.jpg\")\n",
153
+ "nonPotholeTrainImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/withpotholes/*.jpg\"))\n",
154
+ "nonPotholeTrainImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/withpotholes/*.jpg\"))\n",
155
+ "train2 = [cv2.imread(img,0) for img in nonPotholeTrainImages]\n",
156
+ "# train2[train2 != np.array(None)]\n",
157
+ "for i in range(0,len(train2)):\n",
158
+ " train2[i] = cv2.resize(train2[i],(size,size))\n",
159
+ "temp2 = np.asarray(train2)\n"
160
+ ],
161
+ "metadata": {
162
+ "id": "pqTIuIzMDsYy"
163
+ },
164
+ "execution_count": 54,
165
+ "outputs": []
166
+ },
167
+ {
168
+ "cell_type": "code",
169
+ "source": [
170
+ "## load Testing data : non-pothole\n",
171
+ "nonPotholeTestImages = glob.glob(\"/content/drive/MyDrive/Colab Notebooks/plain/*.jpg\")\n",
172
+ "nonPotholeTestImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/plain/*.jpg\"))\n",
173
+ "nonPotholeTestImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/plain/*.jpg\"))\n",
174
+ "test2 = [cv2.imread(img,0) for img in nonPotholeTestImages]\n",
175
+ "# train2[train2 != np.array(None)]\n",
176
+ "for i in range(0,len(test2)):\n",
177
+ " test2[i] = cv2.resize(test2[i],(size,size))\n",
178
+ "temp4 = np.asarray(test2)\n"
179
+ ],
180
+ "metadata": {
181
+ "id": "GFpxQwh2EEFv"
182
+ },
183
+ "execution_count": 55,
184
+ "outputs": []
185
+ },
186
+ {
187
+ "cell_type": "code",
188
+ "source": [
189
+ "## load Testing data : potholes\n",
190
+ "potholeTestImages = glob.glob(\"/content/drive/MyDrive/Colab Notebooks/pot/*.jpg\")\n",
191
+ "potholeTestImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/pot/*.jpg\"))\n",
192
+ "potholeTestImages.extend(glob.glob(\"/content/drive/MyDrive/Colab Notebooks/pot/*.jpg\"))\n",
193
+ "test1 = [cv2.imread(img,0) for img in potholeTestImages]\n",
194
+ "# train2[train2 != np.array(None)]\n",
195
+ "for i in range(0,len(test1)):\n",
196
+ " test1[i] = cv2.resize(test1[i],(size,size))\n",
197
+ "temp3 = np.asarray(test1)\n"
198
+ ],
199
+ "metadata": {
200
+ "id": "uHMgVYCjEKOK"
201
+ },
202
+ "execution_count": 56,
203
+ "outputs": []
204
+ },
205
+ {
206
+ "cell_type": "code",
207
+ "source": [
208
+ "X_train = []\n",
209
+ "X_train.extend(temp1)\n",
210
+ "X_train.extend(temp2)\n",
211
+ "X_train = np.asarray(X_train)"
212
+ ],
213
+ "metadata": {
214
+ "id": "HD4Gh8spEM2I"
215
+ },
216
+ "execution_count": 57,
217
+ "outputs": []
218
+ },
219
+ {
220
+ "cell_type": "code",
221
+ "source": [
222
+ "X_test = []\n",
223
+ "X_test.extend(temp3)\n",
224
+ "X_test.extend(temp4)\n",
225
+ "X_test = np.asarray(X_test)"
226
+ ],
227
+ "metadata": {
228
+ "id": "HeFaDGtIEOPt"
229
+ },
230
+ "execution_count": 58,
231
+ "outputs": []
232
+ },
233
+ {
234
+ "cell_type": "code",
235
+ "source": [
236
+ "y_train1 = np.ones([temp1.shape[0]],dtype = int)\n",
237
+ "y_train2 = np.zeros([temp2.shape[0]],dtype = int)\n",
238
+ "y_test1 = np.ones([temp3.shape[0]],dtype = int)\n",
239
+ "y_test2 = np.zeros([temp4.shape[0]],dtype = int)\n"
240
+ ],
241
+ "metadata": {
242
+ "id": "WNKJFKSMES1j"
243
+ },
244
+ "execution_count": 59,
245
+ "outputs": []
246
+ },
247
+ {
248
+ "cell_type": "code",
249
+ "source": [
250
+ "print(y_train1[0])\n",
251
+ "print(y_train2[0])\n",
252
+ "print(y_test1[0])\n",
253
+ "print(y_test2[0])"
254
+ ],
255
+ "metadata": {
256
+ "colab": {
257
+ "base_uri": "https://localhost:8080/"
258
+ },
259
+ "id": "CZB11_drEVVv",
260
+ "outputId": "6378dec8-8f1b-4091-fcd4-c73ffbaaa24c"
261
+ },
262
+ "execution_count": 60,
263
+ "outputs": [
264
+ {
265
+ "output_type": "stream",
266
+ "name": "stdout",
267
+ "text": [
268
+ "1\n",
269
+ "0\n",
270
+ "1\n",
271
+ "0\n"
272
+ ]
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ "cell_type": "code",
278
+ "source": [
279
+ "y_train = []\n",
280
+ "y_train.extend(y_train1)\n",
281
+ "y_train.extend(y_train2)\n",
282
+ "y_train = np.asarray(y_train)"
283
+ ],
284
+ "metadata": {
285
+ "id": "cjiaVdDdF7d1"
286
+ },
287
+ "execution_count": 61,
288
+ "outputs": []
289
+ },
290
+ {
291
+ "cell_type": "code",
292
+ "source": [
293
+ "y_test = []\n",
294
+ "y_test.extend(y_test1)\n",
295
+ "y_test.extend(y_test2)\n",
296
+ "y_test = np.asarray(y_test)"
297
+ ],
298
+ "metadata": {
299
+ "id": "gguNEQDdGBV2"
300
+ },
301
+ "execution_count": 62,
302
+ "outputs": []
303
+ },
304
+ {
305
+ "cell_type": "code",
306
+ "source": [
307
+ "X_train,y_train = shuffle(X_train,y_train)\n",
308
+ "X_test,y_test = shuffle(X_test,y_test)"
309
+ ],
310
+ "metadata": {
311
+ "id": "H7nHX6EIGH0U"
312
+ },
313
+ "execution_count": 63,
314
+ "outputs": []
315
+ },
316
+ {
317
+ "cell_type": "code",
318
+ "source": [
319
+ "# X_train.reshape([-1,50,50,1])\n",
320
+ "# X_test.reshape([-1,50,50,1])/\n",
321
+ "X_train = X_train.reshape(X_train.shape[0], size, size, 1)\n",
322
+ "X_test = X_test.reshape(X_test.shape[0], size, size, 1)"
323
+ ],
324
+ "metadata": {
325
+ "id": "YYMZW4jXGKp0"
326
+ },
327
+ "execution_count": 64,
328
+ "outputs": []
329
+ },
330
+ {
331
+ "cell_type": "code",
332
+ "source": [
333
+ "from tensorflow.keras.utils import to_categorical # Import to_categorical\n",
334
+ "\n",
335
+ "y_train = to_categorical(y_train)\n",
336
+ "y_test = to_categorical(y_test)"
337
+ ],
338
+ "metadata": {
339
+ "id": "hKc1zK0dGNVz"
340
+ },
341
+ "execution_count": 66,
342
+ "outputs": []
343
+ },
344
+ {
345
+ "cell_type": "code",
346
+ "source": [
347
+ "print(\"train shape X\", X_train.shape)\n",
348
+ "print(\"train shape y\", y_train.shape)"
349
+ ],
350
+ "metadata": {
351
+ "colab": {
352
+ "base_uri": "https://localhost:8080/"
353
+ },
354
+ "id": "IxqUlHfDGbMz",
355
+ "outputId": "b51db7c5-87ad-44cd-b615-5d8ce41bea76"
356
+ },
357
+ "execution_count": 67,
358
+ "outputs": [
359
+ {
360
+ "output_type": "stream",
361
+ "name": "stdout",
362
+ "text": [
363
+ "train shape X (1896, 100, 100, 1)\n",
364
+ "train shape y (1896, 2)\n"
365
+ ]
366
+ }
367
+ ]
368
+ },
369
+ {
370
+ "cell_type": "code",
371
+ "source": [
372
+ "inputShape = (size, size, 1)\n",
373
+ "model = kerasModel4()"
374
+ ],
375
+ "metadata": {
376
+ "colab": {
377
+ "base_uri": "https://localhost:8080/"
378
+ },
379
+ "id": "35Hec5VEGe2Z",
380
+ "outputId": "dbab49a8-a7c4-42ee-b029-e3297a965e2d"
381
+ },
382
+ "execution_count": 68,
383
+ "outputs": [
384
+ {
385
+ "output_type": "stream",
386
+ "name": "stderr",
387
+ "text": [
388
+ "/usr/local/lib/python3.10/dist-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
389
+ " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n"
390
+ ]
391
+ }
392
+ ]
393
+ },
394
+ {
395
+ "cell_type": "code",
396
+ "source": [
397
+ "model.compile('adam', 'categorical_crossentropy', metrics=['accuracy'])\n",
398
+ "history = model.fit(X_train, y_train, epochs=100, validation_split=0.1)"
399
+ ],
400
+ "metadata": {
401
+ "colab": {
402
+ "base_uri": "https://localhost:8080/"
403
+ },
404
+ "id": "w5E5XYMaGip_",
405
+ "outputId": "9c9d4de9-5dd5-47a6-f5dc-a983dc8c89dd"
406
+ },
407
+ "execution_count": 72,
408
+ "outputs": [
409
+ {
410
+ "output_type": "stream",
411
+ "name": "stdout",
412
+ "text": [
413
+ "Epoch 1/100\n",
414
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 74ms/step - accuracy: 0.4764 - loss: 0.6938 - val_accuracy: 0.4000 - val_loss: 0.6989\n",
415
+ "Epoch 2/100\n",
416
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 100ms/step - accuracy: 0.5110 - loss: 0.6926 - val_accuracy: 0.4000 - val_loss: 0.7005\n",
417
+ "Epoch 3/100\n",
418
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.4717 - loss: 0.6933 - val_accuracy: 0.3947 - val_loss: 0.7008\n",
419
+ "Epoch 4/100\n",
420
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 73ms/step - accuracy: 0.5084 - loss: 0.6927 - val_accuracy: 0.4316 - val_loss: 0.7008\n",
421
+ "Epoch 5/100\n",
422
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 109ms/step - accuracy: 0.5099 - loss: 0.6924 - val_accuracy: 0.3947 - val_loss: 0.7013\n",
423
+ "Epoch 6/100\n",
424
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.5091 - loss: 0.6933 - val_accuracy: 0.3947 - val_loss: 0.7022\n",
425
+ "Epoch 7/100\n",
426
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 120ms/step - accuracy: 0.4962 - loss: 0.6933 - val_accuracy: 0.4053 - val_loss: 0.7015\n",
427
+ "Epoch 8/100\n",
428
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 69ms/step - accuracy: 0.5027 - loss: 0.6931 - val_accuracy: 0.3947 - val_loss: 0.7010\n",
429
+ "Epoch 9/100\n",
430
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 87ms/step - accuracy: 0.5115 - loss: 0.6927 - val_accuracy: 0.3947 - val_loss: 0.7017\n",
431
+ "Epoch 10/100\n",
432
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 94ms/step - accuracy: 0.5153 - loss: 0.6930 - val_accuracy: 0.3895 - val_loss: 0.7002\n",
433
+ "Epoch 11/100\n",
434
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 69ms/step - accuracy: 0.5031 - loss: 0.6929 - val_accuracy: 0.3947 - val_loss: 0.7010\n",
435
+ "Epoch 12/100\n",
436
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 76ms/step - accuracy: 0.5026 - loss: 0.6928 - val_accuracy: 0.4105 - val_loss: 0.7022\n",
437
+ "Epoch 13/100\n",
438
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 110ms/step - accuracy: 0.5000 - loss: 0.6928 - val_accuracy: 0.3895 - val_loss: 0.7004\n",
439
+ "Epoch 14/100\n",
440
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5066 - loss: 0.6932 - val_accuracy: 0.3895 - val_loss: 0.7021\n",
441
+ "Epoch 15/100\n",
442
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 69ms/step - accuracy: 0.5234 - loss: 0.6923 - val_accuracy: 0.4789 - val_loss: 0.7016\n",
443
+ "Epoch 16/100\n",
444
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 108ms/step - accuracy: 0.4960 - loss: 0.6949 - val_accuracy: 0.4000 - val_loss: 0.7007\n",
445
+ "Epoch 17/100\n",
446
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 71ms/step - accuracy: 0.5099 - loss: 0.6924 - val_accuracy: 0.4053 - val_loss: 0.7030\n",
447
+ "Epoch 18/100\n",
448
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 128ms/step - accuracy: 0.5063 - loss: 0.6927 - val_accuracy: 0.4158 - val_loss: 0.7030\n",
449
+ "Epoch 19/100\n",
450
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 71ms/step - accuracy: 0.4888 - loss: 0.6936 - val_accuracy: 0.4000 - val_loss: 0.7016\n",
451
+ "Epoch 20/100\n",
452
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 87ms/step - accuracy: 0.5073 - loss: 0.6926 - val_accuracy: 0.4211 - val_loss: 0.7009\n",
453
+ "Epoch 21/100\n",
454
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 94ms/step - accuracy: 0.5106 - loss: 0.6931 - val_accuracy: 0.4000 - val_loss: 0.7026\n",
455
+ "Epoch 22/100\n",
456
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 72ms/step - accuracy: 0.5018 - loss: 0.6922 - val_accuracy: 0.4000 - val_loss: 0.7034\n",
457
+ "Epoch 23/100\n",
458
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 72ms/step - accuracy: 0.5184 - loss: 0.6927 - val_accuracy: 0.3842 - val_loss: 0.7014\n",
459
+ "Epoch 24/100\n",
460
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 117ms/step - accuracy: 0.4969 - loss: 0.6922 - val_accuracy: 0.3947 - val_loss: 0.7033\n",
461
+ "Epoch 25/100\n",
462
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5071 - loss: 0.6927 - val_accuracy: 0.3842 - val_loss: 0.7030\n",
463
+ "Epoch 26/100\n",
464
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 70ms/step - accuracy: 0.5169 - loss: 0.6929 - val_accuracy: 0.3842 - val_loss: 0.7052\n",
465
+ "Epoch 27/100\n",
466
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 113ms/step - accuracy: 0.4999 - loss: 0.6922 - val_accuracy: 0.3842 - val_loss: 0.7053\n",
467
+ "Epoch 28/100\n",
468
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.5008 - loss: 0.6928 - val_accuracy: 0.3842 - val_loss: 0.7046\n",
469
+ "Epoch 29/100\n",
470
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 96ms/step - accuracy: 0.5097 - loss: 0.6927 - val_accuracy: 0.3842 - val_loss: 0.7061\n",
471
+ "Epoch 30/100\n",
472
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 70ms/step - accuracy: 0.5090 - loss: 0.6923 - val_accuracy: 0.3842 - val_loss: 0.7045\n",
473
+ "Epoch 31/100\n",
474
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 89ms/step - accuracy: 0.4618 - loss: 0.6936 - val_accuracy: 0.3842 - val_loss: 0.7048\n",
475
+ "Epoch 32/100\n",
476
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 92ms/step - accuracy: 0.5142 - loss: 0.6927 - val_accuracy: 0.3947 - val_loss: 0.7062\n",
477
+ "Epoch 33/100\n",
478
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 71ms/step - accuracy: 0.4957 - loss: 0.6932 - val_accuracy: 0.4737 - val_loss: 0.7059\n",
479
+ "Epoch 34/100\n",
480
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 81ms/step - accuracy: 0.4992 - loss: 0.6920 - val_accuracy: 0.3947 - val_loss: 0.7068\n",
481
+ "Epoch 35/100\n",
482
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 106ms/step - accuracy: 0.5201 - loss: 0.6929 - val_accuracy: 0.3842 - val_loss: 0.7032\n",
483
+ "Epoch 36/100\n",
484
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.4944 - loss: 0.6928 - val_accuracy: 0.3842 - val_loss: 0.7038\n",
485
+ "Epoch 37/100\n",
486
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 72ms/step - accuracy: 0.4995 - loss: 0.6923 - val_accuracy: 0.4000 - val_loss: 0.7059\n",
487
+ "Epoch 38/100\n",
488
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 103ms/step - accuracy: 0.5120 - loss: 0.6933 - val_accuracy: 0.4105 - val_loss: 0.7058\n",
489
+ "Epoch 39/100\n",
490
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.4931 - loss: 0.6916 - val_accuracy: 0.3842 - val_loss: 0.7028\n",
491
+ "Epoch 40/100\n",
492
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 101ms/step - accuracy: 0.5067 - loss: 0.6927 - val_accuracy: 0.3842 - val_loss: 0.7038\n",
493
+ "Epoch 41/100\n",
494
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5064 - loss: 0.6929 - val_accuracy: 0.3842 - val_loss: 0.7032\n",
495
+ "Epoch 42/100\n",
496
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5048 - loss: 0.6933 - val_accuracy: 0.3842 - val_loss: 0.7038\n",
497
+ "Epoch 43/100\n",
498
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 114ms/step - accuracy: 0.5032 - loss: 0.6935 - val_accuracy: 0.3842 - val_loss: 0.7054\n",
499
+ "Epoch 44/100\n",
500
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.5060 - loss: 0.6928 - val_accuracy: 0.3842 - val_loss: 0.7047\n",
501
+ "Epoch 45/100\n",
502
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 108ms/step - accuracy: 0.5102 - loss: 0.6921 - val_accuracy: 0.3842 - val_loss: 0.7075\n",
503
+ "Epoch 46/100\n",
504
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 71ms/step - accuracy: 0.4996 - loss: 0.6914 - val_accuracy: 0.3737 - val_loss: 0.7077\n",
505
+ "Epoch 47/100\n",
506
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 88ms/step - accuracy: 0.4958 - loss: 0.6932 - val_accuracy: 0.3737 - val_loss: 0.7066\n",
507
+ "Epoch 48/100\n",
508
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 99ms/step - accuracy: 0.5227 - loss: 0.6922 - val_accuracy: 0.3737 - val_loss: 0.7071\n",
509
+ "Epoch 49/100\n",
510
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 70ms/step - accuracy: 0.5179 - loss: 0.6918 - val_accuracy: 0.3737 - val_loss: 0.7079\n",
511
+ "Epoch 50/100\n",
512
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 114ms/step - accuracy: 0.4910 - loss: 0.6910 - val_accuracy: 0.4053 - val_loss: 0.7048\n",
513
+ "Epoch 51/100\n",
514
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.5031 - loss: 0.6925 - val_accuracy: 0.3789 - val_loss: 0.7065\n",
515
+ "Epoch 52/100\n",
516
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 110ms/step - accuracy: 0.5217 - loss: 0.6929 - val_accuracy: 0.3737 - val_loss: 0.7075\n",
517
+ "Epoch 53/100\n",
518
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.4968 - loss: 0.6923 - val_accuracy: 0.4105 - val_loss: 0.7090\n",
519
+ "Epoch 54/100\n",
520
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 104ms/step - accuracy: 0.4883 - loss: 0.6934 - val_accuracy: 0.3737 - val_loss: 0.7084\n",
521
+ "Epoch 55/100\n",
522
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 69ms/step - accuracy: 0.5087 - loss: 0.6929 - val_accuracy: 0.3895 - val_loss: 0.7082\n",
523
+ "Epoch 56/100\n",
524
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 91ms/step - accuracy: 0.5044 - loss: 0.6933 - val_accuracy: 0.3947 - val_loss: 0.7085\n",
525
+ "Epoch 57/100\n",
526
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 94ms/step - accuracy: 0.5206 - loss: 0.6913 - val_accuracy: 0.3895 - val_loss: 0.7066\n",
527
+ "Epoch 58/100\n",
528
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 69ms/step - accuracy: 0.4847 - loss: 0.6935 - val_accuracy: 0.3737 - val_loss: 0.7087\n",
529
+ "Epoch 59/100\n",
530
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5329 - loss: 0.6918 - val_accuracy: 0.3737 - val_loss: 0.7097\n",
531
+ "Epoch 60/100\n",
532
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 107ms/step - accuracy: 0.5280 - loss: 0.6919 - val_accuracy: 0.4053 - val_loss: 0.7122\n",
533
+ "Epoch 61/100\n",
534
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 69ms/step - accuracy: 0.5096 - loss: 0.6917 - val_accuracy: 0.3842 - val_loss: 0.7079\n",
535
+ "Epoch 62/100\n",
536
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 88ms/step - accuracy: 0.5037 - loss: 0.6923 - val_accuracy: 0.3737 - val_loss: 0.7094\n",
537
+ "Epoch 63/100\n",
538
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 91ms/step - accuracy: 0.5177 - loss: 0.6918 - val_accuracy: 0.3737 - val_loss: 0.7101\n",
539
+ "Epoch 64/100\n",
540
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5072 - loss: 0.6931 - val_accuracy: 0.3737 - val_loss: 0.7095\n",
541
+ "Epoch 65/100\n",
542
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 80ms/step - accuracy: 0.5213 - loss: 0.6926 - val_accuracy: 0.3737 - val_loss: 0.7123\n",
543
+ "Epoch 66/100\n",
544
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 95ms/step - accuracy: 0.4944 - loss: 0.6942 - val_accuracy: 0.3737 - val_loss: 0.7110\n",
545
+ "Epoch 67/100\n",
546
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 69ms/step - accuracy: 0.4956 - loss: 0.6913 - val_accuracy: 0.3737 - val_loss: 0.7113\n",
547
+ "Epoch 68/100\n",
548
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5021 - loss: 0.6927 - val_accuracy: 0.3737 - val_loss: 0.7110\n",
549
+ "Epoch 69/100\n",
550
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 110ms/step - accuracy: 0.5065 - loss: 0.6933 - val_accuracy: 0.3789 - val_loss: 0.7109\n",
551
+ "Epoch 70/100\n",
552
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 71ms/step - accuracy: 0.5066 - loss: 0.6914 - val_accuracy: 0.3842 - val_loss: 0.7076\n",
553
+ "Epoch 71/100\n",
554
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 92ms/step - accuracy: 0.5194 - loss: 0.6922 - val_accuracy: 0.3789 - val_loss: 0.7101\n",
555
+ "Epoch 72/100\n",
556
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 95ms/step - accuracy: 0.5032 - loss: 0.6926 - val_accuracy: 0.3737 - val_loss: 0.7079\n",
557
+ "Epoch 73/100\n",
558
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5094 - loss: 0.6930 - val_accuracy: 0.3737 - val_loss: 0.7084\n",
559
+ "Epoch 74/100\n",
560
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 77ms/step - accuracy: 0.5021 - loss: 0.6908 - val_accuracy: 0.3737 - val_loss: 0.7117\n",
561
+ "Epoch 75/100\n",
562
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 110ms/step - accuracy: 0.5390 - loss: 0.6902 - val_accuracy: 0.3737 - val_loss: 0.7093\n",
563
+ "Epoch 76/100\n",
564
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.4934 - loss: 0.6929 - val_accuracy: 0.4684 - val_loss: 0.7096\n",
565
+ "Epoch 77/100\n",
566
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 114ms/step - accuracy: 0.5123 - loss: 0.6922 - val_accuracy: 0.3737 - val_loss: 0.7091\n",
567
+ "Epoch 78/100\n",
568
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 71ms/step - accuracy: 0.5043 - loss: 0.6929 - val_accuracy: 0.3842 - val_loss: 0.7113\n",
569
+ "Epoch 79/100\n",
570
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 105ms/step - accuracy: 0.5225 - loss: 0.6922 - val_accuracy: 0.3789 - val_loss: 0.7107\n",
571
+ "Epoch 80/100\n",
572
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 70ms/step - accuracy: 0.5086 - loss: 0.6930 - val_accuracy: 0.3737 - val_loss: 0.7112\n",
573
+ "Epoch 81/100\n",
574
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 91ms/step - accuracy: 0.5448 - loss: 0.6892 - val_accuracy: 0.3895 - val_loss: 0.7089\n",
575
+ "Epoch 82/100\n",
576
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 95ms/step - accuracy: 0.5033 - loss: 0.6929 - val_accuracy: 0.4105 - val_loss: 0.7064\n",
577
+ "Epoch 83/100\n",
578
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 75ms/step - accuracy: 0.5072 - loss: 0.6926 - val_accuracy: 0.4158 - val_loss: 0.7057\n",
579
+ "Epoch 84/100\n",
580
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 91ms/step - accuracy: 0.5134 - loss: 0.6919 - val_accuracy: 0.3895 - val_loss: 0.7079\n",
581
+ "Epoch 85/100\n",
582
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5177 - loss: 0.6919 - val_accuracy: 0.3895 - val_loss: 0.7091\n",
583
+ "Epoch 86/100\n",
584
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 71ms/step - accuracy: 0.5035 - loss: 0.6924 - val_accuracy: 0.3895 - val_loss: 0.7104\n",
585
+ "Epoch 87/100\n",
586
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 117ms/step - accuracy: 0.5308 - loss: 0.6916 - val_accuracy: 0.3789 - val_loss: 0.7156\n",
587
+ "Epoch 88/100\n",
588
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 71ms/step - accuracy: 0.5224 - loss: 0.6925 - val_accuracy: 0.3789 - val_loss: 0.7118\n",
589
+ "Epoch 89/100\n",
590
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 71ms/step - accuracy: 0.4987 - loss: 0.6925 - val_accuracy: 0.3842 - val_loss: 0.7114\n",
591
+ "Epoch 90/100\n",
592
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 104ms/step - accuracy: 0.5132 - loss: 0.6921 - val_accuracy: 0.3737 - val_loss: 0.7135\n",
593
+ "Epoch 91/100\n",
594
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 82ms/step - accuracy: 0.5211 - loss: 0.6929 - val_accuracy: 0.3895 - val_loss: 0.7101\n",
595
+ "Epoch 92/100\n",
596
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 71ms/step - accuracy: 0.4969 - loss: 0.6921 - val_accuracy: 0.3737 - val_loss: 0.7125\n",
597
+ "Epoch 93/100\n",
598
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 79ms/step - accuracy: 0.5421 - loss: 0.6911 - val_accuracy: 0.3895 - val_loss: 0.7081\n",
599
+ "Epoch 94/100\n",
600
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 111ms/step - accuracy: 0.5126 - loss: 0.6935 - val_accuracy: 0.4105 - val_loss: 0.7071\n",
601
+ "Epoch 95/100\n",
602
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 71ms/step - accuracy: 0.5121 - loss: 0.6908 - val_accuracy: 0.3947 - val_loss: 0.7100\n",
603
+ "Epoch 96/100\n",
604
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 118ms/step - accuracy: 0.4756 - loss: 0.6921 - val_accuracy: 0.3895 - val_loss: 0.7104\n",
605
+ "Epoch 97/100\n",
606
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 71ms/step - accuracy: 0.5194 - loss: 0.6918 - val_accuracy: 0.3789 - val_loss: 0.7123\n",
607
+ "Epoch 98/100\n",
608
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 70ms/step - accuracy: 0.5236 - loss: 0.6920 - val_accuracy: 0.3842 - val_loss: 0.7128\n",
609
+ "Epoch 99/100\n",
610
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 87ms/step - accuracy: 0.5084 - loss: 0.6920 - val_accuracy: 0.3737 - val_loss: 0.7150\n",
611
+ "Epoch 100/100\n",
612
+ "\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 101ms/step - accuracy: 0.5206 - loss: 0.6920 - val_accuracy: 0.3737 - val_loss: 0.7153\n"
613
+ ]
614
+ }
615
+ ]
616
+ },
617
+ {
618
+ "cell_type": "code",
619
+ "source": [
620
+ "metrics = model.evaluate(X_test, y_test)\n",
621
+ "for metric_i in range(len(model.metrics_names)):\n",
622
+ " metric_name = model.metrics_names[metric_i]\n",
623
+ " metric_value = metrics[metric_i]\n",
624
+ " print('{}: {}'.format(metric_name, metric_value))"
625
+ ],
626
+ "metadata": {
627
+ "colab": {
628
+ "base_uri": "https://localhost:8080/"
629
+ },
630
+ "id": "2BzceoiqO8Mm",
631
+ "outputId": "353bc545-0054-4fd8-f8d2-05b7c11ceb9f"
632
+ },
633
+ "execution_count": 73,
634
+ "outputs": [
635
+ {
636
+ "output_type": "stream",
637
+ "name": "stdout",
638
+ "text": [
639
+ "\u001b[1m2/2\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 9ms/step - accuracy: 0.6083 - loss: 0.7060 \n",
640
+ "loss: 0.7057245373725891\n",
641
+ "compile_metrics: 0.6000000238418579\n"
642
+ ]
643
+ }
644
+ ]
645
+ },
646
+ {
647
+ "cell_type": "code",
648
+ "source": [
649
+ "print(\"Saving model weights and configuration file\")"
650
+ ],
651
+ "metadata": {
652
+ "colab": {
653
+ "base_uri": "https://localhost:8080/"
654
+ },
655
+ "id": "5CBdSc2nTcHX",
656
+ "outputId": "fb3de2b7-7e8b-44b4-ed30-2f6eb38fa358"
657
+ },
658
+ "execution_count": 74,
659
+ "outputs": [
660
+ {
661
+ "output_type": "stream",
662
+ "name": "stdout",
663
+ "text": [
664
+ "Saving model weights and configuration file\n"
665
+ ]
666
+ }
667
+ ]
668
+ },
669
+ {
670
+ "cell_type": "code",
671
+ "source": [
672
+ "model.save('sample.h5')\n"
673
+ ],
674
+ "metadata": {
675
+ "colab": {
676
+ "base_uri": "https://localhost:8080/"
677
+ },
678
+ "id": "3tfbn6AKT9eA",
679
+ "outputId": "ad5a2b27-b908-4d1b-df25-f6110ac6e524"
680
+ },
681
+ "execution_count": 75,
682
+ "outputs": [
683
+ {
684
+ "output_type": "stream",
685
+ "name": "stderr",
686
+ "text": [
687
+ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
688
+ ]
689
+ }
690
+ ]
691
+ },
692
+ {
693
+ "cell_type": "code",
694
+ "source": [
695
+ "from google.colab import files\n",
696
+ "files.download('sample.h5')\n"
697
+ ],
698
+ "metadata": {
699
+ "colab": {
700
+ "base_uri": "https://localhost:8080/",
701
+ "height": 17
702
+ },
703
+ "id": "v7SyvJbyUCh3",
704
+ "outputId": "e2747db8-4b3f-45f6-db85-7a04ee9bdb98"
705
+ },
706
+ "execution_count": 77,
707
+ "outputs": [
708
+ {
709
+ "output_type": "display_data",
710
+ "data": {
711
+ "text/plain": [
712
+ "<IPython.core.display.Javascript object>"
713
+ ],
714
+ "application/javascript": [
715
+ "\n",
716
+ " async function download(id, filename, size) {\n",
717
+ " if (!google.colab.kernel.accessAllowed) {\n",
718
+ " return;\n",
719
+ " }\n",
720
+ " const div = document.createElement('div');\n",
721
+ " const label = document.createElement('label');\n",
722
+ " label.textContent = `Downloading \"${filename}\": `;\n",
723
+ " div.appendChild(label);\n",
724
+ " const progress = document.createElement('progress');\n",
725
+ " progress.max = size;\n",
726
+ " div.appendChild(progress);\n",
727
+ " document.body.appendChild(div);\n",
728
+ "\n",
729
+ " const buffers = [];\n",
730
+ " let downloaded = 0;\n",
731
+ "\n",
732
+ " const channel = await google.colab.kernel.comms.open(id);\n",
733
+ " // Send a message to notify the kernel that we're ready.\n",
734
+ " channel.send({})\n",
735
+ "\n",
736
+ " for await (const message of channel.messages) {\n",
737
+ " // Send a message to notify the kernel that we're ready.\n",
738
+ " channel.send({})\n",
739
+ " if (message.buffers) {\n",
740
+ " for (const buffer of message.buffers) {\n",
741
+ " buffers.push(buffer);\n",
742
+ " downloaded += buffer.byteLength;\n",
743
+ " progress.value = downloaded;\n",
744
+ " }\n",
745
+ " }\n",
746
+ " }\n",
747
+ " const blob = new Blob(buffers, {type: 'application/binary'});\n",
748
+ " const a = document.createElement('a');\n",
749
+ " a.href = window.URL.createObjectURL(blob);\n",
750
+ " a.download = filename;\n",
751
+ " div.appendChild(a);\n",
752
+ " a.click();\n",
753
+ " div.remove();\n",
754
+ " }\n",
755
+ " "
756
+ ]
757
+ },
758
+ "metadata": {}
759
+ },
760
+ {
761
+ "output_type": "display_data",
762
+ "data": {
763
+ "text/plain": [
764
+ "<IPython.core.display.Javascript object>"
765
+ ],
766
+ "application/javascript": [
767
+ "download(\"download_6d9fd5de-c120-4ff7-967b-e9b9194f0d7b\", \"sample.h5\", 424960)"
768
+ ]
769
+ },
770
+ "metadata": {}
771
+ }
772
+ ]
773
+ }
774
+ ]
775
+ }