# @title Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# @title MIT License
#
# Copyright (c) 2017 François Chollet                                                                                                                    # IGNORE_COPYRIGHT: cleared by OSS licensing
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

Transfer learning and fine-tuning#

Copyright 2020 The TensorFlow Authors.

View on TensorFlow.org Run in Google Colab View source on GitHub Download notebook

In this tutorial, you will learn how to classify images of cats and dogs by using transfer learning from a pre-trained network.

A pre-trained model is a saved network that was previously trained on a large dataset, typically on a large-scale image-classification task. You either use the pretrained model as is or use transfer learning to customize this model to a given task.

The intuition behind transfer learning for image classification is that if a model is trained on a large and general enough dataset, this model will effectively serve as a generic model of the visual world. You can then take advantage of these learned feature maps without having to start from scratch by training a large model on a large dataset.

In this notebook, you will try two ways to customize a pretrained model:

  1. Feature Extraction: Use the representations learned by a previous network to extract meaningful features from new samples. You simply add a new classifier, which will be trained from scratch, on top of the pretrained model so that you can repurpose the feature maps learned previously for the dataset.

You do not need to (re)train the entire model. The base convolutional network already contains features that are generically useful for classifying pictures. However, the final, classification part of the pretrained model is specific to the original classification task, and subsequently specific to the set of classes on which the model was trained.

  1. Fine-Tuning: Unfreeze a few of the top layers of a frozen model base and jointly train both the newly-added classifier layers and the last layers of the base model. This allows us to “fine-tune” the higher-order feature representations in the base model in order to make them more relevant for the specific task.

You will follow the general machine learning workflow.

  1. Examine and understand the data

  2. Build an input pipeline, in this case using Keras ImageDataGenerator

  3. Compose the model

    • Load in the pretrained base model (and pretrained weights)

    • Stack the classification layers on top

  4. Train the model

  5. Evaluate model

import os

import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf

Data preprocessing#

Data download#

In this tutorial, you will use a dataset containing several thousand images of cats and dogs. Download and extract a zip file containing the images, then create a tf.data.Dataset for training and validation using the tf.keras.utils.image_dataset_from_directory utility. You can learn more about loading images in this tutorial.

_URL = "https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip"
path_to_zip = tf.keras.utils.get_file("cats_and_dogs.zip", origin=_URL, extract=True)
PATH = os.path.join(os.path.dirname(path_to_zip), "cats_and_dogs_filtered")

train_dir = os.path.join(PATH, "train")
validation_dir = os.path.join(PATH, "validation")

BATCH_SIZE = 32
IMG_SIZE = (160, 160)

train_dataset = tf.keras.utils.image_dataset_from_directory(
    train_dir, shuffle=True, batch_size=BATCH_SIZE, image_size=IMG_SIZE
)
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1723777686.391165  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.394572  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.398160  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.401884  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.413007  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.416056  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.419433  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.422845  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.426285  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.429299  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.432651  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777686.436148  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.681670  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.683734  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.685806  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.687890  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.689894  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.691778  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.693753  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.695758  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.697678  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.699566  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.701656  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.703653  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.742357  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.744341  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.746361  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.748387  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.750315  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.752217  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.754219  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.756268  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.758235  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.760671  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.763079  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1723777687.765514  124422 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
validation_dataset = tf.keras.utils.image_dataset_from_directory(
    validation_dir, shuffle=True, batch_size=BATCH_SIZE, image_size=IMG_SIZE
)

Show the first nine images and labels from the training set:

class_names = train_dataset.class_names

plt.figure(figsize=(10, 10))
for images, labels in train_dataset.take(1):
    for i in range(9):
        ax = plt.subplot(3, 3, i + 1)
        plt.imshow(images[i].numpy().astype("uint8"))
        plt.title(class_names[labels[i]])
        plt.axis("off")

As the original dataset doesn’t contain a test set, you will create one. To do so, determine how many batches of data are available in the validation set using tf.data.experimental.cardinality, then move 20% of them to a test set.

val_batches = tf.data.experimental.cardinality(validation_dataset)
test_dataset = validation_dataset.take(val_batches // 5)
validation_dataset = validation_dataset.skip(val_batches // 5)
print(
    "Number of validation batches: %d"
    % tf.data.experimental.cardinality(validation_dataset)
)
print("Number of test batches: %d" % tf.data.experimental.cardinality(test_dataset))

Configure the dataset for performance#

Use buffered prefetching to load images from disk without having I/O become blocking. To learn more about this method see the data performance guide.

AUTOTUNE = tf.data.AUTOTUNE

train_dataset = train_dataset.prefetch(buffer_size=AUTOTUNE)
validation_dataset = validation_dataset.prefetch(buffer_size=AUTOTUNE)
test_dataset = test_dataset.prefetch(buffer_size=AUTOTUNE)

Use data augmentation#

When you don’t have a large image dataset, it’s a good practice to artificially introduce sample diversity by applying random, yet realistic, transformations to the training images, such as rotation and horizontal flipping. This helps expose the model to different aspects of the training data and reduce overfitting. You can learn more about data augmentation in this tutorial.

data_augmentation = tf.keras.Sequential(
    [
        tf.keras.layers.RandomFlip("horizontal"),
        tf.keras.layers.RandomRotation(0.2),
    ]
)

Note: These layers are active only during training, when you call Model.fit. They are inactive when the model is used in inference mode in Model.evaluate, Model.predict, or Model.call.

Let’s repeatedly apply these layers to the same image and see the result.

for image, _ in train_dataset.take(1):
    plt.figure(figsize=(10, 10))
    first_image = image[0]
    for i in range(9):
        ax = plt.subplot(3, 3, i + 1)
        augmented_image = data_augmentation(tf.expand_dims(first_image, 0))
        plt.imshow(augmented_image[0] / 255)
        plt.axis("off")

Rescale pixel values#

In a moment, you will download tf.keras.applications.MobileNetV2 for use as your base model. This model expects pixel values in [-1, 1], but at this point, the pixel values in your images are in [0, 255]. To rescale them, use the preprocessing method included with the model.

preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input

Note: Alternatively, you could rescale pixel values from [0, 255] to [-1, 1] using tf.keras.layers.Rescaling.

rescale = tf.keras.layers.Rescaling(1.0 / 127.5, offset=-1)

Note: If using other tf.keras.applications, be sure to check the API doc to determine if they expect pixels in [-1, 1] or [0, 1], or use the included preprocess_input function.

Create the base model from the pre-trained convnets#

You will create the base model from the MobileNet V2 model developed at Google. This is pre-trained on the ImageNet dataset, a large dataset consisting of 1.4M images and 1000 classes. ImageNet is a research training dataset with a wide variety of categories like jackfruit and syringe. This base of knowledge will help us classify cats and dogs from our specific dataset.

First, you need to pick which layer of MobileNet V2 you will use for feature extraction. The very last classification layer (on “top”, as most diagrams of machine learning models go from bottom to top) is not very useful. Instead, you will follow the common practice to depend on the very last layer before the flatten operation. This layer is called the “bottleneck layer”. The bottleneck layer features retain more generality as compared to the final/top layer.

First, instantiate a MobileNet V2 model pre-loaded with weights trained on ImageNet. By specifying the include_top=False argument, you load a network that doesn’t include the classification layers at the top, which is ideal for feature extraction.

# Create the base model from the pre-trained model MobileNet V2
IMG_SHAPE = IMG_SIZE + (3,)
base_model = tf.keras.applications.MobileNetV2(
    input_shape=IMG_SHAPE, include_top=False, weights="imagenet"
)

This feature extractor converts each 160x160x3 image into a 5x5x1280 block of features. Let’s see what it does to an example batch of images:

image_batch, label_batch = next(iter(train_dataset))
feature_batch = base_model(image_batch)
print(feature_batch.shape)

Feature extraction#

In this step, you will freeze the convolutional base created from the previous step and to use as a feature extractor. Additionally, you add a classifier on top of it and train the top-level classifier.

Freeze the convolutional base#

It is important to freeze the convolutional base before you compile and train the model. Freezing (by setting layer.trainable = False) prevents the weights in a given layer from being updated during training. MobileNet V2 has many layers, so setting the entire model’s trainable flag to False will freeze all of them.

base_model.trainable = False

Important note about BatchNormalization layers#

Many models contain tf.keras.layers.BatchNormalization layers. This layer is a special case and precautions should be taken in the context of fine-tuning, as shown later in this tutorial.

When you set layer.trainable = False, the BatchNormalization layer will run in inference mode, and will not update its mean and variance statistics.

When you unfreeze a model that contains BatchNormalization layers in order to do fine-tuning, you should keep the BatchNormalization layers in inference mode by passing training = False when calling the base model. Otherwise, the updates applied to the non-trainable weights will destroy what the model has learned.

For more details, see the Transfer learning guide.

# Let's take a look at the base model architecture
base_model.summary()

Add a classification head#

To generate predictions from the block of features, average over the spatial 5x5 spatial locations, using a tf.keras.layers.GlobalAveragePooling2D layer to convert the features to a single 1280-element vector per image.

global_average_layer = tf.keras.layers.GlobalAveragePooling2D()
feature_batch_average = global_average_layer(feature_batch)
print(feature_batch_average.shape)

Apply a tf.keras.layers.Dense layer to convert these features into a single prediction per image. You don’t need an activation function here because this prediction will be treated as a logit, or a raw prediction value. Positive numbers predict class 1, negative numbers predict class 0.

prediction_layer = tf.keras.layers.Dense(1, activation="sigmoid")
prediction_batch = prediction_layer(feature_batch_average)
print(prediction_batch.shape)

Build a model by chaining together the data augmentation, rescaling, base_model and feature extractor layers using the Keras Functional API. As previously mentioned, use training=False as our model contains a BatchNormalization layer.

inputs = tf.keras.Input(shape=(160, 160, 3))
x = data_augmentation(inputs)
x = preprocess_input(x)
x = base_model(x, training=False)
x = global_average_layer(x)
x = tf.keras.layers.Dropout(0.2)(x)
outputs = prediction_layer(x)
model = tf.keras.Model(inputs, outputs)
model.summary()

The 8+ million parameters in MobileNet are frozen, but there are 1.2 thousand trainable parameters in the Dense layer. These are divided between two tf.Variable objects, the weights and biases.

len(model.trainable_variables)
tf.keras.utils.plot_model(model, show_shapes=True)

Compile the model#

Compile the model before training it. Since there are two classes and a sigmoid oputput, use the BinaryAccuracy.

base_learning_rate = 0.0001
model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=base_learning_rate),
    loss=tf.keras.losses.BinaryCrossentropy(),
    metrics=[tf.keras.metrics.BinaryAccuracy(threshold=0.5, name="accuracy")],
)

Train the model#

After training for 10 epochs, you should see ~96% accuracy on the validation set.

initial_epochs = 10

loss0, accuracy0 = model.evaluate(validation_dataset)
W0000 00:00:1723777697.582166  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.582939  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.589370  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.590063  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.590736  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.591407  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.592071  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.592733  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.593421  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.594107  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.594789  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.595481  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.596156  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.596862  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.597564  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.598264  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.598968  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.599741  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.605659  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.606345  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.607015  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.607691  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.608358  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.609024  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.609685  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.610357  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.611042  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.611719  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.612386  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.613058  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.613739  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.614483  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.615179  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.615893  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.622128  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.622849  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.623524  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.624191  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.624878  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.625562  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.626286  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.626989  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.627701  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.628422  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.629139  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.629870  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.630610  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.631397  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.632127  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.638324  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.639038  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.639707  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.640379  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.641084  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.641780  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.642499  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.643212  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.643929  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.644657  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.645385  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.646068  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.646771  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.647508  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.648286  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.654355  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.655059  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.655722  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.656386  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.657055  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.657733  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.658407  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.659079  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.659761  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.660451  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.661139  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.661803  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.662481  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.663138  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.663794  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.664519  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.670260  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.670986  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.671685  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.672377  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.673122  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.673863  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.674647  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.675419  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.676186  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.676987  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.677782  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.678501  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.679220  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.680000  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.680785  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.686753  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.687496  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.688201  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.688895  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.689616  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.690343  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.691118  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.691849  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.692579  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.693346  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.694115  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.695055  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.695860  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.696658  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.697463  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.704422  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.705160  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.705852  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.706573  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.707264  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.707949  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.708636  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.709343  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.710047  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.710758  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.711456  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.712155  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.712848  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.713545  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.714244  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777697.715044  124619 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
print("initial loss: {:.2f}".format(loss0))
print("initial accuracy: {:.2f}".format(accuracy0))
history = model.fit(
    train_dataset, epochs=initial_epochs, validation_data=validation_dataset
)

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5905 - loss: 0.7091

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5919 - loss: 0.7077

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5932 - loss: 0.7063

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5945 - loss: 0.7048

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5959 - loss: 0.7032

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5972 - loss: 0.7018

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5985 - loss: 0.7003

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.5997 - loss: 0.6990
W0000 00:00:1723777704.397737  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.398671  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.399497  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.400322  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.401154  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.402015  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.402938  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.403723  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.404513  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.405339  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.406274  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.407173  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.408044  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.408940  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.411034  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.417910  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.418727  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.419494  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.420256  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.421017  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.421806  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.422581  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.423379  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.424140  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.424899  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.425677  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.426514  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.427492  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.428386  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.429216  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.430281  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.431136  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.433650  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.440239  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.441208  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.442150  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.443083  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.444007  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.444886  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.445789  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.446665  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.447540  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.448800  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.450017  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.451480  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.452586  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.453662  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.454795  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.455941  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.463035  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.463784  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.464489  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.465189  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.465892  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.466643  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.467370  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.468107  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.468826  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.469544  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.470264  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.470995  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.471820  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.472561  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.473375  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.474369  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.475156  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.476418  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.483064  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.483859  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.484625  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.485401  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.486168  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.486927  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.487713  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.488449  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.489174  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.490068  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.490952  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.491923  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.492753  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.493561  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.494392  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.495227  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.496281  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.503437  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.504189  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.504908  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.505623  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.506347  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.507076  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.507815  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.508574  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.509302  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.510028  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.510771  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.511510  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.512403  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.513177  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.514077  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.515176  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.516001  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.517532  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.524799  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.525491  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.526168  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.526827  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.527502  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.528174  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.528850  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.529517  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.530184  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.530857  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.531529  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.532202  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.532929  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.533622  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.534316  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.535080  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.535851  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.536920  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.543260  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.543963  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.544627  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.545306  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.545989  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.546747  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.547439  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.548127  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.548830  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.549503  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.550176  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.550886  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.551554  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.552265  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.553250  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.553933  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.554716  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.561027  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.561728  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.562408  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.563075  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.563753  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.564416  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.565094  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.565779  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.566463  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.567187  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.567875  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.568564  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.569291  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.569996  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.570707  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.571499  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.572308  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.573558  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.580191  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.580883  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.581555  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.582196  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.582852  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.583522  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.584192  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.584853  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.585525  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.586189  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.586862  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.587554  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.588235  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.588915  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.589585  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.590335  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.596016  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.596725  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.597434  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.598138  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.598822  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 36ms/step - accuracy: 0.6008 - loss: 0.6978
W0000 00:00:1723777704.599494  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.600166  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.600837  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.601515  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.602177  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.602866  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.603530  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.604222  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.604885  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.611237  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.611961  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.612669  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.613356  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.614060  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.614765  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.615453  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.616118  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.616787  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.617496  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.618172  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.618837  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.619546  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.620255  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.620971  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.621756  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.628424  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.629148  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.629832  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.630533  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.631233  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.631920  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.632604  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.633280  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.633948  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.634649  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.635341  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.636029  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.636730  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.637437  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.638155  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.638966  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.645275  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.645984  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.646701  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.647391  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.648129  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.648798  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.649458  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.650152  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.650851  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.651542  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.652234  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.652940  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.653657  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.654351  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.655049  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.655790  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.662700  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.663465  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.664181  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.664915  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.665649  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.666373  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.667076  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.667785  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.668477  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.669208  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.669920  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.670640  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.671370  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.672110  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.672850  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.673679  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.680300  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.681010  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.681692  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.682358  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.683054  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.683749  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.684467  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.685181  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.685899  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.686634  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.687367  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.688100  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.688826  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.689555  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.690340  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.696654  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.697377  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.698075  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.698792  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.699486  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.700170  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.700855  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.701527  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.702216  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.702882  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.703576  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.704258  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.704954  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.705612  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.706309  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.707057  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.712992  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.713730  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.714434  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.715138  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.715883  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.716624  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.717425  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.718222  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.718994  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.719799  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.720597  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.721396  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.722170  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.722964  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.723771  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.731009  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.731774  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.732515  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.733246  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.734034  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.734825  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.735600  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.736317  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.737107  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.737911  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.738709  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.739497  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.740221  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.741014  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.741807  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.742667  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.750284  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.751033  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.751759  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.752497  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.753195  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.753972  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.754762  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.755481  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.756211  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.756946  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.757670  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.758401  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.759143  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.759895  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.760646  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777704.761504  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced

63/63 ━━━━━━━━━━━━━━━━━━━━ 8s 47ms/step - accuracy: 0.6013 - loss: 0.6973 - val_accuracy: 0.8292 - val_loss: 0.4765
Epoch 2/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 3s 48ms/step - accuracy: 0.5625 - loss: 0.6844

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - accuracy: 0.5764 - loss: 0.7090

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6243 - loss: 0.6747

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6466 - loss: 0.6556

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6565 - loss: 0.6434

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6626 - loss: 0.6359

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6684 - loss: 0.6293

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6735 - loss: 0.6235

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6778 - loss: 0.6178

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6815 - loss: 0.6123

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6845 - loss: 0.6075

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6874 - loss: 0.6027

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6905 - loss: 0.5979

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6933 - loss: 0.5936

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6959 - loss: 0.5898

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6984 - loss: 0.5865

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7007 - loss: 0.5833

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7030 - loss: 0.5803

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7052 - loss: 0.5774

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7071 - loss: 0.5748

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7089 - loss: 0.5724

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7106 - loss: 0.5702

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7122 - loss: 0.5681

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7138 - loss: 0.5661

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7152 - loss: 0.5642

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7165 - loss: 0.5624

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7177 - loss: 0.5607

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7189 - loss: 0.5591

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7201 - loss: 0.5575

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7212 - loss: 0.5560

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7221 - loss: 0.5546

63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 39ms/step - accuracy: 0.7236 - loss: 0.5526 - val_accuracy: 0.9047 - val_loss: 0.3534
Epoch 3/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.7500 - loss: 0.4450

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7604 - loss: 0.4616

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7663 - loss: 0.4636

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7692 - loss: 0.4634

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7739 - loss: 0.4611

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7761 - loss: 0.4616

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7772 - loss: 0.4624

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7778 - loss: 0.4624

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7779 - loss: 0.4620

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7780 - loss: 0.4616

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7785 - loss: 0.4612

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7793 - loss: 0.4603

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7801 - loss: 0.4593

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7806 - loss: 0.4585

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7814 - loss: 0.4573

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7819 - loss: 0.4564

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7823 - loss: 0.4556

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7828 - loss: 0.4549

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7832 - loss: 0.4543

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7836 - loss: 0.4537

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7840 - loss: 0.4531

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7844 - loss: 0.4526

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7848 - loss: 0.4521

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7853 - loss: 0.4516

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7858 - loss: 0.4511

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7864 - loss: 0.4504

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7870 - loss: 0.4497

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7876 - loss: 0.4491

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7883 - loss: 0.4485

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7888 - loss: 0.4478

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7894 - loss: 0.4472

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.7903 - loss: 0.4462 - val_accuracy: 0.9282 - val_loss: 0.2795
Epoch 4/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.8125 - loss: 0.3939

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8403 - loss: 0.3769

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8523 - loss: 0.3685

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8546 - loss: 0.3655

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8576 - loss: 0.3630

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8586 - loss: 0.3606

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8590 - loss: 0.3587

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8587 - loss: 0.3582

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8584 - loss: 0.3579

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8576 - loss: 0.3581

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8577 - loss: 0.3580

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8577 - loss: 0.3579

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8579 - loss: 0.3578

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8582 - loss: 0.3579

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8581 - loss: 0.3582

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8581 - loss: 0.3584

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8579 - loss: 0.3585

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8576 - loss: 0.3587

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8574 - loss: 0.3588

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8573 - loss: 0.3587

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8572 - loss: 0.3587

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8572 - loss: 0.3588

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8569 - loss: 0.3590

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8566 - loss: 0.3591

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8564 - loss: 0.3592

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8562 - loss: 0.3592

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8562 - loss: 0.3591

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8563 - loss: 0.3589

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8563 - loss: 0.3587

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8563 - loss: 0.3585

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8563 - loss: 0.3585

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.8562 - loss: 0.3583 - val_accuracy: 0.9443 - val_loss: 0.2279
Epoch 5/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.9062 - loss: 0.3328

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9097 - loss: 0.3131

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9124 - loss: 0.3047

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9052 - loss: 0.3056

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8997 - loss: 0.3112

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8960 - loss: 0.3150

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8939 - loss: 0.3175

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8930 - loss: 0.3186

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8917 - loss: 0.3189

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8909 - loss: 0.3184

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8910 - loss: 0.3174

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8910 - loss: 0.3169

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8911 - loss: 0.3162

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8911 - loss: 0.3159

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8912 - loss: 0.3155

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8913 - loss: 0.3148

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8916 - loss: 0.3143

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8917 - loss: 0.3140

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8917 - loss: 0.3139

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8917 - loss: 0.3138

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8917 - loss: 0.3136

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8918 - loss: 0.3135

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8918 - loss: 0.3133

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8917 - loss: 0.3132

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8915 - loss: 0.3131

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8913 - loss: 0.3131

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8911 - loss: 0.3131

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8909 - loss: 0.3130

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8907 - loss: 0.3128

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8906 - loss: 0.3127

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8904 - loss: 0.3128

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.8901 - loss: 0.3128 - val_accuracy: 0.9554 - val_loss: 0.1954
Epoch 6/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.9375 - loss: 0.2704

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8889 - loss: 0.3159

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8805 - loss: 0.3255

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8699 - loss: 0.3332

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8653 - loss: 0.3360

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8633 - loss: 0.3365

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8628 - loss: 0.3352

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8637 - loss: 0.3324

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8653 - loss: 0.3291

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8670 - loss: 0.3260

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8685 - loss: 0.3233

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8698 - loss: 0.3211

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8707 - loss: 0.3190

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8716 - loss: 0.3170

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8727 - loss: 0.3149

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8737 - loss: 0.3130

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8747 - loss: 0.3112

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8758 - loss: 0.3095

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8768 - loss: 0.3078

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8779 - loss: 0.3062

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8790 - loss: 0.3046

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8801 - loss: 0.3031

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8810 - loss: 0.3019

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8818 - loss: 0.3007

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8825 - loss: 0.2997

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8832 - loss: 0.2988

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8837 - loss: 0.2980

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8842 - loss: 0.2972

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8847 - loss: 0.2964

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8852 - loss: 0.2956

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8856 - loss: 0.2949

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.8862 - loss: 0.2941 - val_accuracy: 0.9567 - val_loss: 0.1724
Epoch 7/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.9062 - loss: 0.3483

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - accuracy: 0.9306 - loss: 0.2985

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9265 - loss: 0.2989

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9228 - loss: 0.2965

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9203 - loss: 0.2938

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9195 - loss: 0.2905

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9170 - loss: 0.2895

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9159 - loss: 0.2881

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9156 - loss: 0.2859

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9157 - loss: 0.2835

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9158 - loss: 0.2812

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9157 - loss: 0.2793

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9153 - loss: 0.2781

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9150 - loss: 0.2769

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9149 - loss: 0.2755

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9150 - loss: 0.2739

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9149 - loss: 0.2728

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9145 - loss: 0.2723

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9141 - loss: 0.2718

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9138 - loss: 0.2714

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9136 - loss: 0.2709

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9133 - loss: 0.2704

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9131 - loss: 0.2700

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9130 - loss: 0.2696

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9127 - loss: 0.2693

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9123 - loss: 0.2691

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9121 - loss: 0.2689

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9118 - loss: 0.2687

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9116 - loss: 0.2685

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9114 - loss: 0.2682

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9111 - loss: 0.2681

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.9106 - loss: 0.2680 - val_accuracy: 0.9604 - val_loss: 0.1556
Epoch 8/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 3s 50ms/step - accuracy: 0.8750 - loss: 0.2662

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8698 - loss: 0.2745

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8759 - loss: 0.2721

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8805 - loss: 0.2695

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8825 - loss: 0.2680

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8830 - loss: 0.2676

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8839 - loss: 0.2674

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8854 - loss: 0.2662

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8875 - loss: 0.2641

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8899 - loss: 0.2618

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8920 - loss: 0.2594

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8939 - loss: 0.2575

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8959 - loss: 0.2556

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.8978 - loss: 0.2537

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.8994 - loss: 0.2520

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9009 - loss: 0.2506

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9023 - loss: 0.2493

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9033 - loss: 0.2483

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9039 - loss: 0.2479

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9043 - loss: 0.2477

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9046 - loss: 0.2475

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9047 - loss: 0.2476

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9048 - loss: 0.2476

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9047 - loss: 0.2478

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9047 - loss: 0.2481

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9047 - loss: 0.2484

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9048 - loss: 0.2487

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9048 - loss: 0.2489

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9048 - loss: 0.2490

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9049 - loss: 0.2490

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9049 - loss: 0.2491

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.9050 - loss: 0.2492 - val_accuracy: 0.9604 - val_loss: 0.1435
Epoch 9/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.9375 - loss: 0.1943

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.9201 - loss: 0.2273

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9230 - loss: 0.2254

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9258 - loss: 0.2193

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9268 - loss: 0.2178

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9271 - loss: 0.2172

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9276 - loss: 0.2160

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9275 - loss: 0.2146

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9273 - loss: 0.2138

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9271 - loss: 0.2132

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9266 - loss: 0.2135

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9262 - loss: 0.2142

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9259 - loss: 0.2147

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9257 - loss: 0.2150

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9256 - loss: 0.2153

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9254 - loss: 0.2157

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9251 - loss: 0.2161

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9247 - loss: 0.2166

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9244 - loss: 0.2170

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9242 - loss: 0.2172

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9240 - loss: 0.2175

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9239 - loss: 0.2177

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9236 - loss: 0.2181

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9233 - loss: 0.2185

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9230 - loss: 0.2190

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9227 - loss: 0.2194

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9223 - loss: 0.2199

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9220 - loss: 0.2203

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9218 - loss: 0.2206

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9216 - loss: 0.2209

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9214 - loss: 0.2212

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.9211 - loss: 0.2216 - val_accuracy: 0.9641 - val_loss: 0.1348
Epoch 10/10
 1/63 ━━━━━━━━━━━━━━━━━━━━ 3s 49ms/step - accuracy: 0.9688 - loss: 0.2103

 3/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9358 - loss: 0.2372

 5/63 ━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9349 - loss: 0.2312

 7/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9322 - loss: 0.2284

 9/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9318 - loss: 0.2240

11/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9312 - loss: 0.2210

13/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9303 - loss: 0.2193

15/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9296 - loss: 0.2181

17/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9294 - loss: 0.2168

19/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9293 - loss: 0.2157

21/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9294 - loss: 0.2147

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9293 - loss: 0.2143

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9292 - loss: 0.2142

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.9290 - loss: 0.2143

29/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9288 - loss: 0.2145

31/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9287 - loss: 0.2146

33/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9285 - loss: 0.2146

35/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9285 - loss: 0.2145

37/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9283 - loss: 0.2145

39/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9282 - loss: 0.2146

41/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9280 - loss: 0.2149

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9278 - loss: 0.2150

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9276 - loss: 0.2151

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9274 - loss: 0.2154

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9272 - loss: 0.2157

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9269 - loss: 0.2159

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9267 - loss: 0.2161

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9265 - loss: 0.2163

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9263 - loss: 0.2165

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9260 - loss: 0.2168

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.9258 - loss: 0.2170

63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 41ms/step - accuracy: 0.9256 - loss: 0.2171 - val_accuracy: 0.9653 - val_loss: 0.1308

Learning curves#

Let’s take a look at the learning curves of the training and validation accuracy/loss when using the MobileNetV2 base model as a fixed feature extractor.

acc = history.history["accuracy"]
val_acc = history.history["val_accuracy"]

loss = history.history["loss"]
val_loss = history.history["val_loss"]

plt.figure(figsize=(8, 8))
plt.subplot(2, 1, 1)
plt.plot(acc, label="Training Accuracy")
plt.plot(val_acc, label="Validation Accuracy")
plt.legend(loc="lower right")
plt.ylabel("Accuracy")
plt.ylim([min(plt.ylim()), 1])
plt.title("Training and Validation Accuracy")

plt.subplot(2, 1, 2)
plt.plot(loss, label="Training Loss")
plt.plot(val_loss, label="Validation Loss")
plt.legend(loc="upper right")
plt.ylabel("Cross Entropy")
plt.ylim([0, 1.0])
plt.title("Training and Validation Loss")
plt.xlabel("epoch")
plt.show()

Note: If you are wondering why the validation metrics are clearly better than the training metrics, the main factor is because layers like tf.keras.layers.BatchNormalization and tf.keras.layers.Dropout affect accuracy during training. They are turned off when calculating validation loss.

To a lesser extent, it is also because training metrics report the average for an epoch, while validation metrics are evaluated after the epoch, so validation metrics see a model that has trained slightly longer.

Fine tuning#

In the feature extraction experiment, you were only training a few layers on top of an MobileNetV2 base model. The weights of the pre-trained network were not updated during training.

One way to increase performance even further is to train (or “fine-tune”) the weights of the top layers of the pre-trained model alongside the training of the classifier you added. The training process will force the weights to be tuned from generic feature maps to features associated specifically with the dataset.

Note: This should only be attempted after you have trained the top-level classifier with the pre-trained model set to non-trainable. If you add a randomly initialized classifier on top of a pre-trained model and attempt to train all layers jointly, the magnitude of the gradient updates will be too large (due to the random weights from the classifier) and your pre-trained model will forget what it has learned.

Also, you should try to fine-tune a small number of top layers rather than the whole MobileNet model. In most convolutional networks, the higher up a layer is, the more specialized it is. The first few layers learn very simple and generic features that generalize to almost all types of images. As you go higher up, the features are increasingly more specific to the dataset on which the model was trained. The goal of fine-tuning is to adapt these specialized features to work with the new dataset, rather than overwrite the generic learning.

Un-freeze the top layers of the model#

All you need to do is unfreeze the base_model and set the bottom layers to be un-trainable. Then, you should recompile the model (necessary for these changes to take effect), and resume training.

base_model.trainable = True
# Let's take a look to see how many layers are in the base model
print("Number of layers in the base model: ", len(base_model.layers))

# Fine-tune from this layer onwards
fine_tune_at = 100

# Freeze all the layers before the `fine_tune_at` layer
for layer in base_model.layers[:fine_tune_at]:
    layer.trainable = False

Compile the model#

As you are training a much larger model and want to readapt the pretrained weights, it is important to use a lower learning rate at this stage. Otherwise, your model could overfit very quickly.

model.compile(
    loss=tf.keras.losses.BinaryCrossentropy(),
    optimizer=tf.keras.optimizers.RMSprop(learning_rate=base_learning_rate / 10),
    metrics=[tf.keras.metrics.BinaryAccuracy(threshold=0.5, name="accuracy")],
)
model.summary()
len(model.trainable_variables)

Continue training the model#

If you trained to convergence earlier, this step will improve your accuracy by a few percentage points.

fine_tune_epochs = 10
total_epochs = initial_epochs + fine_tune_epochs

history_fine = model.fit(
    train_dataset,
    epochs=total_epochs,
    initial_epoch=len(history.epoch),
    validation_data=validation_dataset,
)

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7750 - loss: 0.4563

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7750 - loss: 0.4558

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7753 - loss: 0.4547

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7755 - loss: 0.4538

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7757 - loss: 0.4529

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7761 - loss: 0.4518

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - accuracy: 0.7766 - loss: 0.4507

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7770 - loss: 0.4497

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7775 - loss: 0.4486

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7780 - loss: 0.4475

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7786 - loss: 0.4464

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7789 - loss: 0.4459

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7795 - loss: 0.4448

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7801 - loss: 0.4436

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7804 - loss: 0.4431

58/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7810 - loss: 0.4420

60/63 ━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7818 - loss: 0.4408

62/63 ━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.7825 - loss: 0.4395

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.7829 - loss: 0.4388
W0000 00:00:1723777740.759928  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.761018  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.762009  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.763008  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.763868  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.764730  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.765679  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.766639  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.767538  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.768451  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.769425  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.770413  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.774788  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.775700  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.776650  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.777593  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.778540  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.779532  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.780409  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.781361  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.782434  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.783729  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.787926  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.788865  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.789775  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.790696  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.791581  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.792447  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.793254  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.794047  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.794901  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.795757  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.796576  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.797395  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.801075  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.801870  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.802723  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.803489  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.804291  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.805088  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.805875  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.806757  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.807712  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.808824  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.812771  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.813586  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.814385  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.815166  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.815919  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.816682  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.817437  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.818213  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.818942  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.819699  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.820444  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.821222  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.823665  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.824543  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.825389  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.826174  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.826927  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.827749  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.828650  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.829708  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.832743  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.833534  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.834305  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.835070  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.835816  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.836566  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.837294  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.838045  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.838791  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.839535  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.840272  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.841010  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.844005  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.844738  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.845454  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.846154  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.846880  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.847596  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.848314  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.849085  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.849872  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.850759  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.855279  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.856026  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.856744  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.857460  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.858161  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.858867  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.859582  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.860329  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.861031  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.861739  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.862430  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.863124  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.865903  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.866626  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.867308  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.867984  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.868670  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.869361  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.870049  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.870812  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.871543  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.872322  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.875308  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.876066  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.876780  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.877493  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.878243  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.879036  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.879780  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.880655  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.881385  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.882330  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.883062  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.884092  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.887166  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.887919  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.888657  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.889395  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.890141  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.890946  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.891671  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.892427  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.893145  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.893924  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.897032  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.897777  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.898506  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.899215  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.899949  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.900670  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.901607  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.902624  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.903367  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.904117  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.904902  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.905763  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.908783  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.909510  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.910211  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.910890  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.911584  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.912311  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.913031  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.913806  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.914530  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced
W0000 00:00:1723777740.915336  124620 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced

63/63 ━━━━━━━━━━━━━━━━━━━━ 14s 79ms/step - accuracy: 0.7833 - loss: 0.4382 - val_accuracy: 0.9740 - val_loss: 0.0901
Epoch 12/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 66ms/step - accuracy: 0.8750 - loss: 0.2900

 3/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8819 - loss: 0.2776

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8860 - loss: 0.2764

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.8862 - loss: 0.2743

 8/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8872 - loss: 0.2727

10/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.8858 - loss: 0.2743

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.8847 - loss: 0.2745

13/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8845 - loss: 0.2745

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8838 - loss: 0.2754

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.8832 - loss: 0.2763

18/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8831 - loss: 0.2766

20/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.8832 - loss: 0.2765

22/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8836 - loss: 0.2763

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8838 - loss: 0.2762

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8840 - loss: 0.2762

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8841 - loss: 0.2763

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8842 - loss: 0.2762

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8845 - loss: 0.2759

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8846 - loss: 0.2759

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8843 - loss: 0.2764

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8842 - loss: 0.2765

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8840 - loss: 0.2767

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8839 - loss: 0.2767

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.8839 - loss: 0.2765

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8840 - loss: 0.2763

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8841 - loss: 0.2761

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8842 - loss: 0.2757

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.8844 - loss: 0.2754

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8845 - loss: 0.2753

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8847 - loss: 0.2749

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8849 - loss: 0.2747

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.8850 - loss: 0.2743

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.8851 - loss: 0.2740

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.8852 - loss: 0.2737

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.8853 - loss: 0.2735

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 60ms/step - accuracy: 0.8853 - loss: 0.2733 - val_accuracy: 0.9715 - val_loss: 0.0812
Epoch 13/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 65ms/step - accuracy: 0.9062 - loss: 0.2526

 3/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9427 - loss: 0.2120

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9519 - loss: 0.1942

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 48ms/step - accuracy: 0.9485 - loss: 0.1909

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9445 - loss: 0.1894

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9387 - loss: 0.1916

13/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9344 - loss: 0.1945

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9327 - loss: 0.1958

16/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9308 - loss: 0.1974

18/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9289 - loss: 0.1994

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9280 - loss: 0.2005

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9265 - loss: 0.2023

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9253 - loss: 0.2038

24/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9248 - loss: 0.2044

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9238 - loss: 0.2055

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9229 - loss: 0.2065

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9221 - loss: 0.2073

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9218 - loss: 0.2076

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9213 - loss: 0.2081

35/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9207 - loss: 0.2089

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9203 - loss: 0.2093

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9198 - loss: 0.2102

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9192 - loss: 0.2110

41/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9188 - loss: 0.2114

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9183 - loss: 0.2121

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9178 - loss: 0.2127

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9175 - loss: 0.2133

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9172 - loss: 0.2136

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9169 - loss: 0.2141

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9166 - loss: 0.2146

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9165 - loss: 0.2149

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9162 - loss: 0.2154

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9160 - loss: 0.2158

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9158 - loss: 0.2161

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9158 - loss: 0.2163

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - accuracy: 0.9156 - loss: 0.2165

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 60ms/step - accuracy: 0.9156 - loss: 0.2167 - val_accuracy: 0.9777 - val_loss: 0.0656
Epoch 14/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 66ms/step - accuracy: 1.0000 - loss: 0.0997

 2/63 ━━━━━━━━━━━━━━━━━━━━ 3s 50ms/step - accuracy: 0.9766 - loss: 0.1141

 4/63 ━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9681 - loss: 0.1321

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9657 - loss: 0.1380

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9584 - loss: 0.1468

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9510 - loss: 0.1533

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9463 - loss: 0.1575

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9450 - loss: 0.1587

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9434 - loss: 0.1597

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9427 - loss: 0.1605

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9419 - loss: 0.1613

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9412 - loss: 0.1623

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9408 - loss: 0.1632

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9403 - loss: 0.1641

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9397 - loss: 0.1650

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9394 - loss: 0.1654

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9390 - loss: 0.1662

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9388 - loss: 0.1667

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9387 - loss: 0.1669

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9384 - loss: 0.1676

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9382 - loss: 0.1679

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9379 - loss: 0.1687

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9376 - loss: 0.1694

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9374 - loss: 0.1702

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9371 - loss: 0.1709

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9370 - loss: 0.1713

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9368 - loss: 0.1720

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9366 - loss: 0.1725

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9365 - loss: 0.1728

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9364 - loss: 0.1730

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9363 - loss: 0.1733

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9363 - loss: 0.1735

54/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9362 - loss: 0.1738

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9361 - loss: 0.1741

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9360 - loss: 0.1742

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9359 - loss: 0.1746

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9357 - loss: 0.1749

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9356 - loss: 0.1752

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 60ms/step - accuracy: 0.9355 - loss: 0.1753 - val_accuracy: 0.9790 - val_loss: 0.0592
Epoch 15/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 65ms/step - accuracy: 0.9688 - loss: 0.1888

 3/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9514 - loss: 0.1675

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9483 - loss: 0.1590

 6/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9491 - loss: 0.1550

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9507 - loss: 0.1513

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9514 - loss: 0.1477

10/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9513 - loss: 0.1464

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9513 - loss: 0.1447

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9493 - loss: 0.1469

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9483 - loss: 0.1485

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9459 - loss: 0.1516

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9439 - loss: 0.1537

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9426 - loss: 0.1551

22/63 ━━━━━━━━━━━━━━━━━━━━ 2s 49ms/step - accuracy: 0.9422 - loss: 0.1554

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9417 - loss: 0.1559

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9409 - loss: 0.1567

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9407 - loss: 0.1570

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9404 - loss: 0.1575

29/63 ━━━━━━━━━━━━━━━━━━━━ 1s 49ms/step - accuracy: 0.9400 - loss: 0.1583

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9398 - loss: 0.1586

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9394 - loss: 0.1591

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9392 - loss: 0.1593

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9391 - loss: 0.1596

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9388 - loss: 0.1603

37/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9386 - loss: 0.1606

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9385 - loss: 0.1610

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9382 - loss: 0.1617

41/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9381 - loss: 0.1620

43/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9380 - loss: 0.1625

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9379 - loss: 0.1628

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9377 - loss: 0.1632

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9377 - loss: 0.1634

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9376 - loss: 0.1637

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9374 - loss: 0.1640

54/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9372 - loss: 0.1644

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9371 - loss: 0.1646

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9370 - loss: 0.1648

58/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9368 - loss: 0.1651

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9366 - loss: 0.1652

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9364 - loss: 0.1655

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - accuracy: 0.9363 - loss: 0.1657

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 61ms/step - accuracy: 0.9362 - loss: 0.1658 - val_accuracy: 0.9802 - val_loss: 0.0545
Epoch 16/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 67ms/step - accuracy: 0.9688 - loss: 0.1078

 2/63 ━━━━━━━━━━━━━━━━━━━━ 3s 52ms/step - accuracy: 0.9609 - loss: 0.1243

 4/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9434 - loss: 0.1378

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9384 - loss: 0.1418

 6/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9374 - loss: 0.1417

 8/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9364 - loss: 0.1415

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9357 - loss: 0.1426

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9350 - loss: 0.1451

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9350 - loss: 0.1461

13/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9354 - loss: 0.1464

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9359 - loss: 0.1468

16/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9364 - loss: 0.1466

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9369 - loss: 0.1462

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9379 - loss: 0.1454

20/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9381 - loss: 0.1454

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9381 - loss: 0.1455

23/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9385 - loss: 0.1453

24/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9385 - loss: 0.1454

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9387 - loss: 0.1455

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9387 - loss: 0.1455

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9387 - loss: 0.1455

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9387 - loss: 0.1455

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9387 - loss: 0.1455

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9388 - loss: 0.1454

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9388 - loss: 0.1455

35/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9388 - loss: 0.1455

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9388 - loss: 0.1455

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9390 - loss: 0.1454

39/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9391 - loss: 0.1454

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9391 - loss: 0.1454

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9392 - loss: 0.1454

43/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9392 - loss: 0.1454

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9392 - loss: 0.1455

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9392 - loss: 0.1456

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9391 - loss: 0.1456

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9391 - loss: 0.1457

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9391 - loss: 0.1458

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9392 - loss: 0.1458

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9392 - loss: 0.1458

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9392 - loss: 0.1458

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9393 - loss: 0.1457

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9393 - loss: 0.1457

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9393 - loss: 0.1457

59/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9393 - loss: 0.1458

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9393 - loss: 0.1458

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9393 - loss: 0.1459

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 62ms/step - accuracy: 0.9393 - loss: 0.1459 - val_accuracy: 0.9851 - val_loss: 0.0497
Epoch 17/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 67ms/step - accuracy: 0.8750 - loss: 0.1786

 2/63 ━━━━━━━━━━━━━━━━━━━━ 3s 51ms/step - accuracy: 0.8906 - loss: 0.1586

 3/63 ━━━━━━━━━━━━━━━━━━━━ 3s 50ms/step - accuracy: 0.9028 - loss: 0.1517

 4/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9095 - loss: 0.1488

 6/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9159 - loss: 0.1470

 8/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9202 - loss: 0.1443

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9222 - loss: 0.1436

10/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9234 - loss: 0.1432

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9247 - loss: 0.1426

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9257 - loss: 0.1418

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9276 - loss: 0.1412

16/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9296 - loss: 0.1404

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9307 - loss: 0.1397

18/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9318 - loss: 0.1391

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9330 - loss: 0.1384

20/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9341 - loss: 0.1377

22/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9359 - loss: 0.1364

23/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9366 - loss: 0.1360

24/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9373 - loss: 0.1357

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9379 - loss: 0.1353

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9385 - loss: 0.1350

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9391 - loss: 0.1346

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9396 - loss: 0.1342

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9406 - loss: 0.1337

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9410 - loss: 0.1336

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9413 - loss: 0.1335

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9420 - loss: 0.1333

35/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9423 - loss: 0.1332

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9426 - loss: 0.1330

37/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9429 - loss: 0.1329

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9431 - loss: 0.1327

39/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9434 - loss: 0.1325

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9436 - loss: 0.1324

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9440 - loss: 0.1323

43/63 ━━━━━━━━━━━━━━━━━━━━ 1s 50ms/step - accuracy: 0.9442 - loss: 0.1322

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9444 - loss: 0.1322

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9446 - loss: 0.1321

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9448 - loss: 0.1321

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9449 - loss: 0.1321

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9451 - loss: 0.1321

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9452 - loss: 0.1322

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9454 - loss: 0.1322

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9455 - loss: 0.1322

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9456 - loss: 0.1323

54/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9459 - loss: 0.1323

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9460 - loss: 0.1324

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9461 - loss: 0.1324

58/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9463 - loss: 0.1324

60/63 ━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9465 - loss: 0.1324

61/63 ━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9465 - loss: 0.1324

63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9467 - loss: 0.1325

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 62ms/step - accuracy: 0.9468 - loss: 0.1325 - val_accuracy: 0.9814 - val_loss: 0.0517
Epoch 18/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 67ms/step - accuracy: 0.9688 - loss: 0.1182

 2/63 ━━━━━━━━━━━━━━━━━━━━ 3s 52ms/step - accuracy: 0.9609 - loss: 0.1178

 4/63 ━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9557 - loss: 0.1092

 6/63 ━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9563 - loss: 0.1049

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9555 - loss: 0.1054

 8/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9557 - loss: 0.1049

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 50ms/step - accuracy: 0.9552 - loss: 0.1050

10/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9553 - loss: 0.1050

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9555 - loss: 0.1047

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9557 - loss: 0.1043

13/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9558 - loss: 0.1044

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9559 - loss: 0.1047

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9561 - loss: 0.1048

16/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9563 - loss: 0.1048

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9564 - loss: 0.1049

18/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9563 - loss: 0.1056

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9562 - loss: 0.1066

20/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9562 - loss: 0.1073

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9562 - loss: 0.1078

22/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9562 - loss: 0.1084

23/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9561 - loss: 0.1090

24/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9561 - loss: 0.1095

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9561 - loss: 0.1099

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9560 - loss: 0.1105

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9558 - loss: 0.1110

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9557 - loss: 0.1114

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9556 - loss: 0.1119

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9555 - loss: 0.1122

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9554 - loss: 0.1124

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9554 - loss: 0.1126

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9553 - loss: 0.1127

35/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9553 - loss: 0.1129

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9553 - loss: 0.1131

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9552 - loss: 0.1133

39/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9552 - loss: 0.1133

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9551 - loss: 0.1135

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9551 - loss: 0.1136

43/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9550 - loss: 0.1137

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9549 - loss: 0.1138

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9549 - loss: 0.1140

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9548 - loss: 0.1141

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9547 - loss: 0.1142

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9547 - loss: 0.1143

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9547 - loss: 0.1145

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9547 - loss: 0.1146

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9548 - loss: 0.1147

54/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9548 - loss: 0.1147

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9549 - loss: 0.1148

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9549 - loss: 0.1149

58/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9549 - loss: 0.1150

60/63 ━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9549 - loss: 0.1151

62/63 ━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - accuracy: 0.9549 - loss: 0.1152

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 62ms/step - accuracy: 0.9549 - loss: 0.1154 - val_accuracy: 0.9889 - val_loss: 0.0417
Epoch 19/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 66ms/step - accuracy: 0.9062 - loss: 0.1450

 2/63 ━━━━━━━━━━━━━━━━━━━━ 3s 51ms/step - accuracy: 0.9219 - loss: 0.1286

 3/63 ━━━━━━━━━━━━━━━━━━━━ 3s 52ms/step - accuracy: 0.9340 - loss: 0.1224

 4/63 ━━━━━━━━━━━━━━━━━━━ 3s 51ms/step - accuracy: 0.9368 - loss: 0.1214

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9407 - loss: 0.1175

 6/63 ━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9437 - loss: 0.1139

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9460 - loss: 0.1114

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9502 - loss: 0.1066

10/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9521 - loss: 0.1043

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9533 - loss: 0.1032

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9540 - loss: 0.1027

13/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9545 - loss: 0.1025

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9551 - loss: 0.1026

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9556 - loss: 0.1027

16/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9562 - loss: 0.1027

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9564 - loss: 0.1031

18/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9567 - loss: 0.1033

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9569 - loss: 0.1035

20/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9571 - loss: 0.1037

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9571 - loss: 0.1043

22/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9571 - loss: 0.1048

23/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9571 - loss: 0.1053

24/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9572 - loss: 0.1056

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9573 - loss: 0.1058

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9573 - loss: 0.1059

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9575 - loss: 0.1060

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9576 - loss: 0.1060

29/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9577 - loss: 0.1060

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9578 - loss: 0.1061

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9579 - loss: 0.1061

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9580 - loss: 0.1061

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9581 - loss: 0.1061

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9581 - loss: 0.1062

35/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9581 - loss: 0.1063

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9581 - loss: 0.1065

37/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9581 - loss: 0.1067

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9580 - loss: 0.1068

39/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9579 - loss: 0.1070

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9579 - loss: 0.1072

41/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9578 - loss: 0.1075

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9576 - loss: 0.1078

43/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9575 - loss: 0.1081

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9575 - loss: 0.1084

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9574 - loss: 0.1086

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9574 - loss: 0.1087

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9574 - loss: 0.1089

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9574 - loss: 0.1090

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9573 - loss: 0.1091

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9573 - loss: 0.1092

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9573 - loss: 0.1093

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9573 - loss: 0.1094

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9573 - loss: 0.1095

54/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9572 - loss: 0.1096

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9572 - loss: 0.1097

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9572 - loss: 0.1098

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9572 - loss: 0.1098

58/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9571 - loss: 0.1099

60/63 ━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9571 - loss: 0.1101

62/63 ━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9570 - loss: 0.1103

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 63ms/step - accuracy: 0.9569 - loss: 0.1105 - val_accuracy: 0.9851 - val_loss: 0.0428
Epoch 20/20
 1/63 ━━━━━━━━━━━━━━━━━━━━ 4s 67ms/step - accuracy: 0.9375 - loss: 0.1219

 2/63 ━━━━━━━━━━━━━━━━━━━━ 3s 51ms/step - accuracy: 0.9297 - loss: 0.1449

 3/63 ━━━━━━━━━━━━━━━━━━━━ 3s 51ms/step - accuracy: 0.9323 - loss: 0.1463

 4/63 ━━━━━━━━━━━━━━━━━━━ 3s 51ms/step - accuracy: 0.9355 - loss: 0.1420

 5/63 ━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9384 - loss: 0.1372

 6/63 ━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9400 - loss: 0.1340

 7/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9409 - loss: 0.1320

 8/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9410 - loss: 0.1324

 9/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9418 - loss: 0.1318

10/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9429 - loss: 0.1307

11/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9440 - loss: 0.1299

12/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9443 - loss: 0.1298

13/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9447 - loss: 0.1295

14/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9453 - loss: 0.1289

15/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9456 - loss: 0.1286

16/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9461 - loss: 0.1279

17/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9463 - loss: 0.1274

18/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9467 - loss: 0.1268

19/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9471 - loss: 0.1263

20/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9474 - loss: 0.1259

21/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9477 - loss: 0.1254

22/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9480 - loss: 0.1251

23/63 ━━━━━━━━━━━━━━━━━━━━ 2s 51ms/step - accuracy: 0.9483 - loss: 0.1249

24/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9485 - loss: 0.1247

25/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9487 - loss: 0.1244

26/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9489 - loss: 0.1242

27/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9491 - loss: 0.1241

28/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9492 - loss: 0.1239

29/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9494 - loss: 0.1237

30/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9495 - loss: 0.1235

31/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9497 - loss: 0.1233

32/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9499 - loss: 0.1231

33/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9501 - loss: 0.1229

34/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9502 - loss: 0.1226

35/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9504 - loss: 0.1224

36/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9506 - loss: 0.1222

37/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9507 - loss: 0.1220

38/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9508 - loss: 0.1219

39/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9509 - loss: 0.1218

40/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9509 - loss: 0.1218

41/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9509 - loss: 0.1219

42/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9509 - loss: 0.1220

43/63 ━━━━━━━━━━━━━━━━━━━━ 1s 51ms/step - accuracy: 0.9508 - loss: 0.1221

44/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9508 - loss: 0.1221

45/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9508 - loss: 0.1222

46/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9509 - loss: 0.1221

47/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9509 - loss: 0.1221

48/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9509 - loss: 0.1221

49/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9509 - loss: 0.1222

50/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9508 - loss: 0.1224

51/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9508 - loss: 0.1226

52/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9507 - loss: 0.1227

53/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9506 - loss: 0.1229

54/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9506 - loss: 0.1230

55/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9505 - loss: 0.1232

56/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9504 - loss: 0.1233

57/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9503 - loss: 0.1235

58/63 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9503 - loss: 0.1236

60/63 ━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9501 - loss: 0.1239

62/63 ━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - accuracy: 0.9500 - loss: 0.1241

63/63 ━━━━━━━━━━━━━━━━━━━━ 4s 63ms/step - accuracy: 0.9499 - loss: 0.1243 - val_accuracy: 0.9876 - val_loss: 0.0355

Let’s take a look at the learning curves of the training and validation accuracy/loss when fine-tuning the last few layers of the MobileNetV2 base model and training the classifier on top of it. The validation loss is much higher than the training loss, so you may get some overfitting.

You may also get some overfitting as the new training set is relatively small and similar to the original MobileNetV2 datasets.

After fine tuning the model nearly reaches 98% accuracy on the validation set.

acc += history_fine.history["accuracy"]
val_acc += history_fine.history["val_accuracy"]

loss += history_fine.history["loss"]
val_loss += history_fine.history["val_loss"]
plt.figure(figsize=(8, 8))
plt.subplot(2, 1, 1)
plt.plot(acc, label="Training Accuracy")
plt.plot(val_acc, label="Validation Accuracy")
plt.ylim([0.8, 1])
plt.plot(
    [initial_epochs - 1, initial_epochs - 1], plt.ylim(), label="Start Fine Tuning"
)
plt.legend(loc="lower right")
plt.title("Training and Validation Accuracy")

plt.subplot(2, 1, 2)
plt.plot(loss, label="Training Loss")
plt.plot(val_loss, label="Validation Loss")
plt.ylim([0, 1.0])
plt.plot(
    [initial_epochs - 1, initial_epochs - 1], plt.ylim(), label="Start Fine Tuning"
)
plt.legend(loc="upper right")
plt.title("Training and Validation Loss")
plt.xlabel("epoch")
plt.show()

Evaluation and prediction#

Finally you can verify the performance of the model on new data using test set.

loss, accuracy = model.evaluate(test_dataset)
print("Test accuracy :", accuracy)
Test accuracy : 0.96875

And now you are all set to use this model to predict if your pet is a cat or dog.

# Retrieve a batch of images from the test set
image_batch, label_batch = test_dataset.as_numpy_iterator().next()
predictions = model.predict_on_batch(image_batch).flatten()
predictions = tf.where(predictions < 0.5, 0, 1)

print("Predictions:\n", predictions.numpy())
print("Labels:\n", label_batch)

plt.figure(figsize=(10, 10))
for i in range(9):
    ax = plt.subplot(3, 3, i + 1)
    plt.imshow(image_batch[i].astype("uint8"))
    plt.title(class_names[predictions[i]])
    plt.axis("off")

Summary#

  • Using a pre-trained model for feature extraction: When working with a small dataset, it is a common practice to take advantage of features learned by a model trained on a larger dataset in the same domain. This is done by instantiating the pre-trained model and adding a fully-connected classifier on top. The pre-trained model is “frozen” and only the weights of the classifier get updated during training. In this case, the convolutional base extracted all the features associated with each image and you just trained a classifier that determines the image class given that set of extracted features.

  • Fine-tuning a pre-trained model: To further improve performance, one might want to repurpose the top-level layers of the pre-trained models to the new dataset via fine-tuning. In this case, you tuned your weights such that your model learned high-level features specific to the dataset. This technique is usually recommended when the training dataset is large and very similar to the original dataset that the pre-trained model was trained on.

To learn more, visit the Transfer learning guide.