Introduction aux réseaux de reurones artificiels

CSI 4106 - Automne 2024

Marcel Turcotte

Version: oct. 23, 2024 15h00

Préambule

Citation du Jour

;document.getElementById("tweet-40220").innerHTML = tweet["html"];

Le Prix Nobel de Physique 2024 a été décerné à John J. Hopfield et Geoffrey E. Hinton “pour leurs découvertes et inventions fondamentales permettant l’apprentissage automatique avec des réseaux de neurones artificiels”

Objectifs d’apprentissage

  • Expliquer les perceptrons et MLPs : structure, fonction, histoire, et limitations.
  • Décrire les fonctions d’activation : leur rôle dans l’apprentissage de modèles complexes.
  • Implémenter un réseau de neurones à propagation avant avec Keras sur Fashion-MNIST.
  • Interpréter l’entraînement et les résultats des réseaux neuronaux : visualisation et mesures d’évaluation.
  • Se familiariser avec les frameworks d’apprentissage profond : PyTorch, TensorFlow et Keras pour la création et le déploiement de modèles.

Introduction

Réseaux neuronaux (NN)

Nous concentrons maintenant notre attention sur une famille de modèles d’apprentissage automatique inspirés de la structure et du fonctionnement des réseaux neuronaux biologiques présents chez les animaux.

Apprentissage automatique

  • Supervisé: classification, régression

  • Non supervisé: autoencodeurs, auto-apprentissage (self-supervised)

  • Par renforcement: NN désormais un composant intégral

Un neurone

Neurones interconnectés

Connexionniste

Hiérarchie des concepts

Notions de base

Calculs avec neurodes

\(x_1, x_2 \in \{0,1\}\) et \(f(z)\) est une fonction indicatrice : \[ f(z)= \begin{cases}0, & z<\theta \\ 1, & z \geq \theta\end{cases} \]

Calculs avec neurodes

\[ y = f(x_1 + x_2)= \begin{cases}0, & x_1 + x_2 <\theta \\ 1, & x_1 + x_2 \geq \theta\end{cases} \]

  • Avec \(\theta = 2\), le neurode implémente une porte logique ET.

  • Avec \(\theta = 1\), le neurode implémente une porte logique OU.

Calculs avec neurodes

  • Les calculs numériques peuvent être décomposés en une suite d’opérations logiques, permettant aux réseaux de neurodes d’exécuter tout calcul.

  • McCulloch et Pitts (1943) ne se sont pas concentrés sur l’apprentissage du paramètre \(\theta\).

  • Ils ont introduit une machine qui calcule toute fonction, mais ne peut pas apprendre.

Unité logique à seuil

Fonctions de seuil simples

\(\text{heaviside}(t)\) =

  • 1, si \(t \geq 0\)

  • 0, si \(t < 0\)

\(\text{sign}(t)\) =

  • 1, si \(t > 0\)

  • 0, si \(t = 0\)

  • -1, si \(t < 0\)

Notation

Notation

Perceptron

Perceptron

Notation

Notation

  • \(X\) est la matrice de données d’entréechaque ligne correspond à un exemple et chaque colonne représente l’un des \(D\) attributs.

  • \(W\) est la matrice de poids, structurée avec une ligne par entrée (attribut) et une colonne par neurone.

  • Les termes de biais peuvent être représentés séparément ; les deux approches apparaissent dans la littérature. Ici, \(b\) est un vecteur de longueur égale au nombre de neurones.

Discussion

  • L’algorithme pour entraîner le perceptron ressemble étroitement à la descente de gradient stochastique.

    • Dans l’intérêt du temps et pour éviter la confusion, nous passerons cet algorithme et nous nous concentrerons sur le perceptron multicouche (MLP) et son algorithme d’entraînement, le backpropagation.

Note historique et justification

Perceptron multicouche (MLP)

Problème de classification XOR

\(x^{(1)}\) \(x^{(2)}\) \(y\) \(o_1\) \(o_2\) \(o_3\)
1 0 1 0 1 1
0 1 1 0 1 1
0 0 0 0 0 0
1 1 0 1 1 0

Propagation avant (FNN)

Propagation avant (Calcul)

\(o_3 = \sigma(w_{13} x^{(1)}+ w_{23} x^{(2)} + b_3)\)

\(o_4 = \sigma(w_{14} x^{(1)}+ w_{24} x^{(2)} + b_4)\)

\(o_5 = \sigma(w_{15} x^{(1)}+ w_{25} x^{(2)} + b_5)\)

\(o_6 = \sigma(w_{36} o_3 + w_{46} o_4 + w_{56} o_5 + b_6)\)

\(o_7 = \sigma(w_{37} o_3 + w_{47} o_4 + w_{57} o_5 + b_7)\)

Propagation avant (Calcul)

import numpy as np

# Fonction sigmoïde

def sigma(x):
    return 1 / (1 + np.exp(-x))

# Vecteur d'entrée (deux attributs), un exemple de notre ensemble d'entraînement

x1, x2 = (0.5, 0.9)

# Initialisation des poids des couches 2 et 3 à des valeurs aléatoires

w13, w14, w15, w23, w24, w25 = np.random.uniform(low=-1, high=1, size=6)
w36, w46, w56, w37, w47, w57 = np.random.uniform(low=-1, high=1, size=6)

# Initialisation des 5 termes de biais à des valeurs aléatoires

b3, b4, b5, b6, b7 = np.random.uniform(low=-1, high=1, size=5)

o3 = sigma(w13 * x1 + w23 * x2 + b3)
o4 = sigma(w14 * x1 + w24 * x2 + b4)
o5 = sigma(w15 * x1 + w25 * x2 + b5)
o6 = sigma(w36 * o3 + w46 * o4 + w56 * o5 + b6)
o7 = sigma(w37 * o3 + w47 * o4 + w57 * o5 + b7)

(o6, o7)
(0.2969856444193732, 0.3434314955604124)

Propagation avant (Calcul)

Propagation avant (Calcul)

Fonction d’activation

  • Comme discuté plus tard, l’algorithme d’entraînement, appelé rétropropagation (backpropagation), utilise la descente de gradient, nécessitant le calcul des dérivées partielles de la fonction de perte.

  • La fonction de seuil dans le perceptron multicouche a dû être remplacée, car elle consiste uniquement en des surfaces plates. La descente de gradient ne peut pas progresser sur des surfaces planes en raison de leur dérivée nulle.

Fonction d’activation

  • Les fonctions d’activation non linéaires sont primordiales car, sans elles, plusieurs couches du réseau ne calculeraient qu’une fonction linéaire des entrées.

  • Selon le théorème d’approximation universelle, des réseaux profonds suffisamment grands avec des fonctions d’activation non linéaires peuvent approximer n’importe quelle fonction continue. Voir Théorème d’Approximation Universelle.

Sigmoïde

\[ \sigma(t) = \frac{1}{1 + e^{-t}} \]

Fonction tangente hyperbolique

\[ \tanh(t) = 2 \sigma(2t) - 1 \]

Fonction unitaire rectifiée (ReLU)

\[ \mathrm{ReLU}(t) = \max(0, t) \]

Fonctions d’activation courantes

Approximation Universelle

Définition

Le théorème d’approximation universelle affirme qu’un réseau de neurones feedforward avec une seule couche cachée contenant un nombre fini de neurones peut approcher n’importe quelle fonction continue sur un sous-ensemble compact de \(\mathbb{R}^n\), avec des poids et des fonctions d’activation appropriés.

Démonstration par le code

import numpy as np

# Définition de la fonction à approximer

def f(x):
    return 2 * x**3 + 4 * x**2 - 5 * x + 1

# Génération d'un jeu de données, x dans [-4,2), f(x) comme ci-dessus

X = 6 * np.random.rand(1000, 1) - 4

y = f(X.flatten())

Augmenter le nombre de neurones

from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import train_test_split

X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.1, random_state=42)

models = []

sizes = [1, 2, 5, 10, 100]

for i, n in enumerate(sizes):

    models.append(MLPRegressor(hidden_layer_sizes=[n], max_iter=5000, random_state=42))

    models[i].fit(X_train, y_train)

Augmenter le nombre de neurones

Augmenter le nombre de neurones

Approximation Universelle

Codons

Bibliothèques

PyTorch et TensorFlow sont les plateformes dominantes pour l’apprentissage profond.

  • PyTorch a gagné beaucoup de traction dans la communauté de recherche. Initialement développé par Meta AI, il fait maintenant partie de la Linux Foundation.

  • TensorFlow, créé par Google, est largement adopté dans l’industrie pour déployer des modèles en production.

Keras

Keras est une API de haut niveau conçue pour construire, entraîner, évaluer et exécuter des modèles sur diverses plateformes, y compris PyTorch, TensorFlow et JAX, la plateforme haute performance de Google.

Dataset Fashion-MNIST

Fashion-MNIST est un ensemble de données d’images d’articles de Zalando — comprenant un ensemble d’entraînement de 60 000 exemples et un ensemble de test de 10 000 exemples. Chaque exemple est une image en niveaux de gris de 28x28, associée à une étiquette provenant de 10 classes.”

Chargement

import tensorflow as tf

fashion_mnist = tf.keras.datasets.fashion_mnist.load_data()

(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist

X_train, y_train = X_train_full[:-5000], y_train_full[:-5000]
X_valid, y_valid = X_train_full[-5000:], y_train_full[-5000:]

Exploration

X_train.shape
(55000, 28, 28)

Transformer les intensités des pixels d’entiers dans la plage de 0 à 255 en flottants dans la plage de 0 à 1.

X_train, X_valid, X_test = X_train / 255., X_valid / 255., X_test / 255.

À quoi ressemblent ces images ?

plt.figure(figsize=(2, 2))
plt.imshow(X_train[0], cmap="binary")
plt.axis('off')
plt.show()

y_train
array([9, 0, 0, ..., 9, 0, 2], dtype=uint8)

Puisque les étiquettes sont des entiers de 0 à 9, les noms des classes seront utiles.

class_names = ["T-shirt/top", "Pantalon", "Pull", "Robe", "Manteau",
               "Sandale", "Chemise", "Basket", "Sac", "Botte"]

Les 40 premières images

n_rows = 4
n_cols = 10
plt.figure(figsize=(n_cols * 1.2, n_rows * 1.2))
for row in range(n_rows):
    for col in range(n_cols):
        index = n_cols * row + col
        plt.subplot(n_rows, n_cols, index + 1)
        plt.imshow(X_train[index], cmap="binary", interpolation="nearest")
        plt.axis('off')
        plt.title(class_names[y_train[index]])
plt.subplots_adjust(wspace=0.2, hspace=0.5)
plt.show()

Les 40 premières images

Création d’un modèle

tf.random.set_seed(42)

model = tf.keras.Sequential()

model.add(tf.keras.layers.InputLayer(shape=[28, 28]))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(300, activation="relu"))
model.add(tf.keras.layers.Dense(100, activation="relu"))
model.add(tf.keras.layers.Dense(10, activation="softmax"))

model.summary()

Model: "sequential"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                     Output Shape                  Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ flatten (Flatten)               │ (None, 784)            │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense (Dense)                   │ (None, 300)            │       235,500 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_1 (Dense)                 │ (None, 100)            │        30,100 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_2 (Dense)                 │ (None, 10)             │         1,010 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
 Total params: 266,610 (1.02 MB)
 Trainable params: 266,610 (1.02 MB)
 Non-trainable params: 0 (0.00 B)

Création d’un modèle (alternative)

model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=[28, 28]),
    tf.keras.layers.Dense(300, activation="relu"),
    tf.keras.layers.Dense(100, activation="relu"),
    tf.keras.layers.Dense(10, activation="softmax")
])

model.summary()

Model: "sequential"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                     Output Shape                  Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ flatten (Flatten)               │ (None, 784)            │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense (Dense)                   │ (None, 300)            │       235,500 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_1 (Dense)                 │ (None, 100)            │        30,100 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_2 (Dense)                 │ (None, 10)             │         1,010 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
 Total params: 266,610 (1.02 MB)
 Trainable params: 266,610 (1.02 MB)
 Non-trainable params: 0 (0.00 B)

Compilation du modèle

model.compile(loss="sparse_categorical_crossentropy",
              optimizer="sgd",
              metrics=["accuracy"])

Entraînement du modèle

history = model.fit(X_train, y_train, epochs=30,
                    validation_data=(X_valid, y_valid))
Epoch 1/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 4:53 171ms/step - accuracy: 0.1562 - loss: 2.2677  59/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 864us/step - accuracy: 0.3291 - loss: 1.9861   121/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 839us/step - accuracy: 0.4196 - loss: 1.8107 184/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 824us/step - accuracy: 0.4698 - loss: 1.6826 247/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 816us/step - accuracy: 0.5047 - loss: 1.5843 310/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.5302 - loss: 1.5063 374/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 808us/step - accuracy: 0.5504 - loss: 1.4410 438/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 805us/step - accuracy: 0.5669 - loss: 1.3864 499/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.5802 - loss: 1.3418 562/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.5921 - loss: 1.3019 624/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.6024 - loss: 1.2671 688/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.6118 - loss: 1.2352 753/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.6204 - loss: 1.2061 817/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.6280 - loss: 1.1802 880/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.6348 - loss: 1.1570 944/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.6412 - loss: 1.13531007/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.6471 - loss: 1.11551069/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.6524 - loss: 1.09741134/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.6576 - loss: 1.07991197/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.6623 - loss: 1.06401263/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 797us/step - accuracy: 0.6668 - loss: 1.04861326/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 797us/step - accuracy: 0.6709 - loss: 1.03481389/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 797us/step - accuracy: 0.6747 - loss: 1.02171454/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 796us/step - accuracy: 0.6785 - loss: 1.00901513/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.6817 - loss: 0.99801574/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.6848 - loss: 0.98731636/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.6879 - loss: 0.97691699/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.6908 - loss: 0.96691719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 899us/step - accuracy: 0.6918 - loss: 0.9636 - val_accuracy: 0.8318 - val_loss: 0.4982
Epoch 2/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 18s 11ms/step - accuracy: 0.8438 - loss: 0.5078  65/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 784us/step - accuracy: 0.8423 - loss: 0.4904 129/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 784us/step - accuracy: 0.8331 - loss: 0.5055 192/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 787us/step - accuracy: 0.8290 - loss: 0.5120 256/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 788us/step - accuracy: 0.8277 - loss: 0.5134 318/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 792us/step - accuracy: 0.8269 - loss: 0.5142 381/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 794us/step - accuracy: 0.8264 - loss: 0.5144 446/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 791us/step - accuracy: 0.8259 - loss: 0.5143 510/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8256 - loss: 0.5140 573/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 793us/step - accuracy: 0.8255 - loss: 0.5135 634/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 796us/step - accuracy: 0.8256 - loss: 0.5129 694/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.8257 - loss: 0.5123 756/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8258 - loss: 0.5117 798/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.8259 - loss: 0.5113 854/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 830us/step - accuracy: 0.8261 - loss: 0.5107 913/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 832us/step - accuracy: 0.8262 - loss: 0.5101 977/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.8265 - loss: 0.50921039/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.8267 - loss: 0.50831101/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.8269 - loss: 0.50751163/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.8272 - loss: 0.50671226/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.8274 - loss: 0.50591291/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 822us/step - accuracy: 0.8276 - loss: 0.50521355/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 820us/step - accuracy: 0.8278 - loss: 0.50441416/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.8280 - loss: 0.50371478/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.8282 - loss: 0.50301540/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 820us/step - accuracy: 0.8284 - loss: 0.50221603/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 820us/step - accuracy: 0.8286 - loss: 0.50151666/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.8288 - loss: 0.50081719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 874us/step - accuracy: 0.8290 - loss: 0.5002 - val_accuracy: 0.8420 - val_loss: 0.4479
Epoch 3/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.8750 - loss: 0.4502  62/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 825us/step - accuracy: 0.8625 - loss: 0.4259 125/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 812us/step - accuracy: 0.8529 - loss: 0.4411 183/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 828us/step - accuracy: 0.8485 - loss: 0.4494 246/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 821us/step - accuracy: 0.8464 - loss: 0.4519 308/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.8451 - loss: 0.4534 369/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 821us/step - accuracy: 0.8442 - loss: 0.4542 430/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 822us/step - accuracy: 0.8435 - loss: 0.4548 492/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 821us/step - accuracy: 0.8430 - loss: 0.4551 554/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 820us/step - accuracy: 0.8428 - loss: 0.4552 616/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 820us/step - accuracy: 0.8427 - loss: 0.4550 678/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.8428 - loss: 0.4548 742/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8428 - loss: 0.4545 807/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8429 - loss: 0.4543 871/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8429 - loss: 0.4541 935/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.8430 - loss: 0.4537 998/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8431 - loss: 0.45331062/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8433 - loss: 0.45281125/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8435 - loss: 0.45231188/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8437 - loss: 0.45181247/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.8438 - loss: 0.45141310/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8439 - loss: 0.45111373/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8440 - loss: 0.45061436/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8442 - loss: 0.45021499/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8444 - loss: 0.44981563/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8445 - loss: 0.44931626/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8447 - loss: 0.44891688/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8448 - loss: 0.44851719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 864us/step - accuracy: 0.8448 - loss: 0.4483 - val_accuracy: 0.8472 - val_loss: 0.4276
Epoch 4/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.8750 - loss: 0.4257  65/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 792us/step - accuracy: 0.8756 - loss: 0.3921 128/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 797us/step - accuracy: 0.8664 - loss: 0.4078 190/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 803us/step - accuracy: 0.8616 - loss: 0.4166 250/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.8596 - loss: 0.4192 312/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.8579 - loss: 0.4210 375/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8568 - loss: 0.4220 438/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8559 - loss: 0.4228 499/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8554 - loss: 0.4233 561/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8550 - loss: 0.4235 621/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8548 - loss: 0.4234 682/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8547 - loss: 0.4233 744/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8547 - loss: 0.4232 805/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8546 - loss: 0.4231 867/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8545 - loss: 0.4230 932/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8545 - loss: 0.4228 994/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8545 - loss: 0.42251055/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8546 - loss: 0.42221117/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8546 - loss: 0.42181179/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8547 - loss: 0.42151241/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8548 - loss: 0.42121304/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8548 - loss: 0.42091369/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8549 - loss: 0.42061434/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.8550 - loss: 0.42021500/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8551 - loss: 0.41991565/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.8552 - loss: 0.41961630/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.8553 - loss: 0.41921696/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8554 - loss: 0.41891719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 860us/step - accuracy: 0.8555 - loss: 0.4188 - val_accuracy: 0.8504 - val_loss: 0.4133
Epoch 5/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.8438 - loss: 0.4186  66/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 779us/step - accuracy: 0.8787 - loss: 0.3687 132/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 772us/step - accuracy: 0.8709 - loss: 0.3853 196/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 778us/step - accuracy: 0.8668 - loss: 0.3940 261/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 778us/step - accuracy: 0.8649 - loss: 0.3969 326/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 777us/step - accuracy: 0.8635 - loss: 0.3987 393/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 773us/step - accuracy: 0.8626 - loss: 0.4001 457/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 775us/step - accuracy: 0.8619 - loss: 0.4009 517/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 784us/step - accuracy: 0.8615 - loss: 0.4013 574/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 793us/step - accuracy: 0.8612 - loss: 0.4016 632/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8611 - loss: 0.4015 693/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8611 - loss: 0.4014 757/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.8611 - loss: 0.4014 820/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8611 - loss: 0.4013 884/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8610 - loss: 0.4013 950/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.8610 - loss: 0.40121017/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 796us/step - accuracy: 0.8611 - loss: 0.40091082/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 795us/step - accuracy: 0.8612 - loss: 0.40061145/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 795us/step - accuracy: 0.8613 - loss: 0.40031210/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 794us/step - accuracy: 0.8613 - loss: 0.40001275/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 793us/step - accuracy: 0.8614 - loss: 0.39981340/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8615 - loss: 0.39951403/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8615 - loss: 0.39921466/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8616 - loss: 0.39891531/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8617 - loss: 0.39871596/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8618 - loss: 0.39841662/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8619 - loss: 0.39811719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 850us/step - accuracy: 0.8619 - loss: 0.3979 - val_accuracy: 0.8530 - val_loss: 0.4035
Epoch 6/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.8438 - loss: 0.4009  64/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 804us/step - accuracy: 0.8798 - loss: 0.3501 129/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 792us/step - accuracy: 0.8730 - loss: 0.3665 192/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 797us/step - accuracy: 0.8693 - loss: 0.3759 253/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 802us/step - accuracy: 0.8680 - loss: 0.3790 316/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 803us/step - accuracy: 0.8669 - loss: 0.3810 380/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 799us/step - accuracy: 0.8663 - loss: 0.3823 444/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 798us/step - accuracy: 0.8658 - loss: 0.3833 507/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.8655 - loss: 0.3839 566/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.8653 - loss: 0.3843 627/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8653 - loss: 0.3843 690/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8653 - loss: 0.3843 754/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.8654 - loss: 0.3842 817/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.8654 - loss: 0.3842 881/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.8655 - loss: 0.3843 946/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.8655 - loss: 0.38421010/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8656 - loss: 0.38401075/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8657 - loss: 0.38371136/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8659 - loss: 0.38351199/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8660 - loss: 0.38321258/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8661 - loss: 0.38301321/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.8661 - loss: 0.38281384/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.8662 - loss: 0.38261448/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8663 - loss: 0.38231512/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8664 - loss: 0.38211576/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8665 - loss: 0.38191640/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8666 - loss: 0.38161703/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8666 - loss: 0.38141719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 861us/step - accuracy: 0.8667 - loss: 0.3814 - val_accuracy: 0.8558 - val_loss: 0.3967
Epoch 7/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.8438 - loss: 0.3839  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 816us/step - accuracy: 0.8834 - loss: 0.3346 125/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 812us/step - accuracy: 0.8771 - loss: 0.3503 188/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.8737 - loss: 0.3606 251/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 808us/step - accuracy: 0.8725 - loss: 0.3641 312/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.8716 - loss: 0.3661 375/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.8712 - loss: 0.3675 439/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 807us/step - accuracy: 0.8708 - loss: 0.3687 502/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8705 - loss: 0.3695 564/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8703 - loss: 0.3699 626/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8703 - loss: 0.3700 690/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8704 - loss: 0.3700 752/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8705 - loss: 0.3700 815/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.8706 - loss: 0.3700 878/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.8706 - loss: 0.3701 942/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.8707 - loss: 0.37011007/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8708 - loss: 0.36991071/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.8709 - loss: 0.36971135/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.8710 - loss: 0.36951201/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.8711 - loss: 0.36931265/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.8712 - loss: 0.36911327/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8713 - loss: 0.36891389/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8713 - loss: 0.36871453/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8714 - loss: 0.36851503/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.8715 - loss: 0.36841557/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8716 - loss: 0.36821617/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8716 - loss: 0.36801678/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8717 - loss: 0.36781719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 875us/step - accuracy: 0.8717 - loss: 0.3677 - val_accuracy: 0.8584 - val_loss: 0.3884
Epoch 8/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 12ms/step - accuracy: 0.8750 - loss: 0.3633  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.8866 - loss: 0.3215 126/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.8802 - loss: 0.3374 190/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 803us/step - accuracy: 0.8766 - loss: 0.3476 249/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 814us/step - accuracy: 0.8753 - loss: 0.3509 310/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 817us/step - accuracy: 0.8744 - loss: 0.3532 345/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 880us/step - accuracy: 0.8742 - loss: 0.3540 405/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 875us/step - accuracy: 0.8737 - loss: 0.3555 466/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 868us/step - accuracy: 0.8734 - loss: 0.3564 528/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 862us/step - accuracy: 0.8731 - loss: 0.3571 590/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 858us/step - accuracy: 0.8730 - loss: 0.3575 652/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 854us/step - accuracy: 0.8731 - loss: 0.3575 714/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 851us/step - accuracy: 0.8732 - loss: 0.3575 776/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 847us/step - accuracy: 0.8732 - loss: 0.3576 838/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 844us/step - accuracy: 0.8733 - loss: 0.3577 900/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.8734 - loss: 0.3578 965/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 838us/step - accuracy: 0.8735 - loss: 0.35781028/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 836us/step - accuracy: 0.8736 - loss: 0.35761092/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 833us/step - accuracy: 0.8738 - loss: 0.35751156/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 831us/step - accuracy: 0.8739 - loss: 0.35731219/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.8740 - loss: 0.35711280/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.8741 - loss: 0.35701343/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.8742 - loss: 0.35681404/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.8743 - loss: 0.35661466/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.8744 - loss: 0.35641531/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.8745 - loss: 0.35631594/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.8745 - loss: 0.35611657/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.8746 - loss: 0.35591719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 880us/step - accuracy: 0.8747 - loss: 0.3558 - val_accuracy: 0.8608 - val_loss: 0.3838
Epoch 9/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.8750 - loss: 0.3476  62/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 829us/step - accuracy: 0.8912 - loss: 0.3095 123/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 827us/step - accuracy: 0.8851 - loss: 0.3250 185/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 824us/step - accuracy: 0.8811 - loss: 0.3354 247/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 820us/step - accuracy: 0.8795 - loss: 0.3392 309/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.8783 - loss: 0.3416 371/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 817us/step - accuracy: 0.8779 - loss: 0.3431 435/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.8774 - loss: 0.3446 496/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8772 - loss: 0.3454 559/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8770 - loss: 0.3460 621/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8770 - loss: 0.3462 683/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8771 - loss: 0.3463 743/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8772 - loss: 0.3463 804/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.8773 - loss: 0.3464 864/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.8773 - loss: 0.3466 925/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.8774 - loss: 0.3467 988/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 818us/step - accuracy: 0.8775 - loss: 0.34661051/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.8776 - loss: 0.34651113/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.8778 - loss: 0.34641177/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8779 - loss: 0.34621240/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8780 - loss: 0.34611302/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8781 - loss: 0.34601366/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8782 - loss: 0.34581426/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8783 - loss: 0.34571489/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8784 - loss: 0.34551550/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8784 - loss: 0.34541610/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8785 - loss: 0.34521670/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8785 - loss: 0.34511719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 875us/step - accuracy: 0.8786 - loss: 0.3450 - val_accuracy: 0.8606 - val_loss: 0.3789
Epoch 10/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 18s 11ms/step - accuracy: 0.8750 - loss: 0.3352  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8940 - loss: 0.2998 126/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 807us/step - accuracy: 0.8877 - loss: 0.3154 190/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 800us/step - accuracy: 0.8838 - loss: 0.3255 253/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 800us/step - accuracy: 0.8822 - loss: 0.3291 313/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8812 - loss: 0.3313 375/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8807 - loss: 0.3330 437/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8802 - loss: 0.3344 496/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8799 - loss: 0.3352 560/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8797 - loss: 0.3359 621/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8796 - loss: 0.3361 674/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.8797 - loss: 0.3362 730/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 831us/step - accuracy: 0.8797 - loss: 0.3363 787/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 836us/step - accuracy: 0.8798 - loss: 0.3364 841/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.8798 - loss: 0.3366 898/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 844us/step - accuracy: 0.8798 - loss: 0.3368 951/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 851us/step - accuracy: 0.8799 - loss: 0.33681010/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 851us/step - accuracy: 0.8800 - loss: 0.33681070/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 850us/step - accuracy: 0.8801 - loss: 0.33661130/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 850us/step - accuracy: 0.8802 - loss: 0.33651191/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 848us/step - accuracy: 0.8803 - loss: 0.33641252/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 848us/step - accuracy: 0.8804 - loss: 0.33631316/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 845us/step - accuracy: 0.8805 - loss: 0.33621379/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 843us/step - accuracy: 0.8806 - loss: 0.33611441/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.8807 - loss: 0.33591506/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 839us/step - accuracy: 0.8808 - loss: 0.33581569/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 838us/step - accuracy: 0.8808 - loss: 0.33571630/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 837us/step - accuracy: 0.8809 - loss: 0.33551691/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 837us/step - accuracy: 0.8809 - loss: 0.33541719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 894us/step - accuracy: 0.8810 - loss: 0.3354 - val_accuracy: 0.8626 - val_loss: 0.3751
Epoch 11/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.8750 - loss: 0.3204  62/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 822us/step - accuracy: 0.8976 - loss: 0.2904 126/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 804us/step - accuracy: 0.8908 - loss: 0.3061 191/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 793us/step - accuracy: 0.8869 - loss: 0.3163 256/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 788us/step - accuracy: 0.8852 - loss: 0.3200 321/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 787us/step - accuracy: 0.8841 - loss: 0.3223 384/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 789us/step - accuracy: 0.8835 - loss: 0.3241 447/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 790us/step - accuracy: 0.8830 - loss: 0.3255 513/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 787us/step - accuracy: 0.8827 - loss: 0.3264 577/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 787us/step - accuracy: 0.8825 - loss: 0.3270 641/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 787us/step - accuracy: 0.8826 - loss: 0.3272 704/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8826 - loss: 0.3273 767/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8827 - loss: 0.3275 832/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8827 - loss: 0.3277 896/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8827 - loss: 0.3279 962/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 786us/step - accuracy: 0.8828 - loss: 0.32801027/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 786us/step - accuracy: 0.8829 - loss: 0.32791091/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 786us/step - accuracy: 0.8831 - loss: 0.32781156/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 785us/step - accuracy: 0.8832 - loss: 0.32771220/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 786us/step - accuracy: 0.8833 - loss: 0.32761277/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8834 - loss: 0.32751341/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8834 - loss: 0.32741405/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8835 - loss: 0.32731470/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8836 - loss: 0.32721535/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8837 - loss: 0.32701599/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8837 - loss: 0.32691662/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8838 - loss: 0.32681719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 846us/step - accuracy: 0.8838 - loss: 0.3267 - val_accuracy: 0.8640 - val_loss: 0.3705
Epoch 12/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.8750 - loss: 0.3069  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.8991 - loss: 0.2822 127/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 800us/step - accuracy: 0.8928 - loss: 0.2977 191/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 796us/step - accuracy: 0.8891 - loss: 0.3075 256/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 792us/step - accuracy: 0.8877 - loss: 0.3114 320/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 790us/step - accuracy: 0.8867 - loss: 0.3137 385/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 789us/step - accuracy: 0.8862 - loss: 0.3155 451/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 786us/step - accuracy: 0.8858 - loss: 0.3170 514/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8856 - loss: 0.3179 577/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8854 - loss: 0.3185 639/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8855 - loss: 0.3187 701/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8856 - loss: 0.3188 765/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8856 - loss: 0.3190 829/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8857 - loss: 0.3192 893/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8857 - loss: 0.3195 958/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8858 - loss: 0.31951022/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8858 - loss: 0.31951087/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8859 - loss: 0.31941152/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 788us/step - accuracy: 0.8861 - loss: 0.31931214/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8861 - loss: 0.31921278/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 789us/step - accuracy: 0.8862 - loss: 0.31921341/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8863 - loss: 0.31911405/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 790us/step - accuracy: 0.8864 - loss: 0.31901467/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8865 - loss: 0.31881530/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 791us/step - accuracy: 0.8865 - loss: 0.31871592/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 792us/step - accuracy: 0.8866 - loss: 0.31861653/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 793us/step - accuracy: 0.8866 - loss: 0.31851717/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 793us/step - accuracy: 0.8867 - loss: 0.31851719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 850us/step - accuracy: 0.8867 - loss: 0.3185 - val_accuracy: 0.8660 - val_loss: 0.3670
Epoch 13/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.9062 - loss: 0.2936  61/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 834us/step - accuracy: 0.9028 - loss: 0.2739 122/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 827us/step - accuracy: 0.8964 - loss: 0.2886 184/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 822us/step - accuracy: 0.8928 - loss: 0.2989 245/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 825us/step - accuracy: 0.8913 - loss: 0.3029 308/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.8902 - loss: 0.3054 370/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.8895 - loss: 0.3072 431/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.8891 - loss: 0.3088 494/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8887 - loss: 0.3098 540/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 840us/step - accuracy: 0.8885 - loss: 0.3104 591/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 853us/step - accuracy: 0.8884 - loss: 0.3108 642/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 864us/step - accuracy: 0.8885 - loss: 0.3109 694/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 871us/step - accuracy: 0.8885 - loss: 0.3111 749/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 875us/step - accuracy: 0.8885 - loss: 0.3112 804/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 878us/step - accuracy: 0.8885 - loss: 0.3114 863/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 876us/step - accuracy: 0.8885 - loss: 0.3117 925/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 871us/step - accuracy: 0.8886 - loss: 0.3118 987/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 868us/step - accuracy: 0.8886 - loss: 0.31191048/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 866us/step - accuracy: 0.8887 - loss: 0.31181110/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 863us/step - accuracy: 0.8888 - loss: 0.31171171/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 861us/step - accuracy: 0.8889 - loss: 0.31161234/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 858us/step - accuracy: 0.8889 - loss: 0.31161297/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 855us/step - accuracy: 0.8890 - loss: 0.31151358/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 853us/step - accuracy: 0.8891 - loss: 0.31141424/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 849us/step - accuracy: 0.8892 - loss: 0.31131485/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 849us/step - accuracy: 0.8892 - loss: 0.31121546/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 847us/step - accuracy: 0.8893 - loss: 0.31111608/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 846us/step - accuracy: 0.8893 - loss: 0.31101671/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 844us/step - accuracy: 0.8893 - loss: 0.31101719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 902us/step - accuracy: 0.8893 - loss: 0.3109 - val_accuracy: 0.8674 - val_loss: 0.3639
Epoch 14/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9062 - loss: 0.2817  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 816us/step - accuracy: 0.9045 - loss: 0.2673 125/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.8985 - loss: 0.2822 189/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 806us/step - accuracy: 0.8948 - loss: 0.2922 250/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.8933 - loss: 0.2961 312/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.8923 - loss: 0.2985 374/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.8918 - loss: 0.3003 437/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.8913 - loss: 0.3018 496/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8910 - loss: 0.3028 558/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8908 - loss: 0.3035 620/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8908 - loss: 0.3038 682/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8908 - loss: 0.3040 743/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8908 - loss: 0.3041 807/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8908 - loss: 0.3043 868/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8908 - loss: 0.3046 932/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8909 - loss: 0.3048 996/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8909 - loss: 0.30481058/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8910 - loss: 0.30471120/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8911 - loss: 0.30461183/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8912 - loss: 0.30451245/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8912 - loss: 0.30451307/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8913 - loss: 0.30441370/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8913 - loss: 0.30441432/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8914 - loss: 0.30421494/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8915 - loss: 0.30421557/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.8915 - loss: 0.30411620/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.8916 - loss: 0.30401683/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.8916 - loss: 0.30391719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 866us/step - accuracy: 0.8916 - loss: 0.3039 - val_accuracy: 0.8682 - val_loss: 0.3619
Epoch 15/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9062 - loss: 0.2771  65/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 792us/step - accuracy: 0.9048 - loss: 0.2617 129/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 790us/step - accuracy: 0.8998 - loss: 0.2762 192/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 793us/step - accuracy: 0.8968 - loss: 0.2855 251/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 806us/step - accuracy: 0.8956 - loss: 0.2892 313/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 807us/step - accuracy: 0.8948 - loss: 0.2916 376/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 805us/step - accuracy: 0.8943 - loss: 0.2934 439/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 805us/step - accuracy: 0.8939 - loss: 0.2949 503/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8936 - loss: 0.2960 565/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8934 - loss: 0.2966 627/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.8933 - loss: 0.2969 690/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8933 - loss: 0.2971 747/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.8933 - loss: 0.2972 808/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.8933 - loss: 0.2974 866/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8933 - loss: 0.2977 926/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.8933 - loss: 0.2979 985/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.8933 - loss: 0.29791043/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.8933 - loss: 0.29791102/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.8934 - loss: 0.29781160/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.8935 - loss: 0.29771220/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.8935 - loss: 0.29771282/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.8936 - loss: 0.29771345/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.8937 - loss: 0.29761406/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.8937 - loss: 0.29751466/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.8938 - loss: 0.29741529/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.8939 - loss: 0.29731590/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.8939 - loss: 0.29731644/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.8940 - loss: 0.29721706/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.8940 - loss: 0.29711719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 887us/step - accuracy: 0.8940 - loss: 0.2971 - val_accuracy: 0.8700 - val_loss: 0.3570
Epoch 16/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9062 - loss: 0.2609  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.9090 - loss: 0.2545 124/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 821us/step - accuracy: 0.9029 - loss: 0.2686 186/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 820us/step - accuracy: 0.8996 - loss: 0.2784 247/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 820us/step - accuracy: 0.8980 - loss: 0.2824 309/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.8971 - loss: 0.2849 372/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 816us/step - accuracy: 0.8966 - loss: 0.2867 430/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 822us/step - accuracy: 0.8961 - loss: 0.2882 493/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.8958 - loss: 0.2893 555/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 818us/step - accuracy: 0.8956 - loss: 0.2900 617/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.8956 - loss: 0.2903 680/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8956 - loss: 0.2905 743/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8956 - loss: 0.2907 804/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8955 - loss: 0.2909 867/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8955 - loss: 0.2912 930/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8955 - loss: 0.2914 992/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8955 - loss: 0.29141053/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8956 - loss: 0.29141115/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8957 - loss: 0.29131178/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8957 - loss: 0.29121240/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8958 - loss: 0.29121303/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8958 - loss: 0.29121366/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8959 - loss: 0.29111430/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.8959 - loss: 0.29101494/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.8960 - loss: 0.29091556/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.8961 - loss: 0.29091620/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.8961 - loss: 0.29081683/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.8961 - loss: 0.29071719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 866us/step - accuracy: 0.8961 - loss: 0.2907 - val_accuracy: 0.8712 - val_loss: 0.3542
Epoch 17/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9062 - loss: 0.2505  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.9104 - loss: 0.2478 125/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.9046 - loss: 0.2622 187/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9014 - loss: 0.2719 248/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.8999 - loss: 0.2760 310/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.8992 - loss: 0.2785 372/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.8989 - loss: 0.2804 435/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 812us/step - accuracy: 0.8985 - loss: 0.2820 497/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8982 - loss: 0.2831 558/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8981 - loss: 0.2838 618/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8980 - loss: 0.2841 681/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.8980 - loss: 0.2843 743/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8980 - loss: 0.2845 803/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8979 - loss: 0.2847 865/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8979 - loss: 0.2850 926/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8978 - loss: 0.2852 988/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.8979 - loss: 0.28531052/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.8979 - loss: 0.28521115/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8980 - loss: 0.28521177/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8980 - loss: 0.28511238/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8981 - loss: 0.28511301/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8981 - loss: 0.28511364/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8981 - loss: 0.28501426/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8982 - loss: 0.28491487/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8982 - loss: 0.28481549/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.8983 - loss: 0.28481611/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8983 - loss: 0.28471675/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.8983 - loss: 0.28471719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 870us/step - accuracy: 0.8983 - loss: 0.2846 - val_accuracy: 0.8696 - val_loss: 0.3545
Epoch 18/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9375 - loss: 0.2533  64/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 801us/step - accuracy: 0.9140 - loss: 0.2441 128/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 795us/step - accuracy: 0.9070 - loss: 0.2579 191/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 798us/step - accuracy: 0.9036 - loss: 0.2670 256/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 794us/step - accuracy: 0.9021 - loss: 0.2710 318/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 798us/step - accuracy: 0.9012 - loss: 0.2733 381/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 798us/step - accuracy: 0.9007 - loss: 0.2751 442/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 802us/step - accuracy: 0.9003 - loss: 0.2766 505/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 801us/step - accuracy: 0.9000 - loss: 0.2776 568/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 800us/step - accuracy: 0.8999 - loss: 0.2783 633/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 798us/step - accuracy: 0.8998 - loss: 0.2786 696/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 799us/step - accuracy: 0.8997 - loss: 0.2787 761/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 797us/step - accuracy: 0.8997 - loss: 0.2789 825/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 796us/step - accuracy: 0.8997 - loss: 0.2791 890/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 795us/step - accuracy: 0.8996 - loss: 0.2795 953/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 795us/step - accuracy: 0.8996 - loss: 0.27961016/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 795us/step - accuracy: 0.8997 - loss: 0.27961080/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 795us/step - accuracy: 0.8998 - loss: 0.27951140/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 798us/step - accuracy: 0.8998 - loss: 0.27951196/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.8999 - loss: 0.27941257/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.8999 - loss: 0.27941319/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.9000 - loss: 0.27941378/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9000 - loss: 0.27931443/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9001 - loss: 0.27921506/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9001 - loss: 0.27911559/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9002 - loss: 0.27911618/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9002 - loss: 0.27901679/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9002 - loss: 0.27901719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 885us/step - accuracy: 0.9002 - loss: 0.2790 - val_accuracy: 0.8694 - val_loss: 0.3540
Epoch 19/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 24s 14ms/step - accuracy: 0.9375 - loss: 0.2463  55/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 941us/step - accuracy: 0.9158 - loss: 0.2359 107/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 958us/step - accuracy: 0.9100 - loss: 0.2479 166/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 919us/step - accuracy: 0.9064 - loss: 0.2587 214/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 948us/step - accuracy: 0.9050 - loss: 0.2629 264/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 960us/step - accuracy: 0.9043 - loss: 0.2656 318/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 955us/step - accuracy: 0.9037 - loss: 0.2675 372/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 953us/step - accuracy: 0.9033 - loss: 0.2691 428/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 946us/step - accuracy: 0.9030 - loss: 0.2706 480/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 949us/step - accuracy: 0.9027 - loss: 0.2716 537/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 942us/step - accuracy: 0.9025 - loss: 0.2723 594/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 936us/step - accuracy: 0.9024 - loss: 0.2727 651/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 931us/step - accuracy: 0.9024 - loss: 0.2729 708/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 927us/step - accuracy: 0.9023 - loss: 0.2731 767/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 921us/step - accuracy: 0.9022 - loss: 0.2733 822/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 920us/step - accuracy: 0.9022 - loss: 0.2735 878/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 919us/step - accuracy: 0.9021 - loss: 0.2738 938/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 914us/step - accuracy: 0.9021 - loss: 0.2739 996/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 912us/step - accuracy: 0.9021 - loss: 0.27401056/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 908us/step - accuracy: 0.9022 - loss: 0.27391115/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 905us/step - accuracy: 0.9022 - loss: 0.27391175/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 902us/step - accuracy: 0.9023 - loss: 0.27381235/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 899us/step - accuracy: 0.9023 - loss: 0.27381294/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 897us/step - accuracy: 0.9023 - loss: 0.27381352/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 896us/step - accuracy: 0.9024 - loss: 0.27371411/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 894us/step - accuracy: 0.9024 - loss: 0.27361470/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 893us/step - accuracy: 0.9024 - loss: 0.27361530/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 891us/step - accuracy: 0.9025 - loss: 0.27351589/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 889us/step - accuracy: 0.9025 - loss: 0.27351647/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 888us/step - accuracy: 0.9025 - loss: 0.27341705/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 887us/step - accuracy: 0.9025 - loss: 0.27341719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 948us/step - accuracy: 0.9025 - loss: 0.2734 - val_accuracy: 0.8706 - val_loss: 0.3517
Epoch 20/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9375 - loss: 0.2292  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 808us/step - accuracy: 0.9165 - loss: 0.2321 124/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 816us/step - accuracy: 0.9108 - loss: 0.2451 185/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.9081 - loss: 0.2544 247/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.9069 - loss: 0.2587 310/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.9062 - loss: 0.2612 372/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.9058 - loss: 0.2631 434/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 816us/step - accuracy: 0.9054 - loss: 0.2648 498/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9051 - loss: 0.2659 560/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9049 - loss: 0.2666 623/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9048 - loss: 0.2670 685/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9047 - loss: 0.2672 748/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9046 - loss: 0.2674 811/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9045 - loss: 0.2676 873/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9044 - loss: 0.2679 935/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9044 - loss: 0.2681 994/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9044 - loss: 0.26821050/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 818us/step - accuracy: 0.9044 - loss: 0.26821109/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 820us/step - accuracy: 0.9044 - loss: 0.26811169/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.9045 - loss: 0.26811230/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.9045 - loss: 0.26811291/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.9045 - loss: 0.26811352/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 822us/step - accuracy: 0.9045 - loss: 0.26801413/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 822us/step - accuracy: 0.9046 - loss: 0.26801475/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.9046 - loss: 0.26791536/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.9047 - loss: 0.26791596/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 822us/step - accuracy: 0.9047 - loss: 0.26781657/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 822us/step - accuracy: 0.9047 - loss: 0.26781718/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 822us/step - accuracy: 0.9047 - loss: 0.26781719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 891us/step - accuracy: 0.9047 - loss: 0.2678 - val_accuracy: 0.8734 - val_loss: 0.3510
Epoch 21/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.9062 - loss: 0.2247  58/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 881us/step - accuracy: 0.9161 - loss: 0.2263 117/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 864us/step - accuracy: 0.9112 - loss: 0.2390 176/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 859us/step - accuracy: 0.9084 - loss: 0.2488 237/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 851us/step - accuracy: 0.9072 - loss: 0.2534 299/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 843us/step - accuracy: 0.9066 - loss: 0.2560 361/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 839us/step - accuracy: 0.9063 - loss: 0.2579 424/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 833us/step - accuracy: 0.9060 - loss: 0.2596 485/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 833us/step - accuracy: 0.9058 - loss: 0.2607 547/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 831us/step - accuracy: 0.9056 - loss: 0.2615 609/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 830us/step - accuracy: 0.9056 - loss: 0.2619 670/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.9055 - loss: 0.2621 732/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.9055 - loss: 0.2623 795/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9055 - loss: 0.2626 856/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9054 - loss: 0.2628 919/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9054 - loss: 0.2631 979/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9054 - loss: 0.26321041/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9054 - loss: 0.26321103/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.9055 - loss: 0.26311161/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9056 - loss: 0.26311220/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9056 - loss: 0.26301280/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.9056 - loss: 0.26301341/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.9057 - loss: 0.26301403/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9057 - loss: 0.26291465/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9058 - loss: 0.26281527/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9059 - loss: 0.26281590/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9059 - loss: 0.26281652/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.9059 - loss: 0.26271714/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.9059 - loss: 0.26271719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 882us/step - accuracy: 0.9059 - loss: 0.2627 - val_accuracy: 0.8732 - val_loss: 0.3515
Epoch 22/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9062 - loss: 0.2192  63/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.9187 - loss: 0.2232 124/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.9140 - loss: 0.2357 187/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.9110 - loss: 0.2450 249/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9097 - loss: 0.2492 298/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 848us/step - accuracy: 0.9091 - loss: 0.2513 321/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 947us/step - accuracy: 0.9089 - loss: 0.2520 370/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 957us/step - accuracy: 0.9086 - loss: 0.2535 426/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 950us/step - accuracy: 0.9083 - loss: 0.2550 482/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 944us/step - accuracy: 0.9081 - loss: 0.2560 541/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 934us/step - accuracy: 0.9079 - loss: 0.2568 601/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 924us/step - accuracy: 0.9079 - loss: 0.2572 664/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 912us/step - accuracy: 0.9079 - loss: 0.2574 727/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 903us/step - accuracy: 0.9078 - loss: 0.2575 790/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 895us/step - accuracy: 0.9078 - loss: 0.2578 853/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 888us/step - accuracy: 0.9077 - loss: 0.2581 915/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 883us/step - accuracy: 0.9077 - loss: 0.2583 977/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 878us/step - accuracy: 0.9077 - loss: 0.25841037/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 875us/step - accuracy: 0.9077 - loss: 0.25841098/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 872us/step - accuracy: 0.9077 - loss: 0.25831159/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 870us/step - accuracy: 0.9078 - loss: 0.25831221/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 867us/step - accuracy: 0.9078 - loss: 0.25831285/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 863us/step - accuracy: 0.9078 - loss: 0.25821347/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 861us/step - accuracy: 0.9079 - loss: 0.25821408/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 859us/step - accuracy: 0.9079 - loss: 0.25811469/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 858us/step - accuracy: 0.9080 - loss: 0.25811530/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 857us/step - accuracy: 0.9080 - loss: 0.25801592/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 855us/step - accuracy: 0.9080 - loss: 0.25801653/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 854us/step - accuracy: 0.9081 - loss: 0.25801715/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 852us/step - accuracy: 0.9081 - loss: 0.25801719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 913us/step - accuracy: 0.9081 - loss: 0.2580 - val_accuracy: 0.8736 - val_loss: 0.3523
Epoch 23/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.9062 - loss: 0.2179  62/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 820us/step - accuracy: 0.9218 - loss: 0.2190 125/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 808us/step - accuracy: 0.9166 - loss: 0.2316 186/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.9134 - loss: 0.2404 248/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.9120 - loss: 0.2445 310/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 814us/step - accuracy: 0.9112 - loss: 0.2470 374/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9107 - loss: 0.2489 437/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.9103 - loss: 0.2505 501/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9100 - loss: 0.2515 563/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9097 - loss: 0.2522 625/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.9097 - loss: 0.2525 687/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9096 - loss: 0.2527 750/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9095 - loss: 0.2529 812/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9095 - loss: 0.2531 874/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9094 - loss: 0.2534 936/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9094 - loss: 0.2536 998/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9094 - loss: 0.25361050/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.9094 - loss: 0.25361102/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9094 - loss: 0.25351159/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.9094 - loss: 0.25351217/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.9095 - loss: 0.25351273/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 832us/step - accuracy: 0.9095 - loss: 0.25341313/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 846us/step - accuracy: 0.9095 - loss: 0.25341362/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 852us/step - accuracy: 0.9095 - loss: 0.25341423/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 851us/step - accuracy: 0.9096 - loss: 0.25331483/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 851us/step - accuracy: 0.9096 - loss: 0.25331544/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 850us/step - accuracy: 0.9096 - loss: 0.25321602/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 850us/step - accuracy: 0.9097 - loss: 0.25321662/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 850us/step - accuracy: 0.9097 - loss: 0.25321719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 910us/step - accuracy: 0.9097 - loss: 0.2532 - val_accuracy: 0.8748 - val_loss: 0.3514
Epoch 24/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 20s 12ms/step - accuracy: 0.9375 - loss: 0.2047  60/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 857us/step - accuracy: 0.9250 - loss: 0.2129 120/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 845us/step - accuracy: 0.9201 - loss: 0.2252 179/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 847us/step - accuracy: 0.9164 - loss: 0.2346 238/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 850us/step - accuracy: 0.9147 - loss: 0.2390 298/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 848us/step - accuracy: 0.9137 - loss: 0.2417 359/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 844us/step - accuracy: 0.9131 - loss: 0.2436 420/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 842us/step - accuracy: 0.9125 - loss: 0.2453 478/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 844us/step - accuracy: 0.9122 - loss: 0.2464 539/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 843us/step - accuracy: 0.9119 - loss: 0.2472 599/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.9118 - loss: 0.2476 659/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.9117 - loss: 0.2478 718/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.9116 - loss: 0.2480 777/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 843us/step - accuracy: 0.9115 - loss: 0.2482 837/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 843us/step - accuracy: 0.9114 - loss: 0.2485 899/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 841us/step - accuracy: 0.9113 - loss: 0.2487 961/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 839us/step - accuracy: 0.9113 - loss: 0.24881018/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.9113 - loss: 0.24891077/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.9113 - loss: 0.24881140/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 840us/step - accuracy: 0.9113 - loss: 0.24881201/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 839us/step - accuracy: 0.9113 - loss: 0.24871262/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 838us/step - accuracy: 0.9113 - loss: 0.24871320/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 840us/step - accuracy: 0.9114 - loss: 0.24871381/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 839us/step - accuracy: 0.9114 - loss: 0.24861443/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 838us/step - accuracy: 0.9115 - loss: 0.24861506/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 836us/step - accuracy: 0.9115 - loss: 0.24851570/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 835us/step - accuracy: 0.9115 - loss: 0.24851630/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 835us/step - accuracy: 0.9115 - loss: 0.24851692/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 834us/step - accuracy: 0.9115 - loss: 0.24851719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 894us/step - accuracy: 0.9115 - loss: 0.2485 - val_accuracy: 0.8738 - val_loss: 0.3517
Epoch 25/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9375 - loss: 0.1996  64/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 803us/step - accuracy: 0.9263 - loss: 0.2102 126/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 807us/step - accuracy: 0.9211 - loss: 0.2225 188/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9177 - loss: 0.2314 249/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 812us/step - accuracy: 0.9162 - loss: 0.2355 313/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 808us/step - accuracy: 0.9152 - loss: 0.2380 374/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9147 - loss: 0.2399 436/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.9143 - loss: 0.2415 499/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9139 - loss: 0.2425 560/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9137 - loss: 0.2432 624/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9136 - loss: 0.2435 687/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9135 - loss: 0.2437 750/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.9134 - loss: 0.2439 815/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9133 - loss: 0.2441 877/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9132 - loss: 0.2444 940/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9132 - loss: 0.24451003/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9132 - loss: 0.24461065/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9131 - loss: 0.24451127/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9132 - loss: 0.24451191/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9132 - loss: 0.24441255/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 804us/step - accuracy: 0.9132 - loss: 0.24441319/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.9132 - loss: 0.24441383/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 803us/step - accuracy: 0.9132 - loss: 0.24431446/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.9132 - loss: 0.24431509/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.9133 - loss: 0.24421573/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.9133 - loss: 0.24421635/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.9133 - loss: 0.24421698/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 802us/step - accuracy: 0.9133 - loss: 0.24421719/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 864us/step - accuracy: 0.9133 - loss: 0.2442 - val_accuracy: 0.8750 - val_loss: 0.3510
Epoch 26/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 12ms/step - accuracy: 0.9375 - loss: 0.1928  60/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 851us/step - accuracy: 0.9289 - loss: 0.2038 123/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 826us/step - accuracy: 0.9238 - loss: 0.2167 186/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.9201 - loss: 0.2262 248/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 817us/step - accuracy: 0.9182 - loss: 0.2306 312/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 811us/step - accuracy: 0.9172 - loss: 0.2333 375/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 809us/step - accuracy: 0.9165 - loss: 0.2353 437/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9159 - loss: 0.2369 501/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.9155 - loss: 0.2380 565/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9152 - loss: 0.2387 627/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9151 - loss: 0.2390 690/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9150 - loss: 0.2392 753/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 805us/step - accuracy: 0.9148 - loss: 0.2394 814/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 807us/step - accuracy: 0.9147 - loss: 0.2396 877/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9146 - loss: 0.2399 940/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 806us/step - accuracy: 0.9146 - loss: 0.2400 997/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9145 - loss: 0.24011058/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9145 - loss: 0.24011120/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9146 - loss: 0.24001183/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9146 - loss: 0.24001246/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9146 - loss: 0.24001305/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9146 - loss: 0.23991366/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9146 - loss: 0.23991428/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9147 - loss: 0.23981490/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9147 - loss: 0.23981553/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9147 - loss: 0.23981614/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9147 - loss: 0.23971677/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9147 - loss: 0.23971719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 871us/step - accuracy: 0.9147 - loss: 0.2397 - val_accuracy: 0.8754 - val_loss: 0.3507
Epoch 27/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9375 - loss: 0.1864  62/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 836us/step - accuracy: 0.9317 - loss: 0.2008 124/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 824us/step - accuracy: 0.9261 - loss: 0.2129 185/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 825us/step - accuracy: 0.9222 - loss: 0.2220 246/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 826us/step - accuracy: 0.9202 - loss: 0.2264 310/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 818us/step - accuracy: 0.9190 - loss: 0.2290 371/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.9183 - loss: 0.2309 436/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 813us/step - accuracy: 0.9177 - loss: 0.2326 499/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9173 - loss: 0.2337 562/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9170 - loss: 0.2344 626/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9169 - loss: 0.2347 688/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9168 - loss: 0.2348 750/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9167 - loss: 0.2350 814/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9166 - loss: 0.2353 875/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9165 - loss: 0.2356 937/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9164 - loss: 0.23571000/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9164 - loss: 0.23581064/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9164 - loss: 0.23571126/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9164 - loss: 0.23571185/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9164 - loss: 0.23561246/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9164 - loss: 0.23561307/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9164 - loss: 0.23561368/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9164 - loss: 0.23561427/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.9165 - loss: 0.23551488/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.9165 - loss: 0.23551549/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.9165 - loss: 0.23541612/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 815us/step - accuracy: 0.9165 - loss: 0.23541676/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.9165 - loss: 0.23541719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 874us/step - accuracy: 0.9164 - loss: 0.2354 - val_accuracy: 0.8752 - val_loss: 0.3508
Epoch 28/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9375 - loss: 0.1800  62/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 836us/step - accuracy: 0.9333 - loss: 0.1967 124/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 823us/step - accuracy: 0.9280 - loss: 0.2088 186/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.9242 - loss: 0.2179 249/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 815us/step - accuracy: 0.9222 - loss: 0.2223 313/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 808us/step - accuracy: 0.9210 - loss: 0.2249 374/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9202 - loss: 0.2268 436/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 810us/step - accuracy: 0.9196 - loss: 0.2285 498/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9192 - loss: 0.2295 560/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9189 - loss: 0.2302 620/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 813us/step - accuracy: 0.9187 - loss: 0.2305 682/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.9186 - loss: 0.2307 744/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 814us/step - accuracy: 0.9185 - loss: 0.2309 808/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9184 - loss: 0.2311 871/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9183 - loss: 0.2314 936/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9183 - loss: 0.2316 998/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 809us/step - accuracy: 0.9182 - loss: 0.23161061/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 808us/step - accuracy: 0.9182 - loss: 0.23161122/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9183 - loss: 0.23161181/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9183 - loss: 0.23151243/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9182 - loss: 0.23151304/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9182 - loss: 0.23151366/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9183 - loss: 0.23141429/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 812us/step - accuracy: 0.9183 - loss: 0.23141494/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9183 - loss: 0.23141556/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9183 - loss: 0.23131618/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 811us/step - accuracy: 0.9183 - loss: 0.23131682/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 810us/step - accuracy: 0.9183 - loss: 0.23131719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 872us/step - accuracy: 0.9183 - loss: 0.2313 - val_accuracy: 0.8744 - val_loss: 0.3530
Epoch 29/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 11ms/step - accuracy: 0.9375 - loss: 0.1811  59/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 868us/step - accuracy: 0.9350 - loss: 0.1931 121/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 842us/step - accuracy: 0.9304 - loss: 0.2047 179/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 851us/step - accuracy: 0.9267 - loss: 0.2136 237/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 855us/step - accuracy: 0.9248 - loss: 0.2179 297/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 852us/step - accuracy: 0.9235 - loss: 0.2206 358/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 846us/step - accuracy: 0.9227 - loss: 0.2225 419/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 844us/step - accuracy: 0.9221 - loss: 0.2242 482/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 839us/step - accuracy: 0.9217 - loss: 0.2253 545/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 834us/step - accuracy: 0.9213 - loss: 0.2261 608/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 830us/step - accuracy: 0.9211 - loss: 0.2265 669/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.9209 - loss: 0.2266 731/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.9208 - loss: 0.2268 794/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9207 - loss: 0.2270 855/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9205 - loss: 0.2273 914/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.9204 - loss: 0.2275 975/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.9203 - loss: 0.22761038/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9203 - loss: 0.22761106/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 821us/step - accuracy: 0.9203 - loss: 0.22751165/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.9203 - loss: 0.22751197/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 843us/step - accuracy: 0.9202 - loss: 0.22751257/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 843us/step - accuracy: 0.9202 - loss: 0.22751318/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 842us/step - accuracy: 0.9202 - loss: 0.22741378/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 841us/step - accuracy: 0.9202 - loss: 0.22741441/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 840us/step - accuracy: 0.9202 - loss: 0.22741503/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 838us/step - accuracy: 0.9202 - loss: 0.22731565/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 837us/step - accuracy: 0.9202 - loss: 0.22731628/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 836us/step - accuracy: 0.9201 - loss: 0.22731690/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 835us/step - accuracy: 0.9201 - loss: 0.22731719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 898us/step - accuracy: 0.9201 - loss: 0.2273 - val_accuracy: 0.8746 - val_loss: 0.3533
Epoch 30/30
   1/1719 ━━━━━━━━━━━━━━━━━━━━ 19s 12ms/step - accuracy: 0.9688 - loss: 0.1729  60/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 854us/step - accuracy: 0.9392 - loss: 0.1888 120/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 845us/step - accuracy: 0.9336 - loss: 0.2000 182/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 834us/step - accuracy: 0.9293 - loss: 0.2094 244/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 828us/step - accuracy: 0.9272 - loss: 0.2139 307/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 824us/step - accuracy: 0.9258 - loss: 0.2165 369/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 821us/step - accuracy: 0.9249 - loss: 0.2185 431/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 819us/step - accuracy: 0.9242 - loss: 0.2202 491/1719 ━━━━━━━━━━━━━━━━━━━━ 1s 821us/step - accuracy: 0.9237 - loss: 0.2213 554/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.9234 - loss: 0.2220 617/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 817us/step - accuracy: 0.9232 - loss: 0.2223 679/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 816us/step - accuracy: 0.9231 - loss: 0.2225 738/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 819us/step - accuracy: 0.9230 - loss: 0.2227 795/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 823us/step - accuracy: 0.9228 - loss: 0.2229 855/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9226 - loss: 0.2232 915/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9225 - loss: 0.2234 977/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9224 - loss: 0.22351039/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 824us/step - accuracy: 0.9223 - loss: 0.22351098/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9223 - loss: 0.22351160/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 825us/step - accuracy: 0.9222 - loss: 0.22341220/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9222 - loss: 0.22341281/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.9221 - loss: 0.22341343/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9221 - loss: 0.22341404/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 826us/step - accuracy: 0.9221 - loss: 0.22331464/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 827us/step - accuracy: 0.9221 - loss: 0.22331522/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 828us/step - accuracy: 0.9221 - loss: 0.22331582/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 829us/step - accuracy: 0.9221 - loss: 0.22331640/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 830us/step - accuracy: 0.9220 - loss: 0.22331698/1719 ━━━━━━━━━━━━━━━━━━━━ 0s 832us/step - accuracy: 0.9220 - loss: 0.22331719/1719 ━━━━━━━━━━━━━━━━━━━━ 2s 894us/step - accuracy: 0.9220 - loss: 0.2233 - val_accuracy: 0.8762 - val_loss: 0.3525

Visualisation

import pandas as pd 

pd.DataFrame(history.history).plot(
    figsize=(8, 5), xlim=[0, 29], ylim=[0, 1], grid=True, xlabel="Époque",
    style=["r--", "r--.", "b-", "b-*"])
plt.legend(loc="lower left")  # code supplémentaire
plt.show()

Visualisation

Évaluation du modèle sur l’ensemble de test

model.evaluate(X_test, y_test)
  1/313 ━━━━━━━━━━━━━━━━━━━━ 3s 10ms/step - accuracy: 0.8750 - loss: 0.5930 98/313 ━━━━━━━━━━━━━━━━━━━━ 0s 519us/step - accuracy: 0.8777 - loss: 0.3547197/313 ━━━━━━━━━━━━━━━━━━━━ 0s 512us/step - accuracy: 0.8727 - loss: 0.3665299/313 ━━━━━━━━━━━━━━━━━━━━ 0s 506us/step - accuracy: 0.8714 - loss: 0.3703313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 537us/step - accuracy: 0.8713 - loss: 0.3704
[0.3731720447540283, 0.8712000250816345]

Faire des prédictions

X_new = X_test[:3]
y_proba = model.predict(X_new)
y_proba.round(2)
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 33ms/step
array([[0.  , 0.  , 0.  , 0.  , 0.  , 0.23, 0.  , 0.  , 0.  , 0.77],
       [0.  , 0.  , 1.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ],
       [0.  , 1.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ]],
      dtype=float32)
y_pred = y_proba.argmax(axis=-1)
y_pred
array([9, 2, 1])
y_new = y_test[:3]
y_new
array([9, 2, 1], dtype=uint8)

Prédictions vs Observations

np.array(class_names)[y_pred]
array(['Botte', 'Pull', 'Pantalon'], dtype='<U11')

Prologue

Résumé

  • Introduction aux réseaux de neurones et au connexionnisme
    • Passage de l’IA symbolique aux approches connexionnistes en intelligence artificielle.
    • Inspiration des réseaux neuronaux biologiques et de la structure du cerveau humain.
  • Calculs avec neurodes et unités logiques à seuil
    • Modèles précoces de neurones (neurodes) capables de réaliser des opérations logiques (ET, OU, NON).
    • Limites des perceptrons simples dans la résolution de problèmes non linéairement séparables comme le XOR.
  • Perceptrons multicouches (MLP) et réseaux de neurones à propagation avant (FNN)
    • Dépassement des limites des perceptrons en introduisant des couches cachées.
    • Structure et flux d’information dans les réseaux de neurones à propagation avant.
    • Explication des calculs de la passe avant dans les réseaux de neurones.
  • Fonctions d’activation dans les réseaux de neurones
    • Importance des fonctions d’activation non linéaires (sigmoïde, tanh, ReLU) pour permettre l’apprentissage de motifs complexes.
    • Rôle des fonctions d’activation dans la rétropropagation et l’optimisation par descente de gradient.
    • Théorème de l’approximation universelle et ses implications pour les réseaux neuronaux.
  • Frameworks d’apprentissage profond
    • Aperçu de PyTorch et TensorFlow en tant que plateformes leaders pour l’apprentissage profond.
    • Introduction à Keras comme API de haut niveau pour la construction et l’entraînement des réseaux neuronaux.
    • Discussion sur l’adaptabilité des différents frameworks à la recherche et aux applications industrielles.
  • Implémentation pratique avec Keras
    • Chargement et exploration de l’ensemble de données Fashion-MNIST.
    • Création d’un modèle de réseau neuronal avec l’API Sequential de Keras.
    • Compilation du modèle avec des fonctions de perte et des optimiseurs appropriés pour la classification multiclasses.
    • Entraînement du modèle et visualisation des métriques d’entraînement et de validation sur les époques.
  • Évaluation des performances du modèle sur l’ensemble de test
    • Évaluation des performances du modèle sur l’ensemble de test Fashion-MNIST.
    • Interprétation des résultats obtenus après l’entraînement.
  • Faire des prédictions et interpréter les résultats
    • Utilisation du modèle entraîné pour faire des prédictions sur de nouvelles données.
    • Visualisation des prédictions en parallèle avec les images et étiquettes réelles.
    • Compréhension des probabilités de sortie et des assignations de classes dans le contexte de l’ensemble de données.

Prochain cours

  • Nous discutons de l’algorithme utilisé pour entraîner les réseaux de neurones artificiels.

Références

Cybenko, George V. 1989. « Approximation by superpositions of a sigmoidal function ». Mathematics of Control, Signals and Systems 2: 303‑14. https://api.semanticscholar.org/CorpusID:3958369.
Géron, Aurélien. 2022. Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow. 3ᵉ éd. O’Reilly Media, Inc.
Goodfellow, Ian, Yoshua Bengio, et Aaron Courville. 2016. Deep Learning. Adaptive computation et machine learning. MIT Press. https://dblp.org/rec/books/daglib/0040158.
Hornik, Kurt, Maxwell Stinchcombe, et Halbert White. 1989. « Multilayer feedforward networks are universal approximators ». Neural Networks 2 (5): 359‑66. https://doi.org/https://doi.org/10.1016/0893-6080(89)90020-8.
LeCun, Yann, Yoshua Bengio, et Geoffrey Hinton. 2015. « Deep learning ». Nature 521 (7553): 436‑44. https://doi.org/10.1038/nature14539.
LeNail, Alexander. 2019. « NN-SVG: Publication-Ready Neural Network Architecture Schematics ». Journal of Open Source Software 4 (33): 747. https://doi.org/10.21105/joss.00747.
McCulloch, Warren S, et Walter Pitts. 1943. « A logical calculus of the ideas immanent in nervous activity ». The Bulletin of Mathematical Biophysics 5 (4): 115‑33. https://doi.org/10.1007/bf02478259.
Minsky, Marvin, et Seymour Papert. 1969. Perceptrons: An Introduction to Computational Geometry. Cambridge, MA, USA: MIT Press.
Rosenblatt, F. 1958. « The perceptron: A probabilistic model for information storage and organization in the brain. » Psychological Review 65 (6): 386‑408. https://doi.org/10.1037/h0042519.
Russell, Stuart, et Peter Norvig. 2020. Artificial Intelligence: A Modern Approach. 4ᵉ éd. Pearson. http://aima.cs.berkeley.edu/.

Marcel Turcotte

Marcel.Turcotte@uOttawa.ca

École de science informatique et de génie électrique (SIGE)

Université d’Ottawa