Transfer Learning y arquitecturas modernas

deep-learning
transfer-learning
fine-tuning
CNN desde cero, MobileNetV2 congelada y fine-tuning: lectura de curvas, reportes y decisión.
Author

Wilder Ramírez Delgado

Published

September 4, 2026

Transfer Learning y arquitecturas modernas

Serie Deep Learning · del perceptrón a los transformers.

Open in Colab

En este artículo comparamos tres estrategias de representación visual —entrenar desde cero, extraer características con una base congelada y adaptar esa base (fine-tuning)— y leemos los reportes de entrenamiento como evidencia, no como veredicto automático.

1. Introducción

En las sesiones de CNN el modelo partía de kernels aleatorios. Cada detector útil se descubría en este dataset. Esa vía es válida y, cuando hay pocas imágenes o poco tiempo, es cara.

Transfer Learning reutiliza representaciones aprendidas en otra tarea (habitualmente ImageNet) y pregunta, con números, si esas representaciones ayudan aquí.

Pregunta que organiza el artículo: ¿cuándo basta una cabeza nueva sobre una base congelada, cuándo hay que adaptar la base, y cuándo es más honesto entrenar desde cero?

Las cifras no se anticipan en el texto. Salen de history, evaluate() y classification_report. Si reejecuta, la lectura cambia con esos resultados.

Una métrica no es una conclusión. Es evidencia para construir una conclusión.

2. Qué ya se da por conocido

Imágenes como tensores, convolución, pooling, Train/Validation/Test, accuracy, pérdida, matriz de confusión, Precision, Recall, F1, overfitting y regularización. Aquí se aplican para decidir una estrategia de transferencia.

3. Protocolo de lectura de un entrenamiento

Antes de MobileNet, fijamos cómo se lee un history. El mismo protocolo se usa en todos los experimentos de este artículo.

Pieza Pregunta
loss vs val_loss ¿El modelo mejora fuera de la muestra o solo memoriza?
Mejor época de val_loss ¿El último paso es el que debemos reportar?
Gap train−val (accuracy) ¿Hay holgura de sobreajuste?
classification_report ¿El accuracy esconde una clase rota?
Tiempo y parámetros entrenables ¿El ganador es también asequible?

Observación → comparación → inferencia → limitación → decisión. En ese orden.

import os
import time
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import (
    classification_report,
    confusion_matrix,
    precision_recall_fscore_support,
)
import tensorflow as tf

os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
SEED = 42
tf.keras.utils.set_random_seed(SEED)
plt.style.use("seaborn-v0_8-whitegrid")

print("TensorFlow:", tf.__version__)
print("GPU:", tf.config.list_physical_devices("GPU") or "ninguna (CPU)")


def series_history(hist):
    h = hist.history if hasattr(hist, "history") else hist
    return {k: np.asarray(v, dtype=float) for k, v in h.items()}


def diagnostico_entrenamiento(hist, nombre="modelo"):
    """Resume un history como se leería en un informe técnico."""
    s = series_history(hist)
    loss = s["loss"]
    n = len(loss)
    tiene_val = "val_loss" in s
    fila = {"modelo": nombre, "epocas_corridas": n}
    if tiene_val:
        i = int(np.argmin(s["val_loss"]))
        fila.update({
            "mejor_epoca_val_loss": i + 1,
            "min_val_loss": float(s["val_loss"][i]),
            "val_loss_final": float(s["val_loss"][-1]),
            "train_loss_en_mejor": float(loss[i]),
            "train_loss_final": float(loss[-1]),
            "delta_val_tras_mejor": float(s["val_loss"][-1] - s["val_loss"][i]),
            "gap_loss_mejor": float(s["val_loss"][i] - loss[i]),
            "gap_loss_final": float(s["val_loss"][-1] - loss[-1]),
        })
        if "accuracy" in s and "val_accuracy" in s:
            fila["train_acc_mejor"] = float(s["accuracy"][i])
            fila["val_acc_mejor"] = float(s["val_accuracy"][i])
            fila["train_acc_final"] = float(s["accuracy"][-1])
            fila["val_acc_final"] = float(s["val_accuracy"][-1])
            fila["gap_acc_mejor"] = float(s["accuracy"][i] - s["val_accuracy"][i])
            fila["gap_acc_final"] = float(s["accuracy"][-1] - s["val_accuracy"][-1])
    print(pd.Series(fila).to_string())
    if tiene_val:
        print()
        print("LECTURA")
        if fila["mejor_epoca_val_loss"] < n:
            print(
                f"La mejor val_loss no es la última época "
                f"({fila['mejor_epoca_val_loss']} de {n}). "
                "Si restore_best_weights=True, el modelo guardado no es el del último paso."
            )
        else:
            print("La mejor val_loss coincide con la última época: no hay tramo posterior de deterioro.")
        if fila.get("gap_acc_final", 0) > 0.08:
            print("Gap train-val de accuracy notable: posible sobreajuste o desajuste de dificultad.")
        elif fila.get("gap_acc_final", 0) < -0.02:
            print("Val > train: regularización fuerte, aumento de datos o validación más fácil.")
        if fila.get("delta_val_tras_mejor", 0) > 0.05:
            print("val_loss subió tras el mínimo: el entrenamiento extra no estaba ayudando.")
    return fila


def curvas_entrenamiento(hist, titulo):
    s = series_history(hist)
    ep = np.arange(1, len(s["loss"]) + 1)
    fig, axes = plt.subplots(1, 2, figsize=(11, 3.6))
    axes[0].plot(ep, s["loss"], marker="o", label="train")
    if "val_loss" in s:
        axes[0].plot(ep, s["val_loss"], marker="o", label="validación")
        i = int(np.argmin(s["val_loss"]))
        axes[0].axvline(i + 1, ls="--", color="0.4", label=f"mejor val_loss (ép. {i+1})")
    axes[0].set_title(f"{titulo} — pérdida")
    axes[0].set_xlabel("Época")
    axes[0].legend()
    if "accuracy" in s:
        axes[1].plot(ep, s["accuracy"], marker="o", label="train")
        if "val_accuracy" in s:
            axes[1].plot(ep, s["val_accuracy"], marker="o", label="validación")
        axes[1].set_title(f"{titulo} — accuracy")
        axes[1].set_xlabel("Época")
        axes[1].legend()
    else:
        axes[1].axis("off")
    plt.tight_layout()
    plt.show()


def informe_clasificacion(y_true, y_pred, nombres, titulo=""):
    print(titulo)
    print(classification_report(y_true, y_pred, target_names=nombres, digits=4, zero_division=0))
    p, r, f1, sop = precision_recall_fscore_support(
        y_true, y_pred, average=None, zero_division=0
    )
    df = pd.DataFrame({
        "clase": nombres,
        "precision": p,
        "recall": r,
        "f1": f1,
        "soporte": sop,
    }).sort_values("f1")
    print("Clases ordenadas por F1 (las de abajo son las más débiles):")
    print(df.to_string(index=False, float_format=lambda v: f"{v:.4f}"))
    return df


def matriz_y_errores(y_true, y_pred, nombres, x=None, probs=None, k=8):
    cm = confusion_matrix(y_true, y_pred)
    fig, ax = plt.subplots(figsize=(6.2, 5.2))
    im = ax.imshow(cm, cmap="Blues")
    ax.set_xticks(range(len(nombres)), nombres, rotation=70, ha="right", fontsize=8)
    ax.set_yticks(range(len(nombres)), nombres, fontsize=8)
    ax.set_xlabel("Predicho")
    ax.set_ylabel("Verdadero")
    fig.colorbar(im, ax=ax, fraction=0.046)
    plt.tight_layout()
    plt.show()
    if x is None:
        return cm
    conf = probs[np.arange(len(y_pred)), y_pred] if probs is not None else np.ones(len(y_pred))
    err = np.where(y_true != y_pred)[0]
    if len(err) == 0:
        print("Cero errores en el recorte analizado.")
        return cm
    orden = err[np.argsort(-conf[err])]
    n = min(k, len(orden))
    cols = min(4, n)
    rows = int(np.ceil(n / cols))
    fig, axes = plt.subplots(rows, cols, figsize=(2.6 * cols, 2.6 * rows))
    axes = np.atleast_1d(axes).ravel()
    for ax, j in zip(axes, orden[:n]):
        img = x[j]
        if img.ndim == 3 and img.shape[-1] == 1:
            img = img.squeeze()
        ax.imshow(img, cmap="gray" if np.ndim(img) == 2 else None)
        ax.set_title(
            f"V:{nombres[int(y_true[j])]}\\nP:{nombres[int(y_pred[j])]} ({conf[j]:.2f})",
            fontsize=8,
        )
        ax.axis("off")
    for ax in axes[n:]:
        ax.axis("off")
    plt.suptitle("Errores de mayor confianza")
    plt.tight_layout()
    plt.show()
    return cm
TensorFlow: 2.21.0
WARNING:tensorflow:TensorFlow GPU support is not available on native Windows for TensorFlow >= 2.11. Even if CUDA/cuDNN are installed, GPU will not be used. Please use WSL2 or the TensorFlow-DirectML plugin.
GPU: ninguna (CPU)

Idea clave

val_accuracy de la última época no es el resumen del entrenamiento. El resumen es la época de menor val_loss (si ese fue el criterio de checkpoint) y el comportamiento después de ese mínimo.

4. Laboratorio de lectura: un history sintético

Antes de gastar minutos de fit, inspeccionamos tres trayectorias inventadas. El objetivo es afianzar el lenguaje del informe: no hay pesos reales, hay curvas que ya conocemos en la práctica.

sano = {
    "loss": [1.2, 0.8, 0.55, 0.40, 0.32],
    "val_loss": [1.15, 0.78, 0.58, 0.47, 0.44],
    "accuracy": [0.45, 0.62, 0.73, 0.80, 0.84],
    "val_accuracy": [0.44, 0.60, 0.70, 0.76, 0.78],
}
sobreajuste = {
    "loss": [1.1, 0.6, 0.35, 0.18, 0.09],
    "val_loss": [1.05, 0.70, 0.62, 0.75, 0.92],
    "accuracy": [0.50, 0.72, 0.85, 0.93, 0.98],
    "val_accuracy": [0.48, 0.68, 0.71, 0.69, 0.66],
}
subajuste = {
    "loss": [1.8, 1.7, 1.65, 1.62, 1.60],
    "val_loss": [1.82, 1.74, 1.70, 1.68, 1.67],
    "accuracy": [0.22, 0.28, 0.31, 0.33, 0.34],
    "val_accuracy": [0.21, 0.27, 0.30, 0.31, 0.32],
}
print("=== Ajuste sano ===")
diagnostico_entrenamiento(sano, "sano")
curvas_entrenamiento(sano, "Ajuste sano")
print("\n=== Sobreajuste ===")
diagnostico_entrenamiento(sobreajuste, "sobreajuste")
curvas_entrenamiento(sobreajuste, "Sobreajuste")
print("\n=== Subajuste ===")
diagnostico_entrenamiento(subajuste, "subajuste")
curvas_entrenamiento(subajuste, "Subajuste")
=== Ajuste sano ===
modelo                  sano
epocas_corridas            5
mejor_epoca_val_loss       5
min_val_loss            0.44
val_loss_final          0.44
train_loss_en_mejor     0.32
train_loss_final        0.32
delta_val_tras_mejor     0.0
gap_loss_mejor          0.12
gap_loss_final          0.12
train_acc_mejor         0.84
val_acc_mejor           0.78
train_acc_final         0.84
val_acc_final           0.78
gap_acc_mejor           0.06
gap_acc_final           0.06

LECTURA
La mejor val_loss coincide con la última época: no hay tramo posterior de deterioro.


=== Sobreajuste ===
modelo                  sobreajuste
epocas_corridas                   5
mejor_epoca_val_loss              3
min_val_loss                   0.62
val_loss_final                 0.92
train_loss_en_mejor            0.35
train_loss_final               0.09
delta_val_tras_mejor            0.3
gap_loss_mejor                 0.27
gap_loss_final                 0.83
train_acc_mejor                0.85
val_acc_mejor                  0.71
train_acc_final                0.98
val_acc_final                  0.66
gap_acc_mejor                  0.14
gap_acc_final                  0.32

LECTURA
La mejor val_loss no es la última época (3 de 5). Si restore_best_weights=True, el modelo guardado no es el del último paso.
Gap train-val de accuracy notable: posible sobreajuste o desajuste de dificultad.
val_loss subió tras el mínimo: el entrenamiento extra no estaba ayudando.


=== Subajuste ===
modelo                  subajuste
epocas_corridas                 5
mejor_epoca_val_loss            5
min_val_loss                 1.67
val_loss_final               1.67
train_loss_en_mejor           1.6
train_loss_final              1.6
delta_val_tras_mejor          0.0
gap_loss_mejor               0.07
gap_loss_final               0.07
train_acc_mejor              0.34
val_acc_mejor                0.32
train_acc_final              0.34
val_acc_final                0.32
gap_acc_mejor                0.02
gap_acc_final                0.02

LECTURA
La mejor val_loss coincide con la última época: no hay tramo posterior de deterioro.

Interpretación

En el caso sano, train y validación bajan juntos y el gap permanece moderado. En el sobreajuste, val_loss tiene un mínimo temprano y luego empeora mientras train sigue cayendo: reportar la última época inflaría el éxito. En el subajuste ambas pérdidas apenas se mueven y el accuracy se queda cerca del azar: más épocas del mismo modelo no son una estrategia, es insistir.

5. Caso A — Control de calidad de empaques (CIFAR-10)

Un equipo de planta quiere separar, en cinta, cuatro tipos de empaque fotografiados de frente. No hay ImageNet de empaques; usamos CIFAR-10 como proxy (avión, automóvil, ave, gato → cuatro «SKU» visuales). El dominio no es la fábrica; el contrato experimental sí: mismo split, mismas épocas, leer el reporte por clase.

(xtr, ytr), (xte, yte) = tf.keras.datasets.cifar10.load_data()
ytr, yte = ytr.ravel(), yte.ravel()
keep = np.isin(ytr, [0, 1, 2, 3])
x_qc, y_qc = xtr[keep], ytr[keep]
# recodificar 0..3
mapa = {0: 0, 1: 1, 2: 2, 3: 3}
y_qc = np.vectorize(mapa.get)(y_qc)
SKU = ["avion", "auto", "ave", "gato"]
# 5000 para entrenar, 1000 val internas, test oficial filtrado
rng = np.random.default_rng(SEED)
idx = rng.permutation(len(x_qc))
x_qc, y_qc = x_qc[idx], y_qc[idx]
x_tr, y_tr = x_qc[:5000], y_qc[:5000]
x_va, y_va = x_qc[5000:6000], y_qc[5000:6000]
keep_te = np.isin(yte, [0, 1, 2, 3])
x_te, y_te = xte[keep_te][:2000], np.vectorize(mapa.get)(yte[keep_te][:2000])
x_tr = x_tr.astype("float32") / 255.0
x_va = x_va.astype("float32") / 255.0
x_te = x_te.astype("float32") / 255.0
print(x_tr.shape, x_va.shape, x_te.shape)
print(pd.Series(y_tr).value_counts().sort_index().to_string())
A local file was found, but it seems to be incomplete or outdated because the auto file hash does not match the original value of 6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce so we will re-download the data.

Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz


        0/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0s/step

     8192/170498071 ━━━━━━━━━━━━━━━━━━━━ 26:18 9us/step

    32768/170498071 ━━━━━━━━━━━━━━━━━━━━ 14:40 5us/step

    90112/170498071 ━━━━━━━━━━━━━━━━━━━━ 8:18 3us/step 

   204800/170498071 ━━━━━━━━━━━━━━━━━━━━ 4:56 2us/step

   344064/170498071 ━━━━━━━━━━━━━━━━━━━━ 3:23 1us/step

   458752/170498071 ━━━━━━━━━━━━━━━━━━━━ 2:51 1us/step

   598016/170498071 ━━━━━━━━━━━━━━━━━━━━ 2:26 1us/step

   720896/170498071 ━━━━━━━━━━━━━━━━━━━━ 2:14 1us/step

   851968/170498071 ━━━━━━━━━━━━━━━━━━━━ 2:03 1us/step

   983040/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:55 1us/step

  1105920/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:50 1us/step

  1236992/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:46 1us/step

  1368064/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:42 1us/step

  1482752/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:40 1us/step

  1622016/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:37 1us/step

  1736704/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:35 1us/step

  1867776/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:33 1us/step

  1998848/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:31 1us/step

  2121728/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:30 1us/step

  2252800/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:29 1us/step

  2383872/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:27 1us/step

  2506752/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:26 1us/step

  2637824/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:25 1us/step

  2752512/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:25 1us/step

  2883584/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:24 1us/step

  3022848/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:23 0us/step

  3162112/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:22 0us/step

  3293184/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:21 0us/step

  3424256/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:20 0us/step

  3563520/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:20 0us/step

  3694592/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:19 0us/step

  3817472/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:19 0us/step

  3956736/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:18 0us/step

  4096000/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:17 0us/step

  4227072/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:17 0us/step

  4358144/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:16 0us/step

  4521984/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:15 0us/step

  4685824/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:14 0us/step

  4808704/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:14 0us/step

  4980736/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:13 0us/step

  5070848/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:14 0us/step

  5095424/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:18 0us/step

  5578752/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:12 0us/step

  5709824/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:12 0us/step

  5840896/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:12 0us/step

  5971968/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:11 0us/step

  6103040/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:11 0us/step

  6225920/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:11 0us/step

  6365184/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:11 0us/step

  6488064/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:11 0us/step

  6619136/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:11 0us/step

  6750208/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  6873088/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7004160/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7143424/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7266304/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7389184/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7520256/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7651328/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:10 0us/step

  7790592/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  7921664/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  8052736/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  8192000/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  8314880/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  8437760/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  8568832/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:09 0us/step

  8699904/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  8830976/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  8953856/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9084928/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9216000/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9338880/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9469952/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9592832/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9732096/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:08 0us/step

  9863168/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

  9994240/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10133504/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10256384/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10387456/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10518528/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10641408/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10772480/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 10911744/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 11034624/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:07 0us/step

 11182080/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 11304960/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 11436032/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 11575296/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 11698176/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 11829248/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 11952128/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 12091392/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 12222464/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 12345344/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:06 0us/step

 12476416/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 12607488/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 12730368/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 12861440/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 12976128/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 13115392/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 13254656/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 13393920/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 13541376/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:05 0us/step

 13672448/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:04 0us/step

 13819904/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:04 0us/step

 13975552/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:04 0us/step

 14131200/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:04 0us/step

 14295040/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:04 0us/step

 14442496/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:04 0us/step

 14606336/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:03 0us/step

 14753792/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:03 0us/step

 14925824/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:03 0us/step

 15081472/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:03 0us/step

 15253504/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 15400960/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 15523840/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 15654912/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 15777792/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 15900672/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16031744/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16154624/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16285696/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16408576/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16539648/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16670720/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16793600/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 16924672/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 17055744/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 17178624/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 17309696/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 17432576/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:02 0us/step

 17563648/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 17694720/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 17817600/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 17948672/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18079744/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18202624/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18341888/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18464768/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18595840/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18726912/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18849792/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 18989056/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 19120128/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 19251200/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 19382272/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 19505152/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 19636224/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:01 0us/step

 19767296/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 19890176/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20021248/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20144128/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20275200/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20414464/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20537344/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20668416/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20799488/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 20922368/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21053440/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21176320/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21315584/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21454848/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21577728/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21716992/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21848064/170498071 ━━━━━━━━━━━━━━━━━━━━ 1:00 0us/step

 21979136/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step 

 22110208/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22241280/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22372352/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22495232/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22593536/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22708224/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22839296/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 22962176/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23085056/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23216128/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23347200/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23478272/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23601152/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23732224/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23863296/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 23986176/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24109056/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24240128/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24363008/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24494080/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24608768/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24731648/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24846336/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 24961024/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25075712/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25190400/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25296896/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25411584/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 25518080/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25616384/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25722880/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25837568/170498071 ━━━━━━━━━━━━━━━━━━━━ 59s 0us/step

 25952256/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26075136/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26198016/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26312704/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26435584/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26550272/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26664960/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26779648/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26886144/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 26992640/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27107328/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27213824/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27312128/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27426816/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27533312/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27648000/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27754496/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27869184/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 27975680/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28073984/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28180480/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28295168/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28401664/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28516352/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28631040/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28737536/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28852224/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 28975104/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29081600/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29196288/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29310976/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29417472/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29532160/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29646848/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29753344/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29868032/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 29982720/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30089216/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30203904/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30326784/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30433280/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30547968/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30662656/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30769152/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30883840/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 30998528/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31105024/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31219712/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31342592/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31449088/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31563776/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31678464/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31793152/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 31907840/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 0us/step

 32022528/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32129024/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32251904/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32374784/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32489472/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32612352/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32727040/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32841728/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 32964608/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33079296/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33193984/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33316864/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33439744/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33546240/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33652736/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33775616/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33882112/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 33996800/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34111488/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34226176/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34349056/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34471936/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34586624/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34709504/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34824192/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 0us/step

 34947072/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35069952/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35184640/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35323904/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35463168/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35594240/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35725312/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 35856384/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36003840/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36159488/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36306944/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36438016/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36544512/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36659200/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36765696/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36872192/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 36986880/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 37101568/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 37208064/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 0us/step

 37314560/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 37429248/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 37543936/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 37642240/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 37756928/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 37863424/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 37961728/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38068224/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38174720/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38273024/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38379520/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38486016/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38592512/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38707200/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38821888/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 38928384/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39043072/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39157760/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39264256/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39378944/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39493632/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39600128/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39714816/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39837696/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 39944192/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40058880/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40173568/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40280064/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40394752/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40509440/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40624128/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40747008/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40861696/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 40968192/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 0us/step

 41091072/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41205760/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41320448/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41435136/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41549824/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41664512/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41787392/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 41910272/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42024960/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42147840/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42270720/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42385408/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42508288/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42631168/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42745856/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42868736/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 42991616/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 43106304/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 43229184/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 43352064/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 43474944/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 43589632/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 43704320/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 43835392/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 43958272/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44072960/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44204032/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44326912/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44441600/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44572672/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44695552/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44810240/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 44933120/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45064192/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45195264/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45318144/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45432832/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45555712/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45678592/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45793280/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 45916160/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 46039040/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46153728/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46276608/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46399488/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46514176/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46637056/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46768128/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 46899200/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47030272/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47153152/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47284224/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47415296/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47538176/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47669248/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47792128/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 47923200/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 48046080/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 48177152/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 48308224/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 48439296/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 48562176/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 48693248/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 48816128/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 48947200/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49078272/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49201152/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49332224/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49463296/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49586176/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49717248/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49840128/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 49963008/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 50094080/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 50216960/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 50348032/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 50479104/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 50601984/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 50733056/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 50864128/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 50995200/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51126272/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51249152/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51380224/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51511296/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51634176/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51765248/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 51888128/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 52027392/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 52158464/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 52281344/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 52412416/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 52543488/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 52666368/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 52789248/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 52920320/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53051392/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53182464/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53305344/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53436416/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53551104/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53665792/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53796864/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 53944320/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 54075392/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 54198272/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 54312960/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 54452224/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 0us/step

 54575104/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 54706176/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 54829056/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 54943744/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55058432/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55181312/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55312384/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55459840/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55574528/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55697408/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55828480/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 55967744/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56082432/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56213504/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56336384/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56475648/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56598528/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56721408/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 0us/step

 56844288/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 56967168/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57081856/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57204736/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57319424/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57442304/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57565184/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57688064/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57810944/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 57942016/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58048512/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58179584/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58302464/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58425344/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58548224/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58671104/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58785792/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 58916864/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 59039744/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 59154432/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 59277312/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 59400192/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 59531264/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 59654144/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 59768832/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 59891712/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60014592/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60129280/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60252160/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60375040/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60481536/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60604416/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 0us/step

 60637184/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 0us/step

 60645376/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 60653568/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 0us/step

 60743680/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 0us/step

 60751872/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 0us/step

 60760064/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 0us/step

 60768256/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 60776448/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 0us/step

 60792832/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 60801024/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 60817408/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 60833792/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 60850176/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 60858368/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 60882944/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 60907520/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 60940288/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 60964864/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 61005824/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61046784/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61087744/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61120512/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61169664/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61218816/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61235200/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61284352/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61341696/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61390848/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61415424/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61464576/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61521920/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 61538304/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61603840/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61669376/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61693952/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61767680/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61808640/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61865984/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61939712/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 61997056/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62054400/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62128128/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62185472/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62251008/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62316544/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62373888/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62464000/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62513152/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62603264/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62660608/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62742528/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62840832/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 62906368/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 63004672/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 63062016/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 63168512/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 63291392/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 63356928/170498071 ━━━━━━━━━━━━━━━━━━━━ 58s 1us/step

 63479808/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 63545344/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 63668224/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 63782912/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 63864832/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 63987712/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64077824/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64184320/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64299008/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64421888/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64536576/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64667648/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64782336/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 64905216/170498071 ━━━━━━━━━━━━━━━━━━━━ 57s 1us/step

 65044480/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 65175552/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 65323008/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 65445888/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 65617920/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 65724416/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 65888256/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 66035712/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 66166784/170498071 ━━━━━━━━━━━━━━━━━━━━ 56s 1us/step

 66330624/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 66502656/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 66600960/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 66764800/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 66912256/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 67067904/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 67223552/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 67338240/170498071 ━━━━━━━━━━━━━━━━━━━━ 55s 1us/step

 67493888/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 67616768/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 67756032/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 67919872/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 68083712/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 68247552/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 68444160/170498071 ━━━━━━━━━━━━━━━━━━━━ 54s 1us/step

 68624384/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 1us/step

 68829184/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 1us/step

 69025792/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 1us/step

 69222400/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 1us/step

 69337088/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 1us/step

 69525504/170498071 ━━━━━━━━━━━━━━━━━━━━ 53s 1us/step

 69738496/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 69943296/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 70115328/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 70295552/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 70402048/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 70549504/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 70762496/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 70885376/170498071 ━━━━━━━━━━━━━━━━━━━━ 52s 1us/step

 71081984/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 71303168/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 71524352/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 71680000/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 71794688/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 71942144/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 72048640/170498071 ━━━━━━━━━━━━━━━━━━━━ 51s 1us/step

 72163328/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72278016/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72384512/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72499200/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72613888/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72720384/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72835072/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 72949760/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73056256/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73170944/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73285632/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73392128/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73506816/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73621504/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73736192/170498071 ━━━━━━━━━━━━━━━━━━━━ 50s 1us/step

 73850880/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 73965568/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74072064/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74186752/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74301440/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74416128/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74530816/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74645504/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74760192/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74874880/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 74989568/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 75096064/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 75210752/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 75325440/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 75440128/170498071 ━━━━━━━━━━━━━━━━━━━━ 49s 1us/step

 75554816/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 75669504/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 75784192/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 75898880/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76013568/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76120064/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76234752/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76349440/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76464128/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76578816/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76693504/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76808192/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 76922880/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 77037568/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 77144064/170498071 ━━━━━━━━━━━━━━━━━━━━ 48s 1us/step

 77258752/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 77373440/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 77488128/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 77602816/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 77717504/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 77832192/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 77946880/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78061568/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78168064/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78282752/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78397440/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78512128/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78626816/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78741504/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78856192/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 78970880/170498071 ━━━━━━━━━━━━━━━━━━━━ 47s 1us/step

 79085568/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79192064/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79306752/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79421440/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79536128/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79650816/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79765504/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79880192/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 79994880/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80109568/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80216064/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80330752/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80445440/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80560128/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80674816/170498071 ━━━━━━━━━━━━━━━━━━━━ 46s 1us/step

 80789504/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 80904192/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81018880/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81133568/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81240064/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81354752/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81469440/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81584128/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81698816/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81813504/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 81928192/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 82042880/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 82157568/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 82264064/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 82378752/170498071 ━━━━━━━━━━━━━━━━━━━━ 45s 1us/step

 82493440/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 82608128/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 82722816/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 82837504/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 82952192/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83066880/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83181568/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83288064/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83402752/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83517440/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83632128/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83746816/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83861504/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 83976192/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 84090880/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 84205568/170498071 ━━━━━━━━━━━━━━━━━━━━ 44s 1us/step

 84312064/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 84426752/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 84541440/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 84656128/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 84762624/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 84869120/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 84983808/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85082112/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85196800/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85311488/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85417984/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85532672/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85639168/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85745664/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85860352/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 85975040/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 86073344/170498071 ━━━━━━━━━━━━━━━━━━━━ 43s 1us/step

 86188032/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86294528/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86392832/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86507520/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86622208/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86720512/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86835200/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 86941696/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87048192/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87154688/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87261184/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87367680/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87474176/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87580672/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87687168/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87785472/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87891968/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 87998464/170498071 ━━━━━━━━━━━━━━━━━━━━ 42s 1us/step

 88104960/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88211456/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88326144/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88424448/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88539136/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88645632/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88752128/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88858624/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 88965120/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89071616/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89169920/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89276416/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89391104/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89489408/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89595904/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89702400/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89800704/170498071 ━━━━━━━━━━━━━━━━━━━━ 41s 1us/step

 89915392/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90021888/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90120192/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90226688/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90333184/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90439680/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90537984/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90644480/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90750976/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90849280/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 90963968/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91078656/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91176960/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91291648/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91398144/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91496448/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91611136/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91725824/170498071 ━━━━━━━━━━━━━━━━━━━━ 40s 1us/step

 91824128/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 91938816/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92045312/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92151808/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92258304/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92364800/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92471296/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92577792/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92684288/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92798976/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 92897280/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93003776/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93110272/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93208576/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93315072/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93421568/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93528064/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93634560/170498071 ━━━━━━━━━━━━━━━━━━━━ 39s 1us/step

 93741056/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 93847552/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 93945856/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94052352/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94158848/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94257152/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94371840/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94478336/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94576640/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94683136/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94789632/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 94896128/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95002624/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95117312/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95223808/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95322112/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95428608/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95535104/170498071 ━━━━━━━━━━━━━━━━━━━━ 38s 1us/step

 95633408/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 95739904/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 95846400/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 95944704/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96051200/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96157696/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96264192/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96370688/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96477184/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96583680/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96681984/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96788480/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96894976/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 96993280/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 97099776/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 97206272/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 97304576/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 97411072/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 97517568/170498071 ━━━━━━━━━━━━━━━━━━━━ 37s 1us/step

 97624064/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 97730560/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 97837056/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 97943552/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98033664/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98140160/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98246656/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98344960/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98451456/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98557952/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98656256/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98762752/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98869248/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 98967552/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 99065856/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 99164160/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 99270656/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 99368960/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 99475456/170498071 ━━━━━━━━━━━━━━━━━━━━ 36s 1us/step

 99581952/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

 99680256/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

 99786752/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

 99893248/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

 99991552/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100089856/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100196352/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100302848/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100401152/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100507648/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100614144/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100704256/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100802560/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100900864/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

100999168/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

101097472/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

101195776/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

101294080/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

101384192/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

101482496/170498071 ━━━━━━━━━━━━━━━━━━━━ 35s 1us/step

101588992/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

101687296/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

101777408/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

101875712/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

101974016/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102064128/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102162432/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102260736/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102359040/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102449152/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102555648/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102653952/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102744064/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102842368/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

102940672/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103038976/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103129088/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103227392/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103325696/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103424000/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103514112/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103612416/170498071 ━━━━━━━━━━━━━━━━━━━━ 34s 1us/step

103710720/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

103800832/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

103899136/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

103997440/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104095744/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104185856/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104284160/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104382464/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104472576/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104570880/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104669184/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104767488/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104857600/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

104955904/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105054208/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105144320/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105242624/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105340928/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105439232/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105529344/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105627648/170498071 ━━━━━━━━━━━━━━━━━━━━ 33s 1us/step

105734144/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

105832448/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

105938944/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106037248/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106135552/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106225664/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106323968/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106422272/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106512384/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106610688/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106708992/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106807296/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106897408/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

106995712/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107094016/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107184128/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107290624/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107397120/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107495424/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107585536/170498071 ━━━━━━━━━━━━━━━━━━━━ 32s 1us/step

107692032/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

107790336/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

107880448/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

107978752/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108077056/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108175360/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108265472/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108363776/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108470272/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108560384/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108666880/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108773376/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108871680/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

108969984/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109068288/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109166592/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109256704/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109363200/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109469696/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109576192/170498071 ━━━━━━━━━━━━━━━━━━━━ 31s 1us/step

109682688/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

109789184/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

109887488/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

109985792/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110092288/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110198784/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110297088/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110395392/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110501888/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110600192/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110706688/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110813184/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

110919680/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111017984/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111124480/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111230976/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111337472/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111443968/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111550464/170498071 ━━━━━━━━━━━━━━━━━━━━ 30s 1us/step

111648768/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

111755264/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

111861760/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

111960064/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112066560/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112173056/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112271360/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112377856/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112484352/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112590848/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112689152/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112795648/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

112902144/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113000448/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113106944/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113213440/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113319936/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113418240/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113524736/170498071 ━━━━━━━━━━━━━━━━━━━━ 29s 1us/step

113631232/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

113729536/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

113836032/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

113942528/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114040832/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114147328/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114253824/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114352128/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114450432/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114556928/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114663424/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114761728/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114868224/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

114974720/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

115073024/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

115179520/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

115286016/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

115384320/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

115490816/170498071 ━━━━━━━━━━━━━━━━━━━━ 28s 1us/step

115597312/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

115703808/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

115802112/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

115908608/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116015104/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116113408/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116219904/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116326400/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116424704/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116531200/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116637696/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116744192/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116850688/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

116957184/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

117071872/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

117178368/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

117293056/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

117407744/170498071 ━━━━━━━━━━━━━━━━━━━━ 27s 1us/step

117514240/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

117628928/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

117743616/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

117850112/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

117964800/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118079488/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118185984/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118300672/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118415360/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118521856/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118636544/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118751232/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118857728/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

118972416/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

119078912/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

119185408/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

119300096/170498071 ━━━━━━━━━━━━━━━━━━━━ 26s 1us/step

119414784/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

119521280/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

119635968/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

119750656/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

119857152/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

119963648/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120078336/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120176640/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120291328/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120414208/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120520704/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120627200/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120741888/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120848384/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

120963072/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

121077760/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

121184256/170498071 ━━━━━━━━━━━━━━━━━━━━ 25s 1us/step

121298944/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

121413632/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

121520128/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

121634816/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

121749504/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

121864192/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

121978880/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122093568/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122200064/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122314752/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122429440/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122544128/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122658816/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122773504/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

122888192/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

123002880/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

123117568/170498071 ━━━━━━━━━━━━━━━━━━━━ 24s 1us/step

123224064/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

123338752/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

123453440/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

123568128/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

123682816/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

123797504/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

123912192/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124026880/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124141568/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124248064/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124362752/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124477440/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124592128/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124706816/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124821504/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

124936192/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

125050880/170498071 ━━━━━━━━━━━━━━━━━━━━ 23s 1us/step

125165568/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125272064/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125386752/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125501440/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125616128/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125730816/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125845504/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

125960192/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126074880/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126189568/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126296064/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126410752/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126525440/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126640128/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126754816/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126869504/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

126984192/170498071 ━━━━━━━━━━━━━━━━━━━━ 22s 1us/step

127098880/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127213568/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127320064/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127434752/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127549440/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127664128/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127778816/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

127893504/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128008192/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128122880/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128237568/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128344064/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128458752/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128573440/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128688128/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128802816/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

128917504/170498071 ━━━━━━━━━━━━━━━━━━━━ 21s 1us/step

129032192/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129146880/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129261568/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129368064/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129482752/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129597440/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129712128/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129826816/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

129941504/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130056192/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130170880/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130285568/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130392064/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130506752/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130621440/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130736128/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130850816/170498071 ━━━━━━━━━━━━━━━━━━━━ 20s 1us/step

130965504/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131080192/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131194880/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131309568/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131416064/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131530752/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131645440/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131760128/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131874816/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

131989504/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132104192/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132218880/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132333568/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132440064/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132554752/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132669440/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132784128/170498071 ━━━━━━━━━━━━━━━━━━━━ 19s 1us/step

132898816/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133013504/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133128192/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133251072/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133373952/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133488640/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133611520/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133734400/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133849088/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

133971968/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134094848/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134209536/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134332416/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134455296/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134569984/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134692864/170498071 ━━━━━━━━━━━━━━━━━━━━ 18s 1us/step

134815744/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

134930432/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135053312/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135176192/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135299072/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135421952/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135544832/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135675904/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135806976/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

135929856/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

136052736/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

136183808/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

136306688/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

136429568/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

136552448/170498071 ━━━━━━━━━━━━━━━━━━━━ 17s 1us/step

136683520/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

136814592/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

136937472/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137068544/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137199616/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137322496/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137453568/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137551872/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137568256/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

137830400/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

138264576/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

138395648/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

138518528/170498071 ━━━━━━━━━━━━━━━━━━━━ 16s 1us/step

138641408/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 1us/step

138772480/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 1us/step

138903552/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 1us/step

139026432/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 1us/step

139157504/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 1us/step

139280384/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

139386880/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

139476992/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

139608064/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

139804672/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

139935744/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

140058624/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

140189696/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

140312576/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

140443648/170498071 ━━━━━━━━━━━━━━━━━━━━ 15s 0us/step

140566528/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

140689408/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

140820480/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

140951552/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141066240/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141197312/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141320192/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141451264/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141582336/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141697024/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141819904/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

141950976/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

142073856/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

142204928/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

142327808/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step

142442496/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

142573568/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

142688256/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

142819328/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

142942208/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143065088/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143196160/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143327232/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143450112/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143581184/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143704064/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143835136/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

143966208/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

144080896/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

144211968/170498071 ━━━━━━━━━━━━━━━━━━━━ 13s 0us/step

144343040/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

144465920/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

144588800/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

144711680/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

144842752/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

144973824/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145096704/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145211392/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145326080/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145473536/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145596416/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145727488/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145850368/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

145973248/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

146096128/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

146227200/170498071 ━━━━━━━━━━━━━━━━━━━━ 12s 0us/step

146350080/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

146472960/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

146604032/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

146726912/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

146841600/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

146972672/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147103744/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147226624/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147349504/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147464192/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147587072/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147718144/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147832832/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

147947520/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

148078592/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

148193280/170498071 ━━━━━━━━━━━━━━━━━━━━ 11s 0us/step

148316160/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

148439040/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

148553728/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

148676608/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

148799488/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

148905984/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149037056/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149159936/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149274624/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149397504/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149512192/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149643264/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149766144/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

149880832/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

150003712/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

150134784/170498071 ━━━━━━━━━━━━━━━━━━━━ 10s 0us/step

150249472/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step 

150372352/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

150495232/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

150609920/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

150732800/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

150855680/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

150970368/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151093248/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151216128/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151339008/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151461888/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151576576/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151699456/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151822336/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

151937024/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

152059904/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

152182784/170498071 ━━━━━━━━━━━━━━━━━━━━ 9s 0us/step

152297472/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

152420352/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

152543232/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

152657920/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

152788992/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

152920064/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153051136/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153182208/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153296896/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153419776/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153550848/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153673728/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153804800/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

153935872/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

154058752/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

154181632/170498071 ━━━━━━━━━━━━━━━━━━━━ 8s 0us/step

154296320/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

154427392/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

154558464/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

154681344/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

154812416/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

154935296/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155049984/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155172864/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155312128/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155443200/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155574272/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155697152/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155828224/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

155959296/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

156082176/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

156205056/170498071 ━━━━━━━━━━━━━━━━━━━━ 7s 0us/step

156336128/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

156467200/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

156598272/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

156712960/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

156835840/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

156966912/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157089792/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157220864/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157360128/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157483008/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157614080/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157736960/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157868032/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

157999104/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

158121984/170498071 ━━━━━━━━━━━━━━━━━━━━ 6s 0us/step

158253056/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

158384128/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

158507008/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

158646272/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

158769152/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

158900224/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159031296/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159154176/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159285248/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159408128/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159531008/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159670272/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159793152/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

159916032/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

160047104/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

160169984/170498071 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step

160301056/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

160432128/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

160563200/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

160694272/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

160817152/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

160948224/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161079296/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161193984/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161325056/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161456128/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161587200/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161718272/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161841152/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

161972224/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

162103296/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

162226176/170498071 ━━━━━━━━━━━━━━━━━━━━ 4s 0us/step

162349056/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

162480128/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

162611200/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

162742272/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

162865152/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

162996224/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163127296/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163250176/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163381248/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163504128/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163635200/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163766272/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

163889152/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

164020224/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

164151296/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

164274176/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step

164405248/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

164528128/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

164659200/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

164790272/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

164913152/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165036032/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165167104/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165289984/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165412864/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165543936/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165658624/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165789696/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

165912576/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

166035456/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

166166528/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

166281216/170498071 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step

166412288/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

166535168/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

166658048/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

166789120/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

166920192/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167051264/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167182336/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167305216/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167436288/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167567360/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167690240/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167821312/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

167944192/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

168067072/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

168198144/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

168321024/170498071 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step

168452096/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

168574976/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

168689664/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

168812544/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

168943616/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169058304/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169189376/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169304064/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169435136/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169558016/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169672704/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169803776/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

169934848/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

170049536/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

170180608/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

170311680/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

170434560/170498071 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

170498071/170498071 ━━━━━━━━━━━━━━━━━━━━ 83s 0us/step

(5000, 32, 32, 3) (1000, 32, 32, 3) (2000, 32, 32, 3)

0    1248

1    1211

2    1283

3    1258

Idea clave

Un proxy no autoriza a decir «así funciona la planta». Autoriza a practicar el mismo informe que se le entregaría a operaciones: curvas, F1 por SKU, errores seguros.

fig, axes = plt.subplots(2, 6, figsize=(10, 3.4))
for ax, i in zip(axes.ravel(), range(12)):
    ax.imshow(x_tr[i])
    ax.set_title(SKU[int(y_tr[i])], fontsize=8)
    ax.axis("off")
plt.suptitle("Muestra del proxy de empaques (CIFAR-10, 4 clases)")
plt.tight_layout()
plt.show()

6. Baseline de planta: CNN desde cero sobre el proxy

Arquitectura deliberadamente pequeña. Pregunta: ¿hay señal visual suficiente para superar el azar (0.25) en validación?

def cnn_qc():
    m = tf.keras.Sequential([
        tf.keras.layers.Input((32, 32, 3)),
        tf.keras.layers.Conv2D(32, 3, activation="relu", padding="same"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Conv2D(64, 3, activation="relu", padding="same"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(64, activation="relu"),
        tf.keras.layers.Dropout(0.3),
        tf.keras.layers.Dense(4, activation="softmax"),
    ])
    m.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
    return m

modelo_qc = cnn_qc()
print("params", modelo_qc.count_params())
hist_qc = modelo_qc.fit(
    x_tr, y_tr, validation_data=(x_va, y_va),
    epochs=6, batch_size=64, verbose=1,
    callbacks=[tf.keras.callbacks.EarlyStopping(monitor="val_loss", patience=2, restore_best_weights=True)],
)
params 281860

Epoch 1/6


 1/79 ━━━━━━━━━━━━━━━━━━━━ 3:31 3s/step - accuracy: 0.1875 - loss: 1.3848

 3/79 ━━━━━━━━━━━━━━━━━━━━ 3s 40ms/step - accuracy: 0.2969 - loss: 1.3656

 5/79 ━━━━━━━━━━━━━━━━━━━━ 2s 34ms/step - accuracy: 0.2906 - loss: 1.3774

 8/79 ━━━━━━━━━━━━━━━━━━━━ 2s 31ms/step - accuracy: 0.2793 - loss: 1.3802

10/79 ━━━━━━━━━━━━━━━━━━━━ 2s 30ms/step - accuracy: 0.2937 - loss: 1.3727

12/79 ━━━━━━━━━━━━━━━━━━━━ 2s 31ms/step - accuracy: 0.2930 - loss: 1.3707

14/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.2846 - loss: 1.3695

16/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.3096 - loss: 1.3622

18/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.3385 - loss: 1.3533

20/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.3500 - loss: 1.3463

22/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.3601 - loss: 1.3366

24/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.3659 - loss: 1.3261

26/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.3780 - loss: 1.3128

28/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.3873 - loss: 1.3057

30/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.3984 - loss: 1.2897

33/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.4110 - loss: 1.2777

36/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.4180 - loss: 1.2640

38/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.4239 - loss: 1.2538

40/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.4305 - loss: 1.2429

42/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.4371 - loss: 1.2295

44/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.4446 - loss: 1.2195

46/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4501 - loss: 1.2106

48/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4551 - loss: 1.2026

50/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4597 - loss: 1.1960

52/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4654 - loss: 1.1859

54/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4740 - loss: 1.1731

56/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4827 - loss: 1.1612

58/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4860 - loss: 1.1533

60/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4909 - loss: 1.1457

62/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4945 - loss: 1.1387

64/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.4978 - loss: 1.1311

66/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5017 - loss: 1.1218

68/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5055 - loss: 1.1146

70/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5094 - loss: 1.1086

72/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5145 - loss: 1.1018

74/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5175 - loss: 1.0966

76/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5204 - loss: 1.0895

78/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.5234 - loss: 1.0836

79/79 ━━━━━━━━━━━━━━━━━━━━ 6s 39ms/step - accuracy: 0.5236 - loss: 1.0832 - val_accuracy: 0.6340 - val_loss: 0.8590

Epoch 2/6


 1/79 ━━━━━━━━━━━━━━━━━━━━ 8s 107ms/step - accuracy: 0.6719 - loss: 0.9476

 3/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.6510 - loss: 0.8906 

 5/79 ━━━━━━━━━━━━━━━━━━━━ 2s 31ms/step - accuracy: 0.6531 - loss: 0.8743

 7/79 ━━━━━━━━━━━━━━━━━━━━ 2s 30ms/step - accuracy: 0.6473 - loss: 0.8735

 9/79 ━━━━━━━━━━━━━━━━━━━━ 2s 30ms/step - accuracy: 0.6510 - loss: 0.8692

11/79 ━━━━━━━━━━━━━━━━━━━━ 2s 30ms/step - accuracy: 0.6562 - loss: 0.8532

13/79 ━━━━━━━━━━━━━━━━━━━━ 2s 30ms/step - accuracy: 0.6707 - loss: 0.8410

15/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6750 - loss: 0.8311

17/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6774 - loss: 0.8313

19/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6785 - loss: 0.8214

21/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6778 - loss: 0.8167

23/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6739 - loss: 0.8233

25/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6794 - loss: 0.8166

27/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6794 - loss: 0.8144

29/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6789 - loss: 0.8109

31/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6764 - loss: 0.8111

33/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6738 - loss: 0.8156

35/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6741 - loss: 0.8107

38/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6768 - loss: 0.8128

40/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6766 - loss: 0.8098

42/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6778 - loss: 0.8090

44/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.6758 - loss: 0.8101

46/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6763 - loss: 0.8121

48/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6761 - loss: 0.8143

50/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6734 - loss: 0.8165

52/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6749 - loss: 0.8146

54/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6739 - loss: 0.8136

56/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6761 - loss: 0.8094

58/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6765 - loss: 0.8083

60/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6753 - loss: 0.8088

62/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6749 - loss: 0.8076

64/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6746 - loss: 0.8047

66/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6750 - loss: 0.8020

68/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6742 - loss: 0.8028

70/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.6748 - loss: 0.8022

72/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.6764 - loss: 0.7999

74/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.6759 - loss: 0.8003

76/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.6785 - loss: 0.7960

78/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.6787 - loss: 0.7954

79/79 ━━━━━━━━━━━━━━━━━━━━ 3s 33ms/step - accuracy: 0.6786 - loss: 0.7956 - val_accuracy: 0.6870 - val_loss: 0.8024

Epoch 3/6


 1/79 ━━━━━━━━━━━━━━━━━━━━ 5s 69ms/step - accuracy: 0.7344 - loss: 0.7786

 3/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7292 - loss: 0.7373

 5/79 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - accuracy: 0.7188 - loss: 0.7529

 7/79 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - accuracy: 0.7031 - loss: 0.7723

 9/79 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - accuracy: 0.6997 - loss: 0.7668

12/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7044 - loss: 0.7523

15/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7115 - loss: 0.7427

18/79 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - accuracy: 0.7127 - loss: 0.7399

21/79 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - accuracy: 0.7121 - loss: 0.7330

23/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7113 - loss: 0.7377

25/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7150 - loss: 0.7295

27/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7095 - loss: 0.7332

29/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7107 - loss: 0.7290

32/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7095 - loss: 0.7323

35/79 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - accuracy: 0.7103 - loss: 0.7288

38/79 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - accuracy: 0.7093 - loss: 0.7287

41/79 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.7111 - loss: 0.7258

44/79 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.7127 - loss: 0.7223

47/79 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.7148 - loss: 0.7182

49/79 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.7143 - loss: 0.7202

51/79 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.7117 - loss: 0.7270

54/79 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.7135 - loss: 0.7247

57/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7149 - loss: 0.7194

60/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7154 - loss: 0.7226

62/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7157 - loss: 0.7213

65/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7171 - loss: 0.7174

68/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7181 - loss: 0.7160

70/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7183 - loss: 0.7160

73/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7198 - loss: 0.7139

75/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7198 - loss: 0.7141

78/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7206 - loss: 0.7135

79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 29ms/step - accuracy: 0.7206 - loss: 0.7133 - val_accuracy: 0.7160 - val_loss: 0.6976

Epoch 4/6


 1/79 ━━━━━━━━━━━━━━━━━━━━ 5s 75ms/step - accuracy: 0.7344 - loss: 0.7239

 3/79 ━━━━━━━━━━━━━━━━━━━━ 2s 33ms/step - accuracy: 0.7760 - loss: 0.6802

 5/79 ━━━━━━━━━━━━━━━━━━━━ 2s 33ms/step - accuracy: 0.7281 - loss: 0.7246

 7/79 ━━━━━━━━━━━━━━━━━━━━ 2s 33ms/step - accuracy: 0.7009 - loss: 0.7481

 9/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7170 - loss: 0.7173

11/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7301 - loss: 0.6995

13/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7308 - loss: 0.7058

15/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7375 - loss: 0.6925

17/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7353 - loss: 0.6937

19/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7311 - loss: 0.6913

22/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7308 - loss: 0.6873

24/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7331 - loss: 0.6869

26/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7320 - loss: 0.6841

28/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7282 - loss: 0.6890

30/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7312 - loss: 0.6782

32/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7310 - loss: 0.6771

34/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7316 - loss: 0.6761

36/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7348 - loss: 0.6710

38/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7373 - loss: 0.6699

40/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7367 - loss: 0.6674

42/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7377 - loss: 0.6648

44/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7372 - loss: 0.6666

46/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.7371 - loss: 0.6701

48/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.7370 - loss: 0.6700

50/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.7344 - loss: 0.6747

52/79 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - accuracy: 0.7347 - loss: 0.6760

55/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7358 - loss: 0.6722

58/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7373 - loss: 0.6693

61/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7359 - loss: 0.6705

63/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7383 - loss: 0.6658

65/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7380 - loss: 0.6648

67/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7367 - loss: 0.6658

70/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7373 - loss: 0.6641

72/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7374 - loss: 0.6626

74/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7378 - loss: 0.6633

76/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7393 - loss: 0.6610

78/79 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - accuracy: 0.7384 - loss: 0.6623

79/79 ━━━━━━━━━━━━━━━━━━━━ 3s 32ms/step - accuracy: 0.7384 - loss: 0.6619 - val_accuracy: 0.7340 - val_loss: 0.6482

Epoch 5/6


 1/79 ━━━━━━━━━━━━━━━━━━━━ 6s 83ms/step - accuracy: 0.7656 - loss: 0.5658

 3/79 ━━━━━━━━━━━━━━━━━━━━ 2s 39ms/step - accuracy: 0.8021 - loss: 0.5971

 5/79 ━━━━━━━━━━━━━━━━━━━━ 2s 36ms/step - accuracy: 0.7625 - loss: 0.6597

 7/79 ━━━━━━━━━━━━━━━━━━━━ 2s 34ms/step - accuracy: 0.7366 - loss: 0.6929

 9/79 ━━━━━━━━━━━━━━━━━━━━ 2s 33ms/step - accuracy: 0.7413 - loss: 0.6696

11/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7528 - loss: 0.6518

13/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7488 - loss: 0.6523

15/79 ━━━━━━━━━━━━━━━━━━━━ 2s 32ms/step - accuracy: 0.7521 - loss: 0.6426

17/79 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.7491 - loss: 0.6494

19/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7533 - loss: 0.6401

21/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7507 - loss: 0.6397

23/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7514 - loss: 0.6384

25/79 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7519 - loss: 0.6360

27/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7494 - loss: 0.6374

29/79 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.7489 - loss: 0.6362

32/79 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - accuracy: 0.7490 - loss: 0.6333

35/79 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - accuracy: 0.7513 - loss: 0.6308

37/79 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - accuracy: 0.7525 - loss: 0.6264

39/79 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - accuracy: 0.7544 - loss: 0.6223

41/79 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - accuracy: 0.7553 - loss: 0.6162

44/79 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - accuracy: 0.7564 - loss: 0.6145

47/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7573 - loss: 0.6116

50/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7531 - loss: 0.6151

53/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7521 - loss: 0.6180

56/79 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - accuracy: 0.7536 - loss: 0.6129

59/79 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - accuracy: 0.7542 - loss: 0.6127

61/79 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - accuracy: 0.7544 - loss: 0.6121

63/79 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - accuracy: 0.7572 - loss: 0.6075

65/79 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - accuracy: 0.7584 - loss: 0.6062

67/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7596 - loss: 0.6049

69/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7604 - loss: 0.6026

71/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7592 - loss: 0.6038

73/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7603 - loss: 0.6025

75/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7606 - loss: 0.6024

77/79 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - accuracy: 0.7608 - loss: 0.6034

79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 30ms/step - accuracy: 0.7612 - loss: 0.6025 - val_accuracy: 0.7510 - val_loss: 0.6259

Epoch 6/6


 1/79 ━━━━━━━━━━━━━━━━━━━━ 5s 70ms/step - accuracy: 0.8438 - loss: 0.4745

 3/79 ━━━━━━━━━━━━━━━━━━━━ 2s 27ms/step - accuracy: 0.8125 - loss: 0.5425

 6/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7786 - loss: 0.6035

 8/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7578 - loss: 0.6156

10/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7625 - loss: 0.5988

12/79 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - accuracy: 0.7708 - loss: 0.5826

15/79 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - accuracy: 0.7771 - loss: 0.5731

18/79 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - accuracy: 0.7760 - loss: 0.5796

21/79 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7731 - loss: 0.5824

24/79 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7760 - loss: 0.5769

27/79 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7755 - loss: 0.5778

30/79 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7781 - loss: 0.5733

32/79 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7773 - loss: 0.5754

35/79 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7781 - loss: 0.5709

38/79 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.7800 - loss: 0.5706

41/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7839 - loss: 0.5637

44/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7820 - loss: 0.5643

47/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7793 - loss: 0.5685

50/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7728 - loss: 0.5756

53/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7712 - loss: 0.5786

56/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7732 - loss: 0.5765

59/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7738 - loss: 0.5770

62/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7734 - loss: 0.5794

65/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7743 - loss: 0.5763

68/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7746 - loss: 0.5754

70/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7743 - loss: 0.5761

72/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7763 - loss: 0.5741

74/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7760 - loss: 0.5745

76/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7767 - loss: 0.5725

78/79 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - accuracy: 0.7752 - loss: 0.5738

79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 27ms/step - accuracy: 0.7752 - loss: 0.5736 - val_accuracy: 0.7630 - val_loss: 0.6156

7. Informe del baseline de empaques

No nos quedamos en el print de fit. Extraemos mejor época, gaps y el reporte por SKU en test.

fila_qc = diagnostico_entrenamiento(hist_qc, "CNN empaques")
curvas_entrenamiento(hist_qc, "CNN empaques (CIFAR-4)")
te_loss, te_acc = modelo_qc.evaluate(x_te, y_te, verbose=0)
print(f"TEST  loss={te_loss:.4f}  acc={te_acc:.4f}")
print(f"Azar = 0.25 | mejora absoluta vs azar = {te_acc - 0.25:+.4f}")
probs_qc = modelo_qc.predict(x_te, verbose=0)
pred_qc = probs_qc.argmax(1)
informe_clasificacion(y_te, pred_qc, SKU, "Reporte TEST — proxy empaques")
modelo                  CNN empaques
epocas_corridas                    6
mejor_epoca_val_loss               6
min_val_loss                0.615559
val_loss_final              0.615559
train_loss_en_mejor         0.573639
train_loss_final            0.573639
delta_val_tras_mejor             0.0
gap_loss_mejor               0.04192
gap_loss_final               0.04192
train_acc_mejor               0.7752
val_acc_mejor                  0.763
train_acc_final               0.7752
val_acc_final                  0.763
gap_acc_mejor                 0.0122
gap_acc_final                 0.0122

LECTURA
La mejor val_loss coincide con la última época: no hay tramo posterior de deterioro.

TEST  loss=0.6253  acc=0.7585
Azar = 0.25 | mejora absoluta vs azar = +0.5085
Reporte TEST — proxy empaques
              precision    recall  f1-score   support

       avion     0.6884    0.8648    0.7666       488
        auto     0.8250    0.9444    0.8807       504
         ave     0.8306    0.4980    0.6227       512
        gato     0.7237    0.7339    0.7287       496

    accuracy                         0.7585      2000
   macro avg     0.7669    0.7603    0.7497      2000
weighted avg     0.7680    0.7585    0.7491      2000

Clases ordenadas por F1 (las de abajo son las más débiles):
clase  precision  recall     f1  soporte
  ave     0.8306  0.4980 0.6227      512
 gato     0.7237  0.7339 0.7287      496
avion     0.6884  0.8648 0.7666      488
 auto     0.8250  0.9444 0.8807      504
clase precision recall f1 soporte
2 ave 0.830619 0.498047 0.622711 512
3 gato 0.723658 0.733871 0.728729 496
0 avion 0.688418 0.864754 0.766576 488
1 auto 0.824957 0.944444 0.880666 504
_ = matriz_y_errores(y_te, pred_qc, SKU, x_te, probs_qc, k=8)

Interpretación

Si «ave» y «gato» concentran el F1 bajo, el accuracy global no describe la cinta: esas dos clases se parecen más en 32×32 que avión y auto. Un umbral de rechazo (softmax baja) sería la siguiente palanca operativa, no «añadir capas» por instinto.

Compare val_acc de la mejor época con test_acc. Un salto grande entre ellas es la primera amenaza: la validación no representó al test o el recorte es pequeño.

8. Qué se transfiere (y qué no)

Se transfiere una función ((x)) —mapas de características— no la etiqueta de ImageNet. La cabeza de 1000 clases se descarta (include_top=False). Lo que se conserva es el tronco que ya sabe responder a bordes, texturas y partes de objeto.

No se transfiere: - el significado de «gato» de ImageNet a «SKU-gato» de planta, - la calibración de la softmax, - la robustez a otra cámara o a otro ISO.

Idea clave

Transferir es inicializar con una hipótesis visual. El experimento decide si esa hipótesis es pertinente para estas fotos.

9. Caso B — Inventario botánico (TensorFlow Flowers)

Segundo dominio, más cercano a un producto real: cinco especies fotografiadas en exterior. Aquí sí cargamos MobileNetV2 con pesos ImageNet. La primera vez hay descarga; después queda en caché.

Tres estrategias, mismo split y mismo Early Stopping:

Modelo Idea Qué se entrena
A CNN desde cero todo
B Feature extraction solo la cabeza
C Fine-tuning parcial cabeza + últimos bloques
import pathlib
from sklearn.model_selection import train_test_split

IMG_SIZE = 128
BATCH = 32
EPOCHS_A, EPOCHS_B, EPOCHS_C = 6, 5, 4
LR_HEAD, LR_FT = 1e-3, 1e-5
N_UNFREEZE = 30

url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_root = pathlib.Path(tf.keras.utils.get_file("flower_photos", url, untar=True))
if not (data_root / "daisy").exists() and (data_root / "flower_photos").exists():
    data_root = data_root / "flower_photos"

clases = sorted([p.name for p in data_root.iterdir() if p.is_dir()])
rutas, y_f = [], []
for i, c in enumerate(clases):
    files = list((data_root / c).glob("*"))
    rutas.extend(files)
    y_f.extend([i] * len(files))
rutas = np.array([str(p) for p in rutas])
y_f = np.array(y_f)
print("Clases:", clases)
print(pd.Series(y_f).value_counts().sort_index().to_string())
Clases: ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips']
0    633
1    898
2    641
3    699
4    799

Interpretación del recuento

Si una especie tiene muchas más fotos, el accuracy puede «ganarse» acertando esa clase. El classification_report (macro F1) es el correctivo. Anote el soporte antes de entrenar; no después de ver el número que le gusta.

r_tr, r_te, ytr_f, yte_f = train_test_split(rutas, y_f, test_size=0.20, stratify=y_f, random_state=SEED)
r_tr, r_va, ytr_f, yva_f = train_test_split(r_tr, ytr_f, test_size=0.20, stratify=ytr_f, random_state=SEED)
print("n train/val/test:", len(r_tr), len(r_va), len(r_te))


def decode(path, label, para_mobilenet=False):
    img = tf.io.read_file(path)
    img = tf.image.decode_jpeg(img, channels=3)
    img = tf.image.resize(img, [IMG_SIZE, IMG_SIZE])
    if para_mobilenet:
        img = tf.cast(img, tf.float32)  # 0..255; preprocess_input va en el modelo
    else:
        img = tf.cast(img, tf.float32) / 255.0
    return img, label


def make_ds(paths, labels, shuffle, para_mobilenet):
    ds = tf.data.Dataset.from_tensor_slices((paths, labels))
    if shuffle:
        ds = ds.shuffle(len(paths), seed=SEED)
    ds = ds.map(lambda p, y: decode(p, y, para_mobilenet), num_parallel_calls=tf.data.AUTOTUNE)
    return ds.batch(BATCH).prefetch(tf.data.AUTOTUNE)

# A usa /255 en el pipeline; B y C dejan 0..255 y MobileNet normaliza dentro
train_a, val_a, test_a = make_ds(r_tr, ytr_f, True, False), make_ds(r_va, yva_f, False, False), make_ds(r_te, yte_f, False, False)
train_m, val_m, test_m = make_ds(r_tr, ytr_f, True, True), make_ds(r_va, yva_f, False, True), make_ds(r_te, yte_f, False, True)
n train/val/test: 2348 588 734
# Una bandeja de inspección (uint8 visual)
vis = list(zip(r_tr[:8], ytr_f[:8]))
fig, axes = plt.subplots(2, 4, figsize=(10, 5))
for ax, (p, y) in zip(axes.ravel(), vis):
    ax.imshow(tf.image.decode_jpeg(tf.io.read_file(p), channels=3))
    ax.set_title(clases[int(y)], fontsize=8)
    ax.axis("off")
plt.suptitle("Muestra Flowers (dominio real de fotografías de producto natural)")
plt.tight_layout()
plt.show()

10. Modelo A — CNN desde cero en Flowers

Misma pregunta que en empaques, otro dominio: ¿este conjunto basta para aprender representaciones útiles sin ImageNet?

def cnn_flores(n):
    m = tf.keras.Sequential([
        tf.keras.layers.Input((IMG_SIZE, IMG_SIZE, 3)),
        tf.keras.layers.Conv2D(32, 3, activation="relu", padding="same"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Conv2D(64, 3, activation="relu", padding="same"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Conv2D(64, 3, activation="relu", padding="same"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.GlobalAveragePooling2D(),
        tf.keras.layers.Dense(128, activation="relu"),
        tf.keras.layers.Dropout(0.3),
        tf.keras.layers.Dense(n, activation="softmax"),
    ], name="cnn_scratch")
    m.compile(optimizer=tf.keras.optimizers.Adam(LR_HEAD),
              loss="sparse_categorical_crossentropy", metrics=["accuracy"])
    return m

modelo_a = cnn_flores(len(clases))
print("params A", modelo_a.count_params())
es = tf.keras.callbacks.EarlyStopping(monitor="val_loss", patience=3, restore_best_weights=True)
t0 = time.perf_counter()
hist_a = modelo_a.fit(train_a, validation_data=val_a, epochs=EPOCHS_A, callbacks=[es], verbose=1)
tiempo_a = time.perf_counter() - t0
print(f"Tiempo A: {tiempo_a:.1f}s")
params A 65285
Epoch 1/6
C:\Users\wilde\.conda\envs\ANALITICA\Lib\site-packages\keras\src\trainers\epoch_iterator.py:74: UserWarning: `shuffle=True` was passed, but will be ignored since the data `x` was provided as a tf.data.Dataset. The Dataset is expected to already be shuffled (via `.shuffle(buffer_size)`).
  self.data_adapter = data_adapters.get_data_adapter(
 1/74 ━━━━━━━━━━━━━━━━━━━━ 3:27 3s/step - accuracy: 0.1562 - loss: 1.6148

 2/74 ━━━━━━━━━━━━━━━━━━━━ 15s 212ms/step - accuracy: 0.2188 - loss: 1.6094

 3/74 ━━━━━━━━━━━━━━━━━━━━ 14s 211ms/step - accuracy: 0.1771 - loss: 1.6113

 4/74 ━━━━━━━━━━━━━━━━━━━━ 14s 202ms/step - accuracy: 0.1953 - loss: 1.6077

 5/74 ━━━━━━━━━━━━━━━━━━━━ 13s 199ms/step - accuracy: 0.1813 - loss: 1.6161

 6/74 ━━━━━━━━━━━━━━━━━━━━ 13s 202ms/step - accuracy: 0.1823 - loss: 1.6140

 7/74 ━━━━━━━━━━━━━━━━━━━━ 13s 207ms/step - accuracy: 0.1741 - loss: 1.6134

 8/74 ━━━━━━━━━━━━━━━━━━━━ 13s 205ms/step - accuracy: 0.1875 - loss: 1.6134

 9/74 ━━━━━━━━━━━━━━━━━━━━ 13s 204ms/step - accuracy: 0.1910 - loss: 1.6115

10/74 ━━━━━━━━━━━━━━━━━━━━ 13s 203ms/step - accuracy: 0.2000 - loss: 1.6103

11/74 ━━━━━━━━━━━━━━━━━━━━ 12s 203ms/step - accuracy: 0.1989 - loss: 1.6107

12/74 ━━━━━━━━━━━━━━━━━━━━ 12s 202ms/step - accuracy: 0.2083 - loss: 1.6094

13/74 ━━━━━━━━━━━━━━━━━━━━ 12s 202ms/step - accuracy: 0.2067 - loss: 1.6087

14/74 ━━━━━━━━━━━━━━━━━━━━ 12s 201ms/step - accuracy: 0.2054 - loss: 1.6085

15/74 ━━━━━━━━━━━━━━━━━━━━ 11s 201ms/step - accuracy: 0.2104 - loss: 1.6081

16/74 ━━━━━━━━━━━━━━━━━━━━ 11s 201ms/step - accuracy: 0.2227 - loss: 1.6065

17/74 ━━━━━━━━━━━━━━━━━━━━ 11s 200ms/step - accuracy: 0.2279 - loss: 1.6052

18/74 ━━━━━━━━━━━━━━━━━━━━ 11s 199ms/step - accuracy: 0.2378 - loss: 1.6039

19/74 ━━━━━━━━━━━━━━━━━━━━ 10s 199ms/step - accuracy: 0.2336 - loss: 1.6056

20/74 ━━━━━━━━━━━━━━━━━━━━ 10s 199ms/step - accuracy: 0.2344 - loss: 1.6036

21/74 ━━━━━━━━━━━━━━━━━━━━ 10s 198ms/step - accuracy: 0.2381 - loss: 1.6010

22/74 ━━━━━━━━━━━━━━━━━━━━ 10s 198ms/step - accuracy: 0.2372 - loss: 1.6002

23/74 ━━━━━━━━━━━━━━━━━━━━ 10s 198ms/step - accuracy: 0.2378 - loss: 1.5996

24/74 ━━━━━━━━━━━━━━━━━━━━ 9s 198ms/step - accuracy: 0.2409 - loss: 1.5982 

25/74 ━━━━━━━━━━━━━━━━━━━━ 9s 198ms/step - accuracy: 0.2375 - loss: 1.5981

26/74 ━━━━━━━━━━━━━━━━━━━━ 9s 199ms/step - accuracy: 0.2344 - loss: 1.5982

27/74 ━━━━━━━━━━━━━━━━━━━━ 9s 199ms/step - accuracy: 0.2384 - loss: 1.5953

28/74 ━━━━━━━━━━━━━━━━━━━━ 9s 198ms/step - accuracy: 0.2388 - loss: 1.5948

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 198ms/step - accuracy: 0.2349 - loss: 1.5963

30/74 ━━━━━━━━━━━━━━━━━━━━ 8s 198ms/step - accuracy: 0.2344 - loss: 1.5969

31/74 ━━━━━━━━━━━━━━━━━━━━ 8s 198ms/step - accuracy: 0.2359 - loss: 1.5959

32/74 ━━━━━━━━━━━━━━━━━━━━ 8s 198ms/step - accuracy: 0.2363 - loss: 1.5947

33/74 ━━━━━━━━━━━━━━━━━━━━ 8s 198ms/step - accuracy: 0.2396 - loss: 1.5925

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 198ms/step - accuracy: 0.2417 - loss: 1.5912

35/74 ━━━━━━━━━━━━━━━━━━━━ 7s 197ms/step - accuracy: 0.2455 - loss: 1.5893

36/74 ━━━━━━━━━━━━━━━━━━━━ 7s 197ms/step - accuracy: 0.2465 - loss: 1.5904

37/74 ━━━━━━━━━━━━━━━━━━━━ 7s 197ms/step - accuracy: 0.2483 - loss: 1.5893

38/74 ━━━━━━━━━━━━━━━━━━━━ 7s 197ms/step - accuracy: 0.2533 - loss: 1.5868

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 197ms/step - accuracy: 0.2564 - loss: 1.5839

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 197ms/step - accuracy: 0.2555 - loss: 1.5834

41/74 ━━━━━━━━━━━━━━━━━━━━ 6s 197ms/step - accuracy: 0.2576 - loss: 1.5823

42/74 ━━━━━━━━━━━━━━━━━━━━ 6s 197ms/step - accuracy: 0.2597 - loss: 1.5798

43/74 ━━━━━━━━━━━━━━━━━━━━ 6s 196ms/step - accuracy: 0.2638 - loss: 1.5779

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 196ms/step - accuracy: 0.2649 - loss: 1.5777

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 197ms/step - accuracy: 0.2667 - loss: 1.5777

46/74 ━━━━━━━━━━━━━━━━━━━━ 5s 196ms/step - accuracy: 0.2704 - loss: 1.5738

47/74 ━━━━━━━━━━━━━━━━━━━━ 5s 196ms/step - accuracy: 0.2699 - loss: 1.5734

48/74 ━━━━━━━━━━━━━━━━━━━━ 5s 196ms/step - accuracy: 0.2734 - loss: 1.5720

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 197ms/step - accuracy: 0.2749 - loss: 1.5710

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 196ms/step - accuracy: 0.2725 - loss: 1.5706

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 196ms/step - accuracy: 0.2745 - loss: 1.5706

52/74 ━━━━━━━━━━━━━━━━━━━━ 4s 196ms/step - accuracy: 0.2722 - loss: 1.5707

53/74 ━━━━━━━━━━━━━━━━━━━━ 4s 196ms/step - accuracy: 0.2706 - loss: 1.5710

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 196ms/step - accuracy: 0.2703 - loss: 1.5707

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 196ms/step - accuracy: 0.2727 - loss: 1.5682

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 196ms/step - accuracy: 0.2757 - loss: 1.5648

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 196ms/step - accuracy: 0.2774 - loss: 1.5632

58/74 ━━━━━━━━━━━━━━━━━━━━ 3s 196ms/step - accuracy: 0.2780 - loss: 1.5621

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.2807 - loss: 1.5607

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 197ms/step - accuracy: 0.2839 - loss: 1.5570

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 197ms/step - accuracy: 0.2848 - loss: 1.5553

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.2873 - loss: 1.5515

63/74 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.2897 - loss: 1.5465

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.2915 - loss: 1.5443

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.2909 - loss: 1.5436

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.2940 - loss: 1.5401

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.2934 - loss: 1.5393

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.2937 - loss: 1.5379

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 195ms/step - accuracy: 0.2939 - loss: 1.5345

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 195ms/step - accuracy: 0.2982 - loss: 1.5292

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 194ms/step - accuracy: 0.3002 - loss: 1.5267

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 194ms/step - accuracy: 0.3025 - loss: 1.5237

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3044 - loss: 1.5203

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 192ms/step - accuracy: 0.3032 - loss: 1.5200

74/74 ━━━━━━━━━━━━━━━━━━━━ 19s 218ms/step - accuracy: 0.3032 - loss: 1.5200 - val_accuracy: 0.3793 - val_loss: 1.3251

Epoch 2/6


 1/74 ━━━━━━━━━━━━━━━━━━━━ 21s 289ms/step - accuracy: 0.3438 - loss: 1.3328

 2/74 ━━━━━━━━━━━━━━━━━━━━ 12s 176ms/step - accuracy: 0.3750 - loss: 1.3539

 3/74 ━━━━━━━━━━━━━━━━━━━━ 12s 177ms/step - accuracy: 0.3438 - loss: 1.3703

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 174ms/step - accuracy: 0.3438 - loss: 1.3376

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 175ms/step - accuracy: 0.3500 - loss: 1.3372

 6/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.3750 - loss: 1.3085

 7/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.3929 - loss: 1.2949

 8/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.3906 - loss: 1.2940

 9/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.3924 - loss: 1.2856

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.3969 - loss: 1.2852

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 175ms/step - accuracy: 0.4119 - loss: 1.2877

12/74 ━━━━━━━━━━━━━━━━━━━━ 10s 175ms/step - accuracy: 0.4036 - loss: 1.2976

13/74 ━━━━━━━━━━━━━━━━━━━━ 10s 175ms/step - accuracy: 0.3942 - loss: 1.3033

14/74 ━━━━━━━━━━━━━━━━━━━━ 10s 176ms/step - accuracy: 0.3996 - loss: 1.3010

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 175ms/step - accuracy: 0.4083 - loss: 1.3001

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 175ms/step - accuracy: 0.4180 - loss: 1.2854

17/74 ━━━━━━━━━━━━━━━━━━━━ 9s 175ms/step - accuracy: 0.4246 - loss: 1.2832 

18/74 ━━━━━━━━━━━━━━━━━━━━ 9s 175ms/step - accuracy: 0.4201 - loss: 1.2867

19/74 ━━━━━━━━━━━━━━━━━━━━ 9s 174ms/step - accuracy: 0.4112 - loss: 1.2934

20/74 ━━━━━━━━━━━━━━━━━━━━ 9s 174ms/step - accuracy: 0.4125 - loss: 1.2929

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 174ms/step - accuracy: 0.4167 - loss: 1.2911

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 174ms/step - accuracy: 0.4119 - loss: 1.2967

23/74 ━━━━━━━━━━━━━━━━━━━━ 8s 174ms/step - accuracy: 0.4158 - loss: 1.2916

24/74 ━━━━━━━━━━━━━━━━━━━━ 8s 174ms/step - accuracy: 0.4089 - loss: 1.2940

25/74 ━━━━━━━━━━━━━━━━━━━━ 8s 173ms/step - accuracy: 0.4062 - loss: 1.2926

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 173ms/step - accuracy: 0.4111 - loss: 1.2880

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 173ms/step - accuracy: 0.4097 - loss: 1.2847

28/74 ━━━━━━━━━━━━━━━━━━━━ 7s 173ms/step - accuracy: 0.4107 - loss: 1.2860

29/74 ━━━━━━━━━━━━━━━━━━━━ 7s 173ms/step - accuracy: 0.4095 - loss: 1.2811

30/74 ━━━━━━━━━━━━━━━━━━━━ 7s 173ms/step - accuracy: 0.4083 - loss: 1.2824

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 173ms/step - accuracy: 0.4113 - loss: 1.2811

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 173ms/step - accuracy: 0.4131 - loss: 1.2825

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 175ms/step - accuracy: 0.4167 - loss: 1.2756

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 176ms/step - accuracy: 0.4164 - loss: 1.2775

35/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4179 - loss: 1.2769

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4167 - loss: 1.2841

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4181 - loss: 1.2854

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4186 - loss: 1.2884

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4215 - loss: 1.2869

40/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4234 - loss: 1.2829

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4253 - loss: 1.2810

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4256 - loss: 1.2779

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4251 - loss: 1.2775

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4283 - loss: 1.2755

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4271 - loss: 1.2744

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 175ms/step - accuracy: 0.4280 - loss: 1.2744

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 175ms/step - accuracy: 0.4282 - loss: 1.2756

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.4264 - loss: 1.2780

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.4235 - loss: 1.2775

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.4263 - loss: 1.2752

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.4259 - loss: 1.2759

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4291 - loss: 1.2762

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4298 - loss: 1.2726

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4288 - loss: 1.2746

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4313 - loss: 1.2732

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4336 - loss: 1.2707

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4309 - loss: 1.2708

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4294 - loss: 1.2744

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4311 - loss: 1.2725

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4313 - loss: 1.2732

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4329 - loss: 1.2695

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4350 - loss: 1.2665

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4345 - loss: 1.2703

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4346 - loss: 1.2701

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4346 - loss: 1.2680

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4361 - loss: 1.2658

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4384 - loss: 1.2621

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 178ms/step - accuracy: 0.4398 - loss: 1.2619

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.4411 - loss: 1.2616

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.4411 - loss: 1.2619

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.4410 - loss: 1.2608

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.4427 - loss: 1.2598

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.4443 - loss: 1.2566

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 175ms/step - accuracy: 0.4442 - loss: 1.2570

74/74 ━━━━━━━━━━━━━━━━━━━━ 14s 191ms/step - accuracy: 0.4442 - loss: 1.2570 - val_accuracy: 0.4745 - val_loss: 1.2175

Epoch 3/6


 1/74 ━━━━━━━━━━━━━━━━━━━━ 18s 247ms/step - accuracy: 0.3750 - loss: 1.2111

 2/74 ━━━━━━━━━━━━━━━━━━━━ 13s 191ms/step - accuracy: 0.4375 - loss: 1.1643

 3/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.4167 - loss: 1.3087

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 178ms/step - accuracy: 0.4062 - loss: 1.3070

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 177ms/step - accuracy: 0.4250 - loss: 1.2769

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 177ms/step - accuracy: 0.4323 - loss: 1.2936

 7/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.4420 - loss: 1.3056

 8/74 ━━━━━━━━━━━━━━━━━━━━ 11s 175ms/step - accuracy: 0.4531 - loss: 1.2645

 9/74 ━━━━━━━━━━━━━━━━━━━━ 11s 175ms/step - accuracy: 0.4514 - loss: 1.2479

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 177ms/step - accuracy: 0.4594 - loss: 1.2297

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.4489 - loss: 1.2356

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 181ms/step - accuracy: 0.4531 - loss: 1.2411

13/74 ━━━━━━━━━━━━━━━━━━━━ 11s 181ms/step - accuracy: 0.4519 - loss: 1.2342

14/74 ━━━━━━━━━━━━━━━━━━━━ 10s 180ms/step - accuracy: 0.4576 - loss: 1.2196

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 179ms/step - accuracy: 0.4625 - loss: 1.2130

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 179ms/step - accuracy: 0.4707 - loss: 1.2042

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 178ms/step - accuracy: 0.4577 - loss: 1.2052

18/74 ━━━━━━━━━━━━━━━━━━━━ 9s 178ms/step - accuracy: 0.4618 - loss: 1.2129 

19/74 ━━━━━━━━━━━━━━━━━━━━ 9s 178ms/step - accuracy: 0.4671 - loss: 1.2110

20/74 ━━━━━━━━━━━━━━━━━━━━ 9s 178ms/step - accuracy: 0.4688 - loss: 1.2027

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 177ms/step - accuracy: 0.4717 - loss: 1.2002

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 177ms/step - accuracy: 0.4773 - loss: 1.1932

23/74 ━━━━━━━━━━━━━━━━━━━━ 8s 176ms/step - accuracy: 0.4715 - loss: 1.1984

24/74 ━━━━━━━━━━━━━━━━━━━━ 8s 176ms/step - accuracy: 0.4740 - loss: 1.1960

25/74 ━━━━━━━━━━━━━━━━━━━━ 8s 176ms/step - accuracy: 0.4750 - loss: 1.1966

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 176ms/step - accuracy: 0.4772 - loss: 1.1969

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 175ms/step - accuracy: 0.4734 - loss: 1.2037

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 175ms/step - accuracy: 0.4732 - loss: 1.2046

29/74 ━━━━━━━━━━━━━━━━━━━━ 7s 175ms/step - accuracy: 0.4698 - loss: 1.2076

30/74 ━━━━━━━━━━━━━━━━━━━━ 7s 175ms/step - accuracy: 0.4646 - loss: 1.2202

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 176ms/step - accuracy: 0.4677 - loss: 1.2176

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 176ms/step - accuracy: 0.4688 - loss: 1.2169

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 176ms/step - accuracy: 0.4659 - loss: 1.2186

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 176ms/step - accuracy: 0.4688 - loss: 1.2122

35/74 ━━━━━━━━━━━━━━━━━━━━ 6s 176ms/step - accuracy: 0.4688 - loss: 1.2166

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 176ms/step - accuracy: 0.4740 - loss: 1.2123

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4730 - loss: 1.2133

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 175ms/step - accuracy: 0.4753 - loss: 1.2091

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 176ms/step - accuracy: 0.4768 - loss: 1.2085

40/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4766 - loss: 1.2087

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4787 - loss: 1.2082

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4836 - loss: 1.2042

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4833 - loss: 1.2070

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 175ms/step - accuracy: 0.4822 - loss: 1.2105

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 176ms/step - accuracy: 0.4854 - loss: 1.2075

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.4857 - loss: 1.2063

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.4874 - loss: 1.2055

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.4850 - loss: 1.2036

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.4841 - loss: 1.2013

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.4812 - loss: 1.2064

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.4779 - loss: 1.2077

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 176ms/step - accuracy: 0.4784 - loss: 1.2076

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4794 - loss: 1.2052

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4792 - loss: 1.2038

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4790 - loss: 1.2035

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4799 - loss: 1.2059

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4814 - loss: 1.2060

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4838 - loss: 1.2020

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4836 - loss: 1.2015

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4854 - loss: 1.1986

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4841 - loss: 1.1978

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.4839 - loss: 1.2018

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4826 - loss: 1.2019

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4844 - loss: 1.2008

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4856 - loss: 1.1988

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4867 - loss: 1.1982

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4874 - loss: 1.1961

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.4885 - loss: 1.1936

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.4891 - loss: 1.1927

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.4911 - loss: 1.1910

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.4908 - loss: 1.1911

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.4918 - loss: 1.1906

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.4889 - loss: 1.1930

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 176ms/step - accuracy: 0.4889 - loss: 1.1928

74/74 ━━━━━━━━━━━━━━━━━━━━ 14s 192ms/step - accuracy: 0.4889 - loss: 1.1928 - val_accuracy: 0.5357 - val_loss: 1.1365

Epoch 4/6


 1/74 ━━━━━━━━━━━━━━━━━━━━ 20s 282ms/step - accuracy: 0.5312 - loss: 1.1230

 2/74 ━━━━━━━━━━━━━━━━━━━━ 13s 187ms/step - accuracy: 0.5000 - loss: 1.1028

 3/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.4896 - loss: 1.1675

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 177ms/step - accuracy: 0.5000 - loss: 1.1578

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 176ms/step - accuracy: 0.5063 - loss: 1.1492

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 179ms/step - accuracy: 0.5156 - loss: 1.1491

 7/74 ━━━━━━━━━━━━━━━━━━━━ 11s 178ms/step - accuracy: 0.5179 - loss: 1.1521

 8/74 ━━━━━━━━━━━━━━━━━━━━ 12s 183ms/step - accuracy: 0.5273 - loss: 1.1536

 9/74 ━━━━━━━━━━━━━━━━━━━━ 12s 186ms/step - accuracy: 0.5278 - loss: 1.1504

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 185ms/step - accuracy: 0.5063 - loss: 1.1743

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 184ms/step - accuracy: 0.5114 - loss: 1.1659

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 183ms/step - accuracy: 0.5182 - loss: 1.1487

13/74 ━━━━━━━━━━━━━━━━━━━━ 11s 183ms/step - accuracy: 0.5288 - loss: 1.1343

14/74 ━━━━━━━━━━━━━━━━━━━━ 10s 182ms/step - accuracy: 0.5312 - loss: 1.1379

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 182ms/step - accuracy: 0.5396 - loss: 1.1354

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.5391 - loss: 1.1354

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.5441 - loss: 1.1270

18/74 ━━━━━━━━━━━━━━━━━━━━ 10s 180ms/step - accuracy: 0.5434 - loss: 1.1199

19/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.5428 - loss: 1.1188 

20/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.5406 - loss: 1.1153

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.5387 - loss: 1.1110

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.5369 - loss: 1.1110

23/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.5312 - loss: 1.1138

24/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.5326 - loss: 1.1164

25/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.5288 - loss: 1.1186

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.5288 - loss: 1.1173

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 178ms/step - accuracy: 0.5266 - loss: 1.1163

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.5312 - loss: 1.1153

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 178ms/step - accuracy: 0.5291 - loss: 1.1209

30/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5323 - loss: 1.1145

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5312 - loss: 1.1116

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5312 - loss: 1.1121

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5322 - loss: 1.1098

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5294 - loss: 1.1129

35/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5295 - loss: 1.1189

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5286 - loss: 1.1174

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 177ms/step - accuracy: 0.5262 - loss: 1.1155

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 177ms/step - accuracy: 0.5206 - loss: 1.1250

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 177ms/step - accuracy: 0.5216 - loss: 1.1232

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 177ms/step - accuracy: 0.5258 - loss: 1.1171

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.5290 - loss: 1.1136

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.5305 - loss: 1.1157

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.5291 - loss: 1.1213

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.5277 - loss: 1.1252

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.5257 - loss: 1.1283

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.5245 - loss: 1.1283

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5259 - loss: 1.1254

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5247 - loss: 1.1272

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5223 - loss: 1.1284

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5219 - loss: 1.1278

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5202 - loss: 1.1289

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 178ms/step - accuracy: 0.5192 - loss: 1.1308

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 178ms/step - accuracy: 0.5218 - loss: 1.1276

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5208 - loss: 1.1266

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5199 - loss: 1.1310

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5218 - loss: 1.1290

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5219 - loss: 1.1289

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 178ms/step - accuracy: 0.5248 - loss: 1.1279

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5249 - loss: 1.1279

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5240 - loss: 1.1284

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5251 - loss: 1.1256

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5267 - loss: 1.1232

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 179ms/step - accuracy: 0.5263 - loss: 1.1234

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 178ms/step - accuracy: 0.5259 - loss: 1.1248

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 178ms/step - accuracy: 0.5274 - loss: 1.1231

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 179ms/step - accuracy: 0.5284 - loss: 1.1203

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 178ms/step - accuracy: 0.5271 - loss: 1.1263

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 178ms/step - accuracy: 0.5280 - loss: 1.1220

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.5258 - loss: 1.1246

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.5250 - loss: 1.1251

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.5246 - loss: 1.1255

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.5273 - loss: 1.1226

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.5265 - loss: 1.1227

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 176ms/step - accuracy: 0.5268 - loss: 1.1224

74/74 ━━━━━━━━━━━━━━━━━━━━ 14s 194ms/step - accuracy: 0.5268 - loss: 1.1224 - val_accuracy: 0.5527 - val_loss: 1.0977

Epoch 5/6


 1/74 ━━━━━━━━━━━━━━━━━━━━ 14s 199ms/step - accuracy: 0.4375 - loss: 1.3823

 2/74 ━━━━━━━━━━━━━━━━━━━━ 9s 135ms/step - accuracy: 0.4844 - loss: 1.2911 

 3/74 ━━━━━━━━━━━━━━━━━━━━ 9s 137ms/step - accuracy: 0.5312 - loss: 1.1960

 4/74 ━━━━━━━━━━━━━━━━━━━━ 9s 139ms/step - accuracy: 0.5469 - loss: 1.1595

 5/74 ━━━━━━━━━━━━━━━━━━━━ 9s 140ms/step - accuracy: 0.5437 - loss: 1.1864

 6/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.5521 - loss: 1.1633

 7/74 ━━━━━━━━━━━━━━━━━━━━ 9s 143ms/step - accuracy: 0.5491 - loss: 1.1641

 8/74 ━━━━━━━━━━━━━━━━━━━━ 9s 145ms/step - accuracy: 0.5430 - loss: 1.1355

 9/74 ━━━━━━━━━━━━━━━━━━━━ 9s 145ms/step - accuracy: 0.5278 - loss: 1.1442

10/74 ━━━━━━━━━━━━━━━━━━━━ 9s 143ms/step - accuracy: 0.5219 - loss: 1.1499

11/74 ━━━━━━━━━━━━━━━━━━━━ 8s 143ms/step - accuracy: 0.5170 - loss: 1.1524

12/74 ━━━━━━━━━━━━━━━━━━━━ 8s 143ms/step - accuracy: 0.5182 - loss: 1.1794

13/74 ━━━━━━━━━━━━━━━━━━━━ 8s 146ms/step - accuracy: 0.5312 - loss: 1.1661

14/74 ━━━━━━━━━━━━━━━━━━━━ 8s 148ms/step - accuracy: 0.5402 - loss: 1.1578

15/74 ━━━━━━━━━━━━━━━━━━━━ 8s 148ms/step - accuracy: 0.5500 - loss: 1.1430

16/74 ━━━━━━━━━━━━━━━━━━━━ 8s 147ms/step - accuracy: 0.5566 - loss: 1.1346

17/74 ━━━━━━━━━━━━━━━━━━━━ 8s 147ms/step - accuracy: 0.5588 - loss: 1.1315

18/74 ━━━━━━━━━━━━━━━━━━━━ 8s 147ms/step - accuracy: 0.5590 - loss: 1.1271

19/74 ━━━━━━━━━━━━━━━━━━━━ 8s 148ms/step - accuracy: 0.5543 - loss: 1.1297

20/74 ━━━━━━━━━━━━━━━━━━━━ 8s 148ms/step - accuracy: 0.5516 - loss: 1.1293

21/74 ━━━━━━━━━━━━━━━━━━━━ 7s 149ms/step - accuracy: 0.5432 - loss: 1.1446

22/74 ━━━━━━━━━━━━━━━━━━━━ 7s 150ms/step - accuracy: 0.5497 - loss: 1.1396

23/74 ━━━━━━━━━━━━━━━━━━━━ 7s 150ms/step - accuracy: 0.5503 - loss: 1.1348

24/74 ━━━━━━━━━━━━━━━━━━━━ 7s 149ms/step - accuracy: 0.5508 - loss: 1.1310

25/74 ━━━━━━━━━━━━━━━━━━━━ 7s 149ms/step - accuracy: 0.5525 - loss: 1.1243

26/74 ━━━━━━━━━━━━━━━━━━━━ 7s 152ms/step - accuracy: 0.5529 - loss: 1.1239

27/74 ━━━━━━━━━━━━━━━━━━━━ 7s 161ms/step - accuracy: 0.5567 - loss: 1.1249

28/74 ━━━━━━━━━━━━━━━━━━━━ 7s 167ms/step - accuracy: 0.5558 - loss: 1.1233

29/74 ━━━━━━━━━━━━━━━━━━━━ 7s 173ms/step - accuracy: 0.5528 - loss: 1.1217

30/74 ━━━━━━━━━━━━━━━━━━━━ 7s 179ms/step - accuracy: 0.5542 - loss: 1.1207

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 184ms/step - accuracy: 0.5554 - loss: 1.1186

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 188ms/step - accuracy: 0.5537 - loss: 1.1159

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 190ms/step - accuracy: 0.5530 - loss: 1.1170

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 193ms/step - accuracy: 0.5551 - loss: 1.1131

35/74 ━━━━━━━━━━━━━━━━━━━━ 7s 193ms/step - accuracy: 0.5536 - loss: 1.1103

36/74 ━━━━━━━━━━━━━━━━━━━━ 7s 193ms/step - accuracy: 0.5538 - loss: 1.1046

37/74 ━━━━━━━━━━━━━━━━━━━━ 7s 192ms/step - accuracy: 0.5549 - loss: 1.0994

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 192ms/step - accuracy: 0.5592 - loss: 1.0913

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 192ms/step - accuracy: 0.5601 - loss: 1.0891

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 192ms/step - accuracy: 0.5586 - loss: 1.0874

41/74 ━━━━━━━━━━━━━━━━━━━━ 6s 191ms/step - accuracy: 0.5595 - loss: 1.0895

42/74 ━━━━━━━━━━━━━━━━━━━━ 6s 191ms/step - accuracy: 0.5573 - loss: 1.0925

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 191ms/step - accuracy: 0.5581 - loss: 1.0933

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 190ms/step - accuracy: 0.5568 - loss: 1.0925

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 190ms/step - accuracy: 0.5535 - loss: 1.0940

46/74 ━━━━━━━━━━━━━━━━━━━━ 5s 190ms/step - accuracy: 0.5537 - loss: 1.0964

47/74 ━━━━━━━━━━━━━━━━━━━━ 5s 189ms/step - accuracy: 0.5552 - loss: 1.0957

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 189ms/step - accuracy: 0.5527 - loss: 1.0997

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 189ms/step - accuracy: 0.5523 - loss: 1.1010

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 188ms/step - accuracy: 0.5550 - loss: 1.0976

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 188ms/step - accuracy: 0.5551 - loss: 1.0978

52/74 ━━━━━━━━━━━━━━━━━━━━ 4s 188ms/step - accuracy: 0.5529 - loss: 1.0996

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 187ms/step - accuracy: 0.5531 - loss: 1.0979

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 187ms/step - accuracy: 0.5538 - loss: 1.0954

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 187ms/step - accuracy: 0.5540 - loss: 1.0926

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 187ms/step - accuracy: 0.5508 - loss: 1.0962

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 187ms/step - accuracy: 0.5537 - loss: 1.0941

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 186ms/step - accuracy: 0.5517 - loss: 1.0947

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 186ms/step - accuracy: 0.5498 - loss: 1.0960

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 186ms/step - accuracy: 0.5484 - loss: 1.1008

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 186ms/step - accuracy: 0.5507 - loss: 1.0989

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 186ms/step - accuracy: 0.5524 - loss: 1.0978

63/74 ━━━━━━━━━━━━━━━━━━━━ 2s 186ms/step - accuracy: 0.5521 - loss: 1.0990

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 185ms/step - accuracy: 0.5518 - loss: 1.0989

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 185ms/step - accuracy: 0.5514 - loss: 1.0983

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 185ms/step - accuracy: 0.5516 - loss: 1.0981

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 185ms/step - accuracy: 0.5536 - loss: 1.0951

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 185ms/step - accuracy: 0.5519 - loss: 1.0950

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 185ms/step - accuracy: 0.5525 - loss: 1.0927

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 184ms/step - accuracy: 0.5536 - loss: 1.0913

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 184ms/step - accuracy: 0.5550 - loss: 1.0873

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 184ms/step - accuracy: 0.5564 - loss: 1.0848

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 184ms/step - accuracy: 0.5599 - loss: 1.0807

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 182ms/step - accuracy: 0.5588 - loss: 1.0821

74/74 ━━━━━━━━━━━━━━━━━━━━ 15s 198ms/step - accuracy: 0.5588 - loss: 1.0821 - val_accuracy: 0.5731 - val_loss: 1.0409

Epoch 6/6


 1/74 ━━━━━━━━━━━━━━━━━━━━ 18s 259ms/step - accuracy: 0.5312 - loss: 0.9945

 2/74 ━━━━━━━━━━━━━━━━━━━━ 12s 167ms/step - accuracy: 0.5469 - loss: 1.1020

 3/74 ━━━━━━━━━━━━━━━━━━━━ 12s 169ms/step - accuracy: 0.5625 - loss: 1.0660

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 172ms/step - accuracy: 0.5547 - loss: 1.0385

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 179ms/step - accuracy: 0.5500 - loss: 1.0291

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 178ms/step - accuracy: 0.5573 - loss: 1.0314

 7/74 ━━━━━━━━━━━━━━━━━━━━ 11s 177ms/step - accuracy: 0.5714 - loss: 1.0173

 8/74 ━━━━━━━━━━━━━━━━━━━━ 11s 176ms/step - accuracy: 0.5781 - loss: 1.0105

 9/74 ━━━━━━━━━━━━━━━━━━━━ 11s 175ms/step - accuracy: 0.5972 - loss: 0.9807

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 175ms/step - accuracy: 0.5938 - loss: 0.9840

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 180ms/step - accuracy: 0.5938 - loss: 0.9962

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.5885 - loss: 1.0086

13/74 ━━━━━━━━━━━━━━━━━━━━ 11s 181ms/step - accuracy: 0.5986 - loss: 1.0045

14/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.6116 - loss: 0.9918

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 180ms/step - accuracy: 0.6146 - loss: 0.9916

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.6094 - loss: 0.9882

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 180ms/step - accuracy: 0.6085 - loss: 0.9824

18/74 ━━━━━━━━━━━━━━━━━━━━ 10s 180ms/step - accuracy: 0.6042 - loss: 0.9862

19/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.6118 - loss: 0.9793 

20/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.6062 - loss: 0.9874

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.6101 - loss: 0.9822

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.6108 - loss: 0.9804

23/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.6033 - loss: 0.9953

24/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.6042 - loss: 0.9918

25/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.6050 - loss: 0.9833

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.6082 - loss: 0.9860

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.6053 - loss: 0.9895

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.6004 - loss: 1.0042

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.5981 - loss: 1.0054

30/74 ━━━━━━━━━━━━━━━━━━━━ 7s 179ms/step - accuracy: 0.5958 - loss: 1.0094

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5978 - loss: 1.0068

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5957 - loss: 1.0134

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5947 - loss: 1.0143

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 178ms/step - accuracy: 0.5965 - loss: 1.0165

35/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5964 - loss: 1.0135

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5946 - loss: 1.0182

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5971 - loss: 1.0156

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5929 - loss: 1.0217

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5913 - loss: 1.0206

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 178ms/step - accuracy: 0.5891 - loss: 1.0277

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.5899 - loss: 1.0269

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.5915 - loss: 1.0225

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.5945 - loss: 1.0217

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.5930 - loss: 1.0240

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.5931 - loss: 1.0240

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5931 - loss: 1.0216

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.5918 - loss: 1.0200

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.5931 - loss: 1.0172

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.5950 - loss: 1.0152

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.5950 - loss: 1.0161

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 180ms/step - accuracy: 0.5913 - loss: 1.0208

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5913 - loss: 1.0211

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5914 - loss: 1.0216

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5891 - loss: 1.0252

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5915 - loss: 1.0198

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.5910 - loss: 1.0198

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 180ms/step - accuracy: 0.5905 - loss: 1.0221

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.5900 - loss: 1.0216

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5900 - loss: 1.0232

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5885 - loss: 1.0269

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.5871 - loss: 1.0301

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.5887 - loss: 1.0278

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.5893 - loss: 1.0280

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.5894 - loss: 1.0275

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.5870 - loss: 1.0311

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.5862 - loss: 1.0325

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.5849 - loss: 1.0340

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.5855 - loss: 1.0329

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 180ms/step - accuracy: 0.5865 - loss: 1.0321

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.5871 - loss: 1.0317

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.5885 - loss: 1.0307

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.5894 - loss: 1.0296

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.5912 - loss: 1.0274

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.5907 - loss: 1.0282

74/74 ━━━━━━━━━━━━━━━━━━━━ 14s 193ms/step - accuracy: 0.5907 - loss: 1.0282 - val_accuracy: 0.5833 - val_loss: 1.0198

Tiempo A: 90.8s
fila_a = diagnostico_entrenamiento(hist_a, "A CNN desde cero")
curvas_entrenamiento(hist_a, "Modelo A — Flowers")
loss_a, acc_a = modelo_a.evaluate(test_a, verbose=0)
print(f"TEST A  loss={loss_a:.4f} acc={acc_a:.4f}  azar=0.20  delta={acc_a-0.20:+.4f}")
modelo                  A CNN desde cero
epocas_corridas                        6
mejor_epoca_val_loss                   6
min_val_loss                    1.019768
val_loss_final                  1.019768
train_loss_en_mejor             1.028209
train_loss_final                1.028209
delta_val_tras_mejor                 0.0
gap_loss_mejor                 -0.008441
gap_loss_final                 -0.008441
train_acc_mejor                 0.590716
val_acc_mejor                   0.583333
train_acc_final                 0.590716
val_acc_final                   0.583333
gap_acc_mejor                   0.007382
gap_acc_final                   0.007382

LECTURA
La mejor val_loss coincide con la última época: no hay tramo posterior de deterioro.

TEST A  loss=0.9933 acc=0.6008  azar=0.20  delta=+0.4008

Interpretación del modelo A

Si val_acc supera con claridad 0.20, hay señal en las fotos incluso sin ImageNet. Si el gap train−val crece al final, A está memorizando texturas del jardín de entrenamiento. A es línea base, no el veredicto.

11. MobileNetV2: cada argumento es una decisión

  • weights="imagenet": no es magia; es un punto inicial en un espacio de 1.4 M de imágenes.
  • include_top=False: se tira el clasificador de 1000 clases; queda el mapa espacial.
  • input_shape=(128,128,3): debe coincidir con el resize. 224 sería más fiel al preentrenamiento y más caro.
from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input

base_ref = MobileNetV2(input_shape=(IMG_SIZE, IMG_SIZE, 3), include_top=False, weights="imagenet")
print("entrada", base_ref.input_shape, "salida", base_ref.output_shape, "capas", len(base_ref.layers))
print("params base", int(base_ref.count_params()))
print("primeras", [l.name for l in base_ref.layers[:3]])
print("ultimas", [l.name for l in base_ref.layers[-3:]])
del base_ref
entrada (None, 128, 128, 3) salida (None, 4, 4, 1280) capas 154
params base 2257984
primeras ['input_layer_2', 'Conv1', 'bn_Conv1']
ultimas ['Conv_1', 'Conv_1_bn', 'out_relu']

12. Congelar no apaga el forward

trainable=False impide actualizar pesos. El mapa de características se calcula igual. Esa es la feature extraction: una función fija () y una cabeza que sí se entrena.

def construir_transfer(trainable_base, nombre):
    base = MobileNetV2(input_shape=(IMG_SIZE, IMG_SIZE, 3), include_top=False, weights="imagenet")
    base.trainable = bool(trainable_base)
    inp = tf.keras.Input((IMG_SIZE, IMG_SIZE, 3))
    x = preprocess_input(inp)
    x = base(x, training=False)
    x = tf.keras.layers.GlobalAveragePooling2D()(x)
    x = tf.keras.layers.Dropout(0.2)(x)
    out = tf.keras.layers.Dense(len(clases), activation="softmax")(x)
    return tf.keras.Model(inp, out, name=nombre), base

modelo_b, base_b = construir_transfer(False, "B_congelado")
print("params B", { 
    "total": modelo_b.count_params(),
    "entrenables": int(sum(np.prod(w.shape) for w in modelo_b.trainable_weights)),
})
modelo_b.compile(optimizer=tf.keras.optimizers.Adam(LR_HEAD),
                 loss="sparse_categorical_crossentropy", metrics=["accuracy"])
params B {'total': 2264389, 'entrenables': 6405}

Idea clave

Si B tiene millones de parámetros y solo entrena unos cientos, el experimento pregunta: ¿ImageNet ya trajo la representación y nosotros solo aprendemos cómo leerla?

t0 = time.perf_counter()
hist_b = modelo_b.fit(train_m, validation_data=val_m, epochs=EPOCHS_B, callbacks=[es], verbose=1)
tiempo_b = time.perf_counter() - t0
print(f"Tiempo B: {tiempo_b:.1f}s")
fila_b = diagnostico_entrenamiento(hist_b, "B base congelada")
curvas_entrenamiento(hist_b, "Modelo B — feature extraction")
loss_b, acc_b = modelo_b.evaluate(test_m, verbose=0)
print(f"TEST B  loss={loss_b:.4f} acc={acc_b:.4f}")
Epoch 1/5


 1/74 ━━━━━━━━━━━━━━━━━━━━ 10:07 8s/step - accuracy: 0.2812 - loss: 1.7426

 2/74 ━━━━━━━━━━━━━━━━━━━━ 10s 151ms/step - accuracy: 0.3281 - loss: 1.8874

 3/74 ━━━━━━━━━━━━━━━━━━━━ 10s 141ms/step - accuracy: 0.3333 - loss: 1.8974

 4/74 ━━━━━━━━━━━━━━━━━━━━ 9s 140ms/step - accuracy: 0.2969 - loss: 1.8881 

 5/74 ━━━━━━━━━━━━━━━━━━━━ 9s 140ms/step - accuracy: 0.3000 - loss: 1.9221

 6/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.2969 - loss: 1.8953

 7/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.3080 - loss: 1.8681

 8/74 ━━━━━━━━━━━━━━━━━━━━ 9s 140ms/step - accuracy: 0.3125 - loss: 1.8544

 9/74 ━━━━━━━━━━━━━━━━━━━━ 8s 138ms/step - accuracy: 0.3125 - loss: 1.8540

10/74 ━━━━━━━━━━━━━━━━━━━━ 8s 137ms/step - accuracy: 0.3156 - loss: 1.8188

11/74 ━━━━━━━━━━━━━━━━━━━━ 8s 136ms/step - accuracy: 0.3438 - loss: 1.7411

12/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.3594 - loss: 1.7023

13/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.3750 - loss: 1.6645

14/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.3839 - loss: 1.6338

15/74 ━━━━━━━━━━━━━━━━━━━━ 7s 135ms/step - accuracy: 0.3875 - loss: 1.6161

16/74 ━━━━━━━━━━━━━━━━━━━━ 7s 136ms/step - accuracy: 0.4004 - loss: 1.5836

17/74 ━━━━━━━━━━━━━━━━━━━━ 7s 135ms/step - accuracy: 0.4026 - loss: 1.5642

18/74 ━━━━━━━━━━━━━━━━━━━━ 7s 136ms/step - accuracy: 0.4097 - loss: 1.5619

19/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.4161 - loss: 1.5490

20/74 ━━━━━━━━━━━━━━━━━━━━ 7s 136ms/step - accuracy: 0.4266 - loss: 1.5245

21/74 ━━━━━━━━━━━━━━━━━━━━ 7s 136ms/step - accuracy: 0.4330 - loss: 1.5004

22/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.4418 - loss: 1.4708

23/74 ━━━━━━━━━━━━━━━━━━━━ 6s 137ms/step - accuracy: 0.4484 - loss: 1.4532

24/74 ━━━━━━━━━━━━━━━━━━━━ 6s 137ms/step - accuracy: 0.4583 - loss: 1.4284

25/74 ━━━━━━━━━━━━━━━━━━━━ 6s 137ms/step - accuracy: 0.4663 - loss: 1.4091

26/74 ━━━━━━━━━━━━━━━━━━━━ 6s 137ms/step - accuracy: 0.4712 - loss: 1.3901

27/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.4722 - loss: 1.3840

28/74 ━━━━━━━━━━━━━━━━━━━━ 6s 139ms/step - accuracy: 0.4788 - loss: 1.3656

29/74 ━━━━━━━━━━━━━━━━━━━━ 6s 139ms/step - accuracy: 0.4849 - loss: 1.3494

30/74 ━━━━━━━━━━━━━━━━━━━━ 6s 139ms/step - accuracy: 0.4917 - loss: 1.3344

31/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.5020 - loss: 1.3113

32/74 ━━━━━━━━━━━━━━━━━━━━ 5s 141ms/step - accuracy: 0.5098 - loss: 1.2921

33/74 ━━━━━━━━━━━━━━━━━━━━ 5s 141ms/step - accuracy: 0.5170 - loss: 1.2752

34/74 ━━━━━━━━━━━━━━━━━━━━ 5s 141ms/step - accuracy: 0.5239 - loss: 1.2672

35/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.5321 - loss: 1.2487

36/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.5356 - loss: 1.2403

37/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.5389 - loss: 1.2252

38/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.5469 - loss: 1.2058

39/74 ━━━━━━━━━━━━━━━━━━━━ 4s 140ms/step - accuracy: 0.5529 - loss: 1.1911

40/74 ━━━━━━━━━━━━━━━━━━━━ 4s 140ms/step - accuracy: 0.5578 - loss: 1.1809

41/74 ━━━━━━━━━━━━━━━━━━━━ 4s 140ms/step - accuracy: 0.5610 - loss: 1.1678

42/74 ━━━━━━━━━━━━━━━━━━━━ 4s 140ms/step - accuracy: 0.5640 - loss: 1.1581

43/74 ━━━━━━━━━━━━━━━━━━━━ 4s 140ms/step - accuracy: 0.5719 - loss: 1.1431

44/74 ━━━━━━━━━━━━━━━━━━━━ 4s 139ms/step - accuracy: 0.5724 - loss: 1.1393

45/74 ━━━━━━━━━━━━━━━━━━━━ 4s 139ms/step - accuracy: 0.5757 - loss: 1.1318

46/74 ━━━━━━━━━━━━━━━━━━━━ 3s 139ms/step - accuracy: 0.5808 - loss: 1.1202

47/74 ━━━━━━━━━━━━━━━━━━━━ 3s 139ms/step - accuracy: 0.5838 - loss: 1.1114

48/74 ━━━━━━━━━━━━━━━━━━━━ 3s 138ms/step - accuracy: 0.5885 - loss: 1.1015

49/74 ━━━━━━━━━━━━━━━━━━━━ 3s 138ms/step - accuracy: 0.5886 - loss: 1.0997

50/74 ━━━━━━━━━━━━━━━━━━━━ 3s 138ms/step - accuracy: 0.5913 - loss: 1.0934

51/74 ━━━━━━━━━━━━━━━━━━━━ 3s 138ms/step - accuracy: 0.5938 - loss: 1.0882

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 138ms/step - accuracy: 0.5998 - loss: 1.0759

53/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6044 - loss: 1.0644

54/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6082 - loss: 1.0539

55/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6125 - loss: 1.0427

56/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6144 - loss: 1.0380

57/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6195 - loss: 1.0263

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6234 - loss: 1.0175

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 139ms/step - accuracy: 0.6255 - loss: 1.0100

60/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.6276 - loss: 1.0057

61/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.6301 - loss: 1.0013

62/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.6321 - loss: 0.9957

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.6344 - loss: 0.9910

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.6353 - loss: 0.9878

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.6385 - loss: 0.9818

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.6402 - loss: 0.9766

67/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.6418 - loss: 0.9709

68/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.6443 - loss: 0.9638

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.6481 - loss: 0.9552

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.6513 - loss: 0.9472

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.6536 - loss: 0.9406

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.6567 - loss: 0.9346

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.6592 - loss: 0.9269

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.6589 - loss: 0.9279

74/74 ━━━━━━━━━━━━━━━━━━━━ 24s 215ms/step - accuracy: 0.6589 - loss: 0.9279 - val_accuracy: 0.8180 - val_loss: 0.5131

Epoch 2/5


 1/74 ━━━━━━━━━━━━━━━━━━━━ 17s 245ms/step - accuracy: 0.7188 - loss: 0.7977

 2/74 ━━━━━━━━━━━━━━━━━━━━ 10s 145ms/step - accuracy: 0.7812 - loss: 0.6613

 3/74 ━━━━━━━━━━━━━━━━━━━━ 9s 139ms/step - accuracy: 0.7396 - loss: 0.6826 

 4/74 ━━━━━━━━━━━━━━━━━━━━ 9s 138ms/step - accuracy: 0.7656 - loss: 0.6293

 5/74 ━━━━━━━━━━━━━━━━━━━━ 9s 143ms/step - accuracy: 0.7812 - loss: 0.6001

 6/74 ━━━━━━━━━━━━━━━━━━━━ 9s 145ms/step - accuracy: 0.7760 - loss: 0.6144

 7/74 ━━━━━━━━━━━━━━━━━━━━ 9s 146ms/step - accuracy: 0.7902 - loss: 0.5779

 8/74 ━━━━━━━━━━━━━━━━━━━━ 9s 145ms/step - accuracy: 0.8047 - loss: 0.5575

 9/74 ━━━━━━━━━━━━━━━━━━━━ 9s 147ms/step - accuracy: 0.8160 - loss: 0.5301

10/74 ━━━━━━━━━━━━━━━━━━━━ 9s 148ms/step - accuracy: 0.8250 - loss: 0.5080

11/74 ━━━━━━━━━━━━━━━━━━━━ 9s 146ms/step - accuracy: 0.8239 - loss: 0.5085

12/74 ━━━━━━━━━━━━━━━━━━━━ 9s 146ms/step - accuracy: 0.8151 - loss: 0.5293

13/74 ━━━━━━━━━━━━━━━━━━━━ 8s 144ms/step - accuracy: 0.8173 - loss: 0.5270

14/74 ━━━━━━━━━━━━━━━━━━━━ 8s 143ms/step - accuracy: 0.8192 - loss: 0.5220

15/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.8146 - loss: 0.5240

16/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.8223 - loss: 0.5098

17/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.8235 - loss: 0.5070

18/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.8212 - loss: 0.5043

19/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.8224 - loss: 0.5093

20/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.8234 - loss: 0.5121

21/74 ━━━━━━━━━━━━━━━━━━━━ 7s 141ms/step - accuracy: 0.8185 - loss: 0.5223

22/74 ━━━━━━━━━━━━━━━━━━━━ 7s 141ms/step - accuracy: 0.8196 - loss: 0.5207

23/74 ━━━━━━━━━━━━━━━━━━━━ 7s 141ms/step - accuracy: 0.8207 - loss: 0.5150

24/74 ━━━━━━━━━━━━━━━━━━━━ 7s 140ms/step - accuracy: 0.8216 - loss: 0.5134

25/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8238 - loss: 0.5077

26/74 ━━━━━━━━━━━━━━━━━━━━ 6s 139ms/step - accuracy: 0.8269 - loss: 0.5004

27/74 ━━━━━━━━━━━━━━━━━━━━ 6s 138ms/step - accuracy: 0.8252 - loss: 0.5010

28/74 ━━━━━━━━━━━━━━━━━━━━ 6s 138ms/step - accuracy: 0.8259 - loss: 0.4966

29/74 ━━━━━━━━━━━━━━━━━━━━ 6s 137ms/step - accuracy: 0.8222 - loss: 0.4971

30/74 ━━━━━━━━━━━━━━━━━━━━ 6s 137ms/step - accuracy: 0.8240 - loss: 0.4930

31/74 ━━━━━━━━━━━━━━━━━━━━ 5s 137ms/step - accuracy: 0.8286 - loss: 0.4844

32/74 ━━━━━━━━━━━━━━━━━━━━ 5s 137ms/step - accuracy: 0.8291 - loss: 0.4820

33/74 ━━━━━━━━━━━━━━━━━━━━ 5s 136ms/step - accuracy: 0.8277 - loss: 0.4869

34/74 ━━━━━━━━━━━━━━━━━━━━ 5s 136ms/step - accuracy: 0.8290 - loss: 0.4853

35/74 ━━━━━━━━━━━━━━━━━━━━ 5s 136ms/step - accuracy: 0.8304 - loss: 0.4830

36/74 ━━━━━━━━━━━━━━━━━━━━ 5s 136ms/step - accuracy: 0.8273 - loss: 0.4864

37/74 ━━━━━━━━━━━━━━━━━━━━ 5s 135ms/step - accuracy: 0.8269 - loss: 0.4860

38/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8273 - loss: 0.4860

39/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8269 - loss: 0.4843

40/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8258 - loss: 0.4818

41/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8239 - loss: 0.4868

42/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8244 - loss: 0.4880

43/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8249 - loss: 0.4852

44/74 ━━━━━━━━━━━━━━━━━━━━ 4s 135ms/step - accuracy: 0.8239 - loss: 0.4851

45/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8250 - loss: 0.4852

46/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8240 - loss: 0.4851

47/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8245 - loss: 0.4853

48/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8236 - loss: 0.4870

49/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8246 - loss: 0.4835

50/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8250 - loss: 0.4834

51/74 ━━━━━━━━━━━━━━━━━━━━ 3s 135ms/step - accuracy: 0.8266 - loss: 0.4802

52/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8281 - loss: 0.4789

53/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8296 - loss: 0.4747

54/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8310 - loss: 0.4706

55/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8295 - loss: 0.4755

56/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8309 - loss: 0.4713

57/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8300 - loss: 0.4747

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8276 - loss: 0.4806

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 135ms/step - accuracy: 0.8289 - loss: 0.4783

60/74 ━━━━━━━━━━━━━━━━━━━━ 1s 136ms/step - accuracy: 0.8281 - loss: 0.4786

61/74 ━━━━━━━━━━━━━━━━━━━━ 1s 136ms/step - accuracy: 0.8289 - loss: 0.4779

62/74 ━━━━━━━━━━━━━━━━━━━━ 1s 137ms/step - accuracy: 0.8291 - loss: 0.4791

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.8309 - loss: 0.4751

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.8301 - loss: 0.4751

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.8308 - loss: 0.4720

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 139ms/step - accuracy: 0.8319 - loss: 0.4685

67/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8326 - loss: 0.4676

68/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8346 - loss: 0.4630

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8342 - loss: 0.4630

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.8339 - loss: 0.4624

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8349 - loss: 0.4620

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8359 - loss: 0.4628

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8360 - loss: 0.4618

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 138ms/step - accuracy: 0.8365 - loss: 0.4611

74/74 ━━━━━━━━━━━━━━━━━━━━ 13s 177ms/step - accuracy: 0.8365 - loss: 0.4611 - val_accuracy: 0.8554 - val_loss: 0.4323

Epoch 3/5


 1/74 ━━━━━━━━━━━━━━━━━━━━ 18s 249ms/step - accuracy: 0.9062 - loss: 0.3457

 2/74 ━━━━━━━━━━━━━━━━━━━━ 11s 154ms/step - accuracy: 0.9062 - loss: 0.3360

 3/74 ━━━━━━━━━━━━━━━━━━━━ 10s 147ms/step - accuracy: 0.8958 - loss: 0.4164

 4/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.8906 - loss: 0.4014 

 5/74 ━━━━━━━━━━━━━━━━━━━━ 9s 137ms/step - accuracy: 0.8813 - loss: 0.4253

 6/74 ━━━━━━━━━━━━━━━━━━━━ 9s 136ms/step - accuracy: 0.8906 - loss: 0.3978

 7/74 ━━━━━━━━━━━━━━━━━━━━ 9s 136ms/step - accuracy: 0.8750 - loss: 0.4200

 8/74 ━━━━━━━━━━━━━━━━━━━━ 8s 136ms/step - accuracy: 0.8867 - loss: 0.3920

 9/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.8854 - loss: 0.3978

10/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.8781 - loss: 0.4082

11/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.8750 - loss: 0.4061

12/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.8802 - loss: 0.3981

13/74 ━━━━━━━━━━━━━━━━━━━━ 8s 135ms/step - accuracy: 0.8726 - loss: 0.4010

14/74 ━━━━━━━━━━━━━━━━━━━━ 8s 136ms/step - accuracy: 0.8772 - loss: 0.3905

15/74 ━━━━━━━━━━━━━━━━━━━━ 8s 137ms/step - accuracy: 0.8750 - loss: 0.3987

16/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.8770 - loss: 0.3950

17/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.8732 - loss: 0.3956

18/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.8698 - loss: 0.4003

19/74 ━━━━━━━━━━━━━━━━━━━━ 7s 138ms/step - accuracy: 0.8668 - loss: 0.3985

20/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.8734 - loss: 0.3877

21/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.8735 - loss: 0.3830

22/74 ━━━━━━━━━━━━━━━━━━━━ 7s 137ms/step - accuracy: 0.8722 - loss: 0.3855

23/74 ━━━━━━━━━━━━━━━━━━━━ 7s 139ms/step - accuracy: 0.8750 - loss: 0.3808

24/74 ━━━━━━━━━━━━━━━━━━━━ 6s 139ms/step - accuracy: 0.8763 - loss: 0.3829

25/74 ━━━━━━━━━━━━━━━━━━━━ 6s 139ms/step - accuracy: 0.8750 - loss: 0.3861

26/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8762 - loss: 0.3868

27/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8750 - loss: 0.3866

28/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8761 - loss: 0.3863

29/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8761 - loss: 0.3824

30/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8729 - loss: 0.3878

31/74 ━━━━━━━━━━━━━━━━━━━━ 6s 140ms/step - accuracy: 0.8730 - loss: 0.3853

32/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.8730 - loss: 0.3878

33/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.8722 - loss: 0.3872

34/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.8741 - loss: 0.3836

35/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.8732 - loss: 0.3826

36/74 ━━━━━━━━━━━━━━━━━━━━ 5s 140ms/step - accuracy: 0.8759 - loss: 0.3772

37/74 ━━━━━━━━━━━━━━━━━━━━ 5s 141ms/step - accuracy: 0.8775 - loss: 0.3777

38/74 ━━━━━━━━━━━━━━━━━━━━ 5s 141ms/step - accuracy: 0.8750 - loss: 0.3815

39/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8766 - loss: 0.3774

40/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8789 - loss: 0.3737

41/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8796 - loss: 0.3693

42/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8802 - loss: 0.3670

43/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8794 - loss: 0.3664

44/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8786 - loss: 0.3687

45/74 ━━━━━━━━━━━━━━━━━━━━ 4s 141ms/step - accuracy: 0.8778 - loss: 0.3659

46/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8777 - loss: 0.3672

47/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8770 - loss: 0.3658

48/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8770 - loss: 0.3637

49/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8756 - loss: 0.3632

50/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8750 - loss: 0.3641

51/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8756 - loss: 0.3614

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 141ms/step - accuracy: 0.8774 - loss: 0.3577

53/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.8791 - loss: 0.3557

54/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.8779 - loss: 0.3570

55/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8784 - loss: 0.3588

56/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8783 - loss: 0.3576

57/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8783 - loss: 0.3563

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8788 - loss: 0.3550

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8792 - loss: 0.3541

60/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8797 - loss: 0.3535

61/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8781 - loss: 0.3562

62/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8775 - loss: 0.3573

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8760 - loss: 0.3593

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8770 - loss: 0.3574

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8769 - loss: 0.3569

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8778 - loss: 0.3547

67/74 ━━━━━━━━━━━━━━━━━━━━ 0s 142ms/step - accuracy: 0.8773 - loss: 0.3606

68/74 ━━━━━━━━━━━━━━━━━━━━ 0s 142ms/step - accuracy: 0.8773 - loss: 0.3621

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 142ms/step - accuracy: 0.8777 - loss: 0.3610

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8781 - loss: 0.3601

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8785 - loss: 0.3592

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8793 - loss: 0.3566

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8780 - loss: 0.3589

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.8778 - loss: 0.3589

74/74 ━━━━━━━━━━━━━━━━━━━━ 13s 176ms/step - accuracy: 0.8778 - loss: 0.3589 - val_accuracy: 0.8656 - val_loss: 0.4169

Epoch 4/5


 1/74 ━━━━━━━━━━━━━━━━━━━━ 16s 225ms/step - accuracy: 0.9062 - loss: 0.2670

 2/74 ━━━━━━━━━━━━━━━━━━━━ 12s 168ms/step - accuracy: 0.9219 - loss: 0.2317

 3/74 ━━━━━━━━━━━━━━━━━━━━ 11s 160ms/step - accuracy: 0.9062 - loss: 0.2634

 4/74 ━━━━━━━━━━━━━━━━━━━━ 10s 157ms/step - accuracy: 0.9062 - loss: 0.2521

 5/74 ━━━━━━━━━━━━━━━━━━━━ 10s 153ms/step - accuracy: 0.9062 - loss: 0.2506

 6/74 ━━━━━━━━━━━━━━━━━━━━ 10s 150ms/step - accuracy: 0.9062 - loss: 0.2539

 7/74 ━━━━━━━━━━━━━━━━━━━━ 9s 149ms/step - accuracy: 0.9152 - loss: 0.2391 

 8/74 ━━━━━━━━━━━━━━━━━━━━ 9s 150ms/step - accuracy: 0.9102 - loss: 0.2467

 9/74 ━━━━━━━━━━━━━━━━━━━━ 9s 150ms/step - accuracy: 0.9028 - loss: 0.2672

10/74 ━━━━━━━━━━━━━━━━━━━━ 9s 149ms/step - accuracy: 0.9062 - loss: 0.2647

11/74 ━━━━━━━━━━━━━━━━━━━━ 9s 148ms/step - accuracy: 0.9034 - loss: 0.2623

12/74 ━━━━━━━━━━━━━━━━━━━━ 9s 146ms/step - accuracy: 0.9062 - loss: 0.2606

13/74 ━━━━━━━━━━━━━━━━━━━━ 8s 145ms/step - accuracy: 0.9087 - loss: 0.2610

14/74 ━━━━━━━━━━━━━━━━━━━━ 8s 145ms/step - accuracy: 0.9129 - loss: 0.2538

15/74 ━━━━━━━━━━━━━━━━━━━━ 8s 145ms/step - accuracy: 0.9083 - loss: 0.2584

16/74 ━━━━━━━━━━━━━━━━━━━━ 8s 146ms/step - accuracy: 0.9082 - loss: 0.2550

17/74 ━━━━━━━━━━━━━━━━━━━━ 8s 146ms/step - accuracy: 0.9081 - loss: 0.2538

18/74 ━━━━━━━━━━━━━━━━━━━━ 8s 145ms/step - accuracy: 0.9080 - loss: 0.2543

19/74 ━━━━━━━━━━━━━━━━━━━━ 7s 145ms/step - accuracy: 0.9112 - loss: 0.2482

20/74 ━━━━━━━━━━━━━━━━━━━━ 7s 146ms/step - accuracy: 0.9078 - loss: 0.2546

21/74 ━━━━━━━━━━━━━━━━━━━━ 7s 146ms/step - accuracy: 0.9092 - loss: 0.2506

22/74 ━━━━━━━━━━━━━━━━━━━━ 7s 145ms/step - accuracy: 0.9105 - loss: 0.2485

23/74 ━━━━━━━━━━━━━━━━━━━━ 7s 145ms/step - accuracy: 0.9076 - loss: 0.2533

24/74 ━━━━━━━━━━━━━━━━━━━━ 7s 146ms/step - accuracy: 0.9049 - loss: 0.2598

25/74 ━━━━━━━━━━━━━━━━━━━━ 7s 146ms/step - accuracy: 0.9025 - loss: 0.2635

26/74 ━━━━━━━━━━━━━━━━━━━━ 6s 145ms/step - accuracy: 0.9038 - loss: 0.2636

27/74 ━━━━━━━━━━━━━━━━━━━━ 6s 145ms/step - accuracy: 0.8993 - loss: 0.2671

28/74 ━━━━━━━━━━━━━━━━━━━━ 6s 145ms/step - accuracy: 0.9007 - loss: 0.2660

29/74 ━━━━━━━━━━━━━━━━━━━━ 6s 146ms/step - accuracy: 0.8987 - loss: 0.2688

30/74 ━━━━━━━━━━━━━━━━━━━━ 6s 145ms/step - accuracy: 0.8990 - loss: 0.2696

31/74 ━━━━━━━━━━━━━━━━━━━━ 6s 145ms/step - accuracy: 0.8962 - loss: 0.2757

32/74 ━━━━━━━━━━━━━━━━━━━━ 6s 146ms/step - accuracy: 0.8965 - loss: 0.2732

33/74 ━━━━━━━━━━━━━━━━━━━━ 5s 146ms/step - accuracy: 0.8977 - loss: 0.2706

34/74 ━━━━━━━━━━━━━━━━━━━━ 5s 145ms/step - accuracy: 0.8943 - loss: 0.2766

35/74 ━━━━━━━━━━━━━━━━━━━━ 5s 146ms/step - accuracy: 0.8920 - loss: 0.2837

36/74 ━━━━━━━━━━━━━━━━━━━━ 5s 146ms/step - accuracy: 0.8924 - loss: 0.2837

37/74 ━━━━━━━━━━━━━━━━━━━━ 5s 146ms/step - accuracy: 0.8910 - loss: 0.2856

38/74 ━━━━━━━━━━━━━━━━━━━━ 5s 145ms/step - accuracy: 0.8898 - loss: 0.2887

39/74 ━━━━━━━━━━━━━━━━━━━━ 5s 145ms/step - accuracy: 0.8870 - loss: 0.2978

40/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8891 - loss: 0.2952

41/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8880 - loss: 0.2961

42/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8869 - loss: 0.2967

43/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8859 - loss: 0.2987

44/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8849 - loss: 0.3006

45/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8819 - loss: 0.3084

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 145ms/step - accuracy: 0.8838 - loss: 0.3075

47/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8830 - loss: 0.3091

48/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8828 - loss: 0.3085

49/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8833 - loss: 0.3055

50/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8825 - loss: 0.3076

51/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8811 - loss: 0.3109

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8804 - loss: 0.3124

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 144ms/step - accuracy: 0.8821 - loss: 0.3092

54/74 ━━━━━━━━━━━━━━━━━━━━ 2s 143ms/step - accuracy: 0.8837 - loss: 0.3076

55/74 ━━━━━━━━━━━━━━━━━━━━ 2s 143ms/step - accuracy: 0.8835 - loss: 0.3075

56/74 ━━━━━━━━━━━━━━━━━━━━ 2s 143ms/step - accuracy: 0.8850 - loss: 0.3064

57/74 ━━━━━━━━━━━━━━━━━━━━ 2s 143ms/step - accuracy: 0.8854 - loss: 0.3039

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8842 - loss: 0.3039

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 142ms/step - accuracy: 0.8840 - loss: 0.3044

60/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8854 - loss: 0.3016

61/74 ━━━━━━━━━━━━━━━━━━━━ 1s 142ms/step - accuracy: 0.8858 - loss: 0.3019

62/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.8866 - loss: 0.3010

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.8874 - loss: 0.3020

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.8887 - loss: 0.3014

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.8894 - loss: 0.3007

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.8897 - loss: 0.2991

67/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8899 - loss: 0.3000

68/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8892 - loss: 0.3016

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 141ms/step - accuracy: 0.8899 - loss: 0.3000

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.8902 - loss: 0.2998

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.8904 - loss: 0.3011

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.8919 - loss: 0.2985

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.8921 - loss: 0.2981

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.8914 - loss: 0.2991

74/74 ━━━━━━━━━━━━━━━━━━━━ 13s 175ms/step - accuracy: 0.8914 - loss: 0.2991 - val_accuracy: 0.8690 - val_loss: 0.3971

Epoch 5/5


 1/74 ━━━━━━━━━━━━━━━━━━━━ 20s 278ms/step - accuracy: 0.8750 - loss: 0.2407

 2/74 ━━━━━━━━━━━━━━━━━━━━ 10s 142ms/step - accuracy: 0.8906 - loss: 0.2650

 3/74 ━━━━━━━━━━━━━━━━━━━━ 10s 143ms/step - accuracy: 0.8958 - loss: 0.2394

 4/74 ━━━━━━━━━━━━━━━━━━━━ 9s 140ms/step - accuracy: 0.9141 - loss: 0.2315 

 5/74 ━━━━━━━━━━━━━━━━━━━━ 9s 140ms/step - accuracy: 0.9250 - loss: 0.2259

 6/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.9271 - loss: 0.2216

 7/74 ━━━━━━━━━━━━━━━━━━━━ 9s 143ms/step - accuracy: 0.9330 - loss: 0.2266

 8/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.9336 - loss: 0.2335

 9/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.9271 - loss: 0.2439

10/74 ━━━━━━━━━━━━━━━━━━━━ 9s 141ms/step - accuracy: 0.9219 - loss: 0.2592

11/74 ━━━━━━━━━━━━━━━━━━━━ 8s 141ms/step - accuracy: 0.9233 - loss: 0.2468

12/74 ━━━━━━━━━━━━━━━━━━━━ 8s 141ms/step - accuracy: 0.9167 - loss: 0.2614

13/74 ━━━━━━━━━━━━━━━━━━━━ 8s 141ms/step - accuracy: 0.9207 - loss: 0.2489

14/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.9152 - loss: 0.2565

15/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.9187 - loss: 0.2562

16/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.9199 - loss: 0.2536

17/74 ━━━━━━━━━━━━━━━━━━━━ 8s 142ms/step - accuracy: 0.9246 - loss: 0.2444

18/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9132 - loss: 0.2569

19/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9079 - loss: 0.2618

20/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9109 - loss: 0.2558

21/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9122 - loss: 0.2580

22/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9119 - loss: 0.2587

23/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9117 - loss: 0.2629

24/74 ━━━━━━━━━━━━━━━━━━━━ 7s 142ms/step - accuracy: 0.9141 - loss: 0.2597

25/74 ━━━━━━━━━━━━━━━━━━━━ 6s 141ms/step - accuracy: 0.9175 - loss: 0.2554

26/74 ━━━━━━━━━━━━━━━━━━━━ 6s 141ms/step - accuracy: 0.9195 - loss: 0.2503

27/74 ━━━━━━━━━━━━━━━━━━━━ 6s 142ms/step - accuracy: 0.9190 - loss: 0.2507

28/74 ━━━━━━━━━━━━━━━━━━━━ 6s 142ms/step - accuracy: 0.9196 - loss: 0.2501

29/74 ━━━━━━━━━━━━━━━━━━━━ 6s 142ms/step - accuracy: 0.9224 - loss: 0.2444

30/74 ━━━━━━━━━━━━━━━━━━━━ 6s 144ms/step - accuracy: 0.9240 - loss: 0.2421

31/74 ━━━━━━━━━━━━━━━━━━━━ 6s 144ms/step - accuracy: 0.9224 - loss: 0.2443

32/74 ━━━━━━━━━━━━━━━━━━━━ 6s 143ms/step - accuracy: 0.9238 - loss: 0.2417

33/74 ━━━━━━━━━━━━━━━━━━━━ 5s 143ms/step - accuracy: 0.9233 - loss: 0.2446

34/74 ━━━━━━━━━━━━━━━━━━━━ 5s 143ms/step - accuracy: 0.9237 - loss: 0.2430

35/74 ━━━━━━━━━━━━━━━━━━━━ 5s 144ms/step - accuracy: 0.9223 - loss: 0.2438

36/74 ━━━━━━━━━━━━━━━━━━━━ 5s 144ms/step - accuracy: 0.9193 - loss: 0.2465

37/74 ━━━━━━━━━━━━━━━━━━━━ 5s 143ms/step - accuracy: 0.9189 - loss: 0.2474

38/74 ━━━━━━━━━━━━━━━━━━━━ 5s 143ms/step - accuracy: 0.9178 - loss: 0.2517

39/74 ━━━━━━━━━━━━━━━━━━━━ 5s 143ms/step - accuracy: 0.9167 - loss: 0.2564

40/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9172 - loss: 0.2553

41/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9169 - loss: 0.2542

42/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9174 - loss: 0.2526

43/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9172 - loss: 0.2541

44/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9169 - loss: 0.2530

45/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9160 - loss: 0.2553

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 143ms/step - accuracy: 0.9171 - loss: 0.2529

47/74 ━━━━━━━━━━━━━━━━━━━━ 3s 143ms/step - accuracy: 0.9142 - loss: 0.2542

48/74 ━━━━━━━━━━━━━━━━━━━━ 3s 143ms/step - accuracy: 0.9128 - loss: 0.2560

49/74 ━━━━━━━━━━━━━━━━━━━━ 3s 142ms/step - accuracy: 0.9139 - loss: 0.2534

50/74 ━━━━━━━━━━━━━━━━━━━━ 3s 142ms/step - accuracy: 0.9144 - loss: 0.2552

51/74 ━━━━━━━━━━━━━━━━━━━━ 3s 142ms/step - accuracy: 0.9136 - loss: 0.2553

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 142ms/step - accuracy: 0.9129 - loss: 0.2580

53/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9133 - loss: 0.2577

54/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9132 - loss: 0.2592

55/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9125 - loss: 0.2605

56/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9124 - loss: 0.2591

57/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9128 - loss: 0.2587

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9133 - loss: 0.2611

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 141ms/step - accuracy: 0.9142 - loss: 0.2587

60/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.9135 - loss: 0.2592

61/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.9144 - loss: 0.2573

62/74 ━━━━━━━━━━━━━━━━━━━━ 1s 141ms/step - accuracy: 0.9138 - loss: 0.2571

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.9127 - loss: 0.2584

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.9126 - loss: 0.2580

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.9115 - loss: 0.2603

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - accuracy: 0.9124 - loss: 0.2589

67/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.9128 - loss: 0.2596

68/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.9136 - loss: 0.2575

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.9135 - loss: 0.2574

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.9129 - loss: 0.2571

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.9137 - loss: 0.2548

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 140ms/step - accuracy: 0.9132 - loss: 0.2549

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 139ms/step - accuracy: 0.9127 - loss: 0.2553

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 138ms/step - accuracy: 0.9127 - loss: 0.2553

74/74 ━━━━━━━━━━━━━━━━━━━━ 13s 172ms/step - accuracy: 0.9127 - loss: 0.2553 - val_accuracy: 0.8724 - val_loss: 0.3827

Tiempo B: 76.3s

modelo                  B base congelada

epocas_corridas                        5

mejor_epoca_val_loss                   5

min_val_loss                    0.382663

val_loss_final                  0.382663

train_loss_en_mejor             0.255255

train_loss_final                0.255255

delta_val_tras_mejor                 0.0

gap_loss_mejor                  0.127408

gap_loss_final                  0.127408

train_acc_mejor                 0.912692

val_acc_mejor                   0.872449

train_acc_final                 0.912692

val_acc_final                   0.872449

gap_acc_mejor                   0.040243

gap_acc_final                   0.040243



LECTURA

La mejor val_loss coincide con la última época: no hay tramo posterior de deterioro.

TEST B  loss=0.3725 acc=0.8610

13. Comparación A vs B en el mismo test

La tabla no elige el ganador moral. Elige, en este split, quién generaliza mejor y a qué costo de parámetros y tiempo.

df_ab = pd.DataFrame([
    {"modelo": "A cero", "test_acc": acc_a, "test_loss": loss_a, "tiempo_s": tiempo_a,
     "entrenables": int(sum(np.prod(w.shape) for w in modelo_a.trainable_weights)),
     **{k: fila_a.get(k) for k in ("mejor_epoca_val_loss", "gap_acc_final", "min_val_loss")}},
    {"modelo": "B congelada", "test_acc": acc_b, "test_loss": loss_b, "tiempo_s": tiempo_b,
     "entrenables": int(sum(np.prod(w.shape) for w in modelo_b.trainable_weights)),
     **{k: fila_b.get(k) for k in ("mejor_epoca_val_loss", "gap_acc_final", "min_val_loss")}},
])
print(df_ab.to_string(index=False, float_format=lambda v: f"{v:.4f}"))
print()
if acc_b > acc_a:
    print("RESULTADO: B supera a A en test en este experimento.")
elif acc_a > acc_b:
    print("RESULTADO: A supera a B en test. La transferencia no ganó aquí.")
else:
    print("RESULTADO: empate práctico en test.")
print("LIMITACIÓN: una semilla, un tamaño 128, un EarlyStopping. No es un meta-análisis.")
     modelo  test_acc  test_loss  tiempo_s  entrenables  mejor_epoca_val_loss  gap_acc_final  min_val_loss
     A cero    0.6008     0.9933   90.8461        65285                     6         0.0074        1.0198
B congelada    0.8610     0.3725   76.3054         6405                     5         0.0402        0.3827

RESULTADO: B supera a A en test en este experimento.
LIMITACIÓN: una semilla, un tamaño 128, un EarlyStopping. No es un meta-análisis.

Interpretación

Si B gana con menos parámetros entrenables, la hipótesis ImageNet es pertinente para flores. Si A gana, el dominio (zoom, fondo, especie) puede estar lejos de ImageNet, o el presupuesto de B fue corto para una cabeza tan simple.

14. Fine-tuning: adaptar sin borrar

Se parte de B (cabeza ya razonable), se abren los últimos bloques y se baja el learning rate. Recompilar después de cambiar trainable es obligatorio. Las BatchNormalization se dejan en modo inferencia para no reescribir estadísticas con un batch pequeño.

modelo_c, base_c = construir_transfer(False, "C_ft")
modelo_c.set_weights(modelo_b.get_weights())
base_c.trainable = True
n_bn = 0
for i, layer in enumerate(base_c.layers):
    if i < len(base_c.layers) - N_UNFREEZE:
        layer.trainable = False
    if isinstance(layer, tf.keras.layers.BatchNormalization):
        layer.trainable = False
        n_bn += 1
print("capas base", len(base_c.layers),
      "entrenables", sum(int(l.trainable) for l in base_c.layers),
      "BN fijadas", n_bn)
modelo_c.compile(optimizer=tf.keras.optimizers.Adam(LR_FT),
                 loss="sparse_categorical_crossentropy", metrics=["accuracy"])
print("entrenables C", int(sum(np.prod(w.shape) for w in modelo_c.trainable_weights)))
capas base 154 entrenables 19 BN fijadas 52
entrenables C 1517125
t0 = time.perf_counter()
hist_c = modelo_c.fit(train_m, validation_data=val_m, epochs=EPOCHS_C, callbacks=[es], verbose=1)
tiempo_c = time.perf_counter() - t0
print(f"Tiempo C (fase 2): {tiempo_c:.1f}s  acumulado B+C: {tiempo_b+tiempo_c:.1f}s")
fila_c = diagnostico_entrenamiento(hist_c, "C fine-tuning")
curvas_entrenamiento(hist_c, "Modelo C — fine-tuning (fase 2)")
loss_c, acc_c = modelo_c.evaluate(test_m, verbose=0)
print(f"TEST C  loss={loss_c:.4f} acc={acc_c:.4f}")
Epoch 1/4
C:\Users\wilde\.conda\envs\ANALITICA\Lib\site-packages\keras\src\trainers\epoch_iterator.py:74: UserWarning: `shuffle=True` was passed, but will be ignored since the data `x` was provided as a tf.data.Dataset. The Dataset is expected to already be shuffled (via `.shuffle(buffer_size)`).
  self.data_adapter = data_adapters.get_data_adapter(
 1/74 ━━━━━━━━━━━━━━━━━━━━ 11:16 9s/step - accuracy: 0.9062 - loss: 0.2604

 2/74 ━━━━━━━━━━━━━━━━━━━━ 14s 202ms/step - accuracy: 0.8750 - loss: 0.4310

 3/74 ━━━━━━━━━━━━━━━━━━━━ 13s 191ms/step - accuracy: 0.9167 - loss: 0.3282

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 186ms/step - accuracy: 0.9297 - loss: 0.2901

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 184ms/step - accuracy: 0.9250 - loss: 0.2832

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.9323 - loss: 0.2666

 7/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.9152 - loss: 0.2873

 8/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.9102 - loss: 0.2801

 9/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.9167 - loss: 0.2600

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.9125 - loss: 0.2582

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.9062 - loss: 0.2655

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.9115 - loss: 0.2554

13/74 ━━━━━━━━━━━━━━━━━━━━ 11s 183ms/step - accuracy: 0.9159 - loss: 0.2508

14/74 ━━━━━━━━━━━━━━━━━━━━ 11s 185ms/step - accuracy: 0.9196 - loss: 0.2443

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 185ms/step - accuracy: 0.9229 - loss: 0.2343

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 185ms/step - accuracy: 0.9258 - loss: 0.2283

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 186ms/step - accuracy: 0.9283 - loss: 0.2254

18/74 ━━━━━━━━━━━━━━━━━━━━ 10s 185ms/step - accuracy: 0.9271 - loss: 0.2262

19/74 ━━━━━━━━━━━━━━━━━━━━ 10s 185ms/step - accuracy: 0.9227 - loss: 0.2351

20/74 ━━━━━━━━━━━━━━━━━━━━ 10s 185ms/step - accuracy: 0.9234 - loss: 0.2322

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 185ms/step - accuracy: 0.9226 - loss: 0.2310 

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 185ms/step - accuracy: 0.9261 - loss: 0.2233

23/74 ━━━━━━━━━━━━━━━━━━━━ 9s 185ms/step - accuracy: 0.9280 - loss: 0.2189

24/74 ━━━━━━━━━━━━━━━━━━━━ 9s 184ms/step - accuracy: 0.9271 - loss: 0.2197

25/74 ━━━━━━━━━━━━━━━━━━━━ 9s 184ms/step - accuracy: 0.9262 - loss: 0.2214

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 184ms/step - accuracy: 0.9255 - loss: 0.2232

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 184ms/step - accuracy: 0.9282 - loss: 0.2181

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 183ms/step - accuracy: 0.9252 - loss: 0.2264

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 183ms/step - accuracy: 0.9256 - loss: 0.2231

30/74 ━━━━━━━━━━━━━━━━━━━━ 8s 183ms/step - accuracy: 0.9260 - loss: 0.2206

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9264 - loss: 0.2212

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9258 - loss: 0.2255

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9252 - loss: 0.2271

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9256 - loss: 0.2272

35/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9268 - loss: 0.2236

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 183ms/step - accuracy: 0.9245 - loss: 0.2271

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 183ms/step - accuracy: 0.9223 - loss: 0.2281

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 183ms/step - accuracy: 0.9211 - loss: 0.2339

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 183ms/step - accuracy: 0.9215 - loss: 0.2318

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 183ms/step - accuracy: 0.9187 - loss: 0.2336

41/74 ━━━━━━━━━━━━━━━━━━━━ 6s 182ms/step - accuracy: 0.9177 - loss: 0.2340

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 182ms/step - accuracy: 0.9196 - loss: 0.2307

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 182ms/step - accuracy: 0.9186 - loss: 0.2300

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 182ms/step - accuracy: 0.9190 - loss: 0.2283

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 182ms/step - accuracy: 0.9187 - loss: 0.2281

46/74 ━━━━━━━━━━━━━━━━━━━━ 5s 182ms/step - accuracy: 0.9185 - loss: 0.2298

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 182ms/step - accuracy: 0.9189 - loss: 0.2282

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 182ms/step - accuracy: 0.9193 - loss: 0.2264

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 182ms/step - accuracy: 0.9203 - loss: 0.2247

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 182ms/step - accuracy: 0.9194 - loss: 0.2251

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 182ms/step - accuracy: 0.9197 - loss: 0.2245

52/74 ━━━━━━━━━━━━━━━━━━━━ 4s 182ms/step - accuracy: 0.9195 - loss: 0.2237

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 182ms/step - accuracy: 0.9210 - loss: 0.2211

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 182ms/step - accuracy: 0.9201 - loss: 0.2227

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 181ms/step - accuracy: 0.9199 - loss: 0.2218

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 181ms/step - accuracy: 0.9202 - loss: 0.2229

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 181ms/step - accuracy: 0.9200 - loss: 0.2236

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.9203 - loss: 0.2221

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.9200 - loss: 0.2211

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.9208 - loss: 0.2201

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.9206 - loss: 0.2216

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.9209 - loss: 0.2211

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9216 - loss: 0.2196

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9224 - loss: 0.2195

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9197 - loss: 0.2242

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9200 - loss: 0.2223

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9207 - loss: 0.2207

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9187 - loss: 0.2234

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 180ms/step - accuracy: 0.9185 - loss: 0.2232

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.9192 - loss: 0.2215

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.9199 - loss: 0.2197

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.9197 - loss: 0.2187

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 178ms/step - accuracy: 0.9199 - loss: 0.2183

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 177ms/step - accuracy: 0.9204 - loss: 0.2177

74/74 ━━━━━━━━━━━━━━━━━━━━ 27s 247ms/step - accuracy: 0.9204 - loss: 0.2177 - val_accuracy: 0.8810 - val_loss: 0.3714

Epoch 2/4


 1/74 ━━━━━━━━━━━━━━━━━━━━ 23s 321ms/step - accuracy: 0.9375 - loss: 0.1563

 2/74 ━━━━━━━━━━━━━━━━━━━━ 12s 174ms/step - accuracy: 0.9375 - loss: 0.1778

 3/74 ━━━━━━━━━━━━━━━━━━━━ 12s 181ms/step - accuracy: 0.9375 - loss: 0.1636

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 183ms/step - accuracy: 0.9531 - loss: 0.1364

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.9563 - loss: 0.1317

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.9531 - loss: 0.1364

 7/74 ━━━━━━━━━━━━━━━━━━━━ 12s 184ms/step - accuracy: 0.9420 - loss: 0.1776

 8/74 ━━━━━━━━━━━━━━━━━━━━ 12s 182ms/step - accuracy: 0.9375 - loss: 0.1873

 9/74 ━━━━━━━━━━━━━━━━━━━━ 11s 182ms/step - accuracy: 0.9444 - loss: 0.1732

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 183ms/step - accuracy: 0.9469 - loss: 0.1745

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 183ms/step - accuracy: 0.9432 - loss: 0.1887

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 181ms/step - accuracy: 0.9479 - loss: 0.1805

13/74 ━━━━━━━━━━━━━━━━━━━━ 11s 181ms/step - accuracy: 0.9471 - loss: 0.1757

14/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.9464 - loss: 0.1773

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 180ms/step - accuracy: 0.9479 - loss: 0.1738

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.9473 - loss: 0.1763

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.9467 - loss: 0.1774

18/74 ━━━━━━━━━━━━━━━━━━━━ 10s 181ms/step - accuracy: 0.9479 - loss: 0.1742

19/74 ━━━━━━━━━━━━━━━━━━━━ 10s 182ms/step - accuracy: 0.9457 - loss: 0.1720

20/74 ━━━━━━━━━━━━━━━━━━━━ 9s 183ms/step - accuracy: 0.9469 - loss: 0.1690 

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 183ms/step - accuracy: 0.9479 - loss: 0.1664

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 183ms/step - accuracy: 0.9474 - loss: 0.1665

23/74 ━━━━━━━━━━━━━━━━━━━━ 9s 182ms/step - accuracy: 0.9457 - loss: 0.1660

24/74 ━━━━━━━━━━━━━━━━━━━━ 9s 182ms/step - accuracy: 0.9466 - loss: 0.1623

25/74 ━━━━━━━━━━━━━━━━━━━━ 8s 182ms/step - accuracy: 0.9463 - loss: 0.1620

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 182ms/step - accuracy: 0.9483 - loss: 0.1582

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 183ms/step - accuracy: 0.9479 - loss: 0.1585

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 183ms/step - accuracy: 0.9498 - loss: 0.1563

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 183ms/step - accuracy: 0.9504 - loss: 0.1543

30/74 ━━━━━━━━━━━━━━━━━━━━ 8s 182ms/step - accuracy: 0.9510 - loss: 0.1527

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 182ms/step - accuracy: 0.9516 - loss: 0.1500

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 182ms/step - accuracy: 0.9521 - loss: 0.1502

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 182ms/step - accuracy: 0.9508 - loss: 0.1501

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 182ms/step - accuracy: 0.9513 - loss: 0.1469

35/74 ━━━━━━━━━━━━━━━━━━━━ 7s 181ms/step - accuracy: 0.9518 - loss: 0.1443

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 181ms/step - accuracy: 0.9523 - loss: 0.1425

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 181ms/step - accuracy: 0.9519 - loss: 0.1415

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9498 - loss: 0.1443

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9503 - loss: 0.1441

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 179ms/step - accuracy: 0.9508 - loss: 0.1426

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9497 - loss: 0.1446

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.9509 - loss: 0.1425

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.9513 - loss: 0.1408

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.9503 - loss: 0.1442

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 177ms/step - accuracy: 0.9493 - loss: 0.1447

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.9497 - loss: 0.1442

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.9488 - loss: 0.1463

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 176ms/step - accuracy: 0.9492 - loss: 0.1447

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 175ms/step - accuracy: 0.9471 - loss: 0.1504

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 175ms/step - accuracy: 0.9475 - loss: 0.1503

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 175ms/step - accuracy: 0.9479 - loss: 0.1490

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 175ms/step - accuracy: 0.9483 - loss: 0.1489

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 175ms/step - accuracy: 0.9469 - loss: 0.1511

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 174ms/step - accuracy: 0.9479 - loss: 0.1498

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 174ms/step - accuracy: 0.9483 - loss: 0.1489

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 174ms/step - accuracy: 0.9481 - loss: 0.1493

57/74 ━━━━━━━━━━━━━━━━━━━━ 2s 174ms/step - accuracy: 0.9485 - loss: 0.1489

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 173ms/step - accuracy: 0.9483 - loss: 0.1483

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 174ms/step - accuracy: 0.9492 - loss: 0.1470

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 173ms/step - accuracy: 0.9490 - loss: 0.1475

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 173ms/step - accuracy: 0.9477 - loss: 0.1489

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 173ms/step - accuracy: 0.9476 - loss: 0.1502

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 173ms/step - accuracy: 0.9484 - loss: 0.1494

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 173ms/step - accuracy: 0.9492 - loss: 0.1490

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 173ms/step - accuracy: 0.9495 - loss: 0.1486

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 173ms/step - accuracy: 0.9503 - loss: 0.1470

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 173ms/step - accuracy: 0.9496 - loss: 0.1494

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 173ms/step - accuracy: 0.9499 - loss: 0.1487

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 173ms/step - accuracy: 0.9497 - loss: 0.1486

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 173ms/step - accuracy: 0.9496 - loss: 0.1486

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 173ms/step - accuracy: 0.9494 - loss: 0.1500

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 173ms/step - accuracy: 0.9492 - loss: 0.1504

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 173ms/step - accuracy: 0.9495 - loss: 0.1494

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 171ms/step - accuracy: 0.9489 - loss: 0.1500

74/74 ━━━━━━━━━━━━━━━━━━━━ 15s 206ms/step - accuracy: 0.9489 - loss: 0.1500 - val_accuracy: 0.8724 - val_loss: 0.3870

Epoch 3/4


 1/74 ━━━━━━━━━━━━━━━━━━━━ 21s 297ms/step - accuracy: 0.9062 - loss: 0.1062

 2/74 ━━━━━━━━━━━━━━━━━━━━ 12s 174ms/step - accuracy: 0.8750 - loss: 0.2196

 3/74 ━━━━━━━━━━━━━━━━━━━━ 13s 187ms/step - accuracy: 0.9167 - loss: 0.1662

 4/74 ━━━━━━━━━━━━━━━━━━━━ 12s 185ms/step - accuracy: 0.9297 - loss: 0.1599

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 185ms/step - accuracy: 0.9438 - loss: 0.1390

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 187ms/step - accuracy: 0.9531 - loss: 0.1227

 7/74 ━━━━━━━━━━━━━━━━━━━━ 12s 188ms/step - accuracy: 0.9554 - loss: 0.1179

 8/74 ━━━━━━━━━━━━━━━━━━━━ 12s 195ms/step - accuracy: 0.9531 - loss: 0.1207

 9/74 ━━━━━━━━━━━━━━━━━━━━ 12s 193ms/step - accuracy: 0.9549 - loss: 0.1252

10/74 ━━━━━━━━━━━━━━━━━━━━ 12s 191ms/step - accuracy: 0.9563 - loss: 0.1222

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 190ms/step - accuracy: 0.9574 - loss: 0.1250

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 190ms/step - accuracy: 0.9583 - loss: 0.1295

13/74 ━━━━━━━━━━━━━━━━━━━━ 11s 189ms/step - accuracy: 0.9543 - loss: 0.1326

14/74 ━━━━━━━━━━━━━━━━━━━━ 11s 188ms/step - accuracy: 0.9554 - loss: 0.1346

15/74 ━━━━━━━━━━━━━━━━━━━━ 11s 189ms/step - accuracy: 0.9542 - loss: 0.1353

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 188ms/step - accuracy: 0.9570 - loss: 0.1294

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 188ms/step - accuracy: 0.9559 - loss: 0.1340

18/74 ━━━━━━━━━━━━━━━━━━━━ 10s 188ms/step - accuracy: 0.9566 - loss: 0.1329

19/74 ━━━━━━━━━━━━━━━━━━━━ 10s 187ms/step - accuracy: 0.9556 - loss: 0.1326

20/74 ━━━━━━━━━━━━━━━━━━━━ 10s 186ms/step - accuracy: 0.9563 - loss: 0.1315

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 186ms/step - accuracy: 0.9568 - loss: 0.1393 

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 186ms/step - accuracy: 0.9560 - loss: 0.1391

23/74 ━━━━━━━━━━━━━━━━━━━━ 9s 185ms/step - accuracy: 0.9552 - loss: 0.1398

24/74 ━━━━━━━━━━━━━━━━━━━━ 9s 185ms/step - accuracy: 0.9544 - loss: 0.1405

25/74 ━━━━━━━━━━━━━━━━━━━━ 9s 185ms/step - accuracy: 0.9513 - loss: 0.1441

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 185ms/step - accuracy: 0.9531 - loss: 0.1417

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 184ms/step - accuracy: 0.9537 - loss: 0.1421

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 184ms/step - accuracy: 0.9531 - loss: 0.1410

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 184ms/step - accuracy: 0.9537 - loss: 0.1411

30/74 ━━━━━━━━━━━━━━━━━━━━ 8s 184ms/step - accuracy: 0.9531 - loss: 0.1426

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9536 - loss: 0.1429

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 183ms/step - accuracy: 0.9541 - loss: 0.1427

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 182ms/step - accuracy: 0.9545 - loss: 0.1403

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 181ms/step - accuracy: 0.9550 - loss: 0.1401

35/74 ━━━━━━━━━━━━━━━━━━━━ 7s 181ms/step - accuracy: 0.9545 - loss: 0.1397

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 181ms/step - accuracy: 0.9540 - loss: 0.1418

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9535 - loss: 0.1441

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9539 - loss: 0.1425

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9535 - loss: 0.1419

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9547 - loss: 0.1408

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9550 - loss: 0.1405

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9546 - loss: 0.1405

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9535 - loss: 0.1415

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9538 - loss: 0.1404

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9542 - loss: 0.1398

46/74 ━━━━━━━━━━━━━━━━━━━━ 5s 179ms/step - accuracy: 0.9538 - loss: 0.1413

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.9548 - loss: 0.1391

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.9557 - loss: 0.1372

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.9560 - loss: 0.1364

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.9556 - loss: 0.1378

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 179ms/step - accuracy: 0.9547 - loss: 0.1398

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.9555 - loss: 0.1384

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 179ms/step - accuracy: 0.9564 - loss: 0.1376

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 180ms/step - accuracy: 0.9560 - loss: 0.1379

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 180ms/step - accuracy: 0.9563 - loss: 0.1365

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 180ms/step - accuracy: 0.9570 - loss: 0.1349

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 181ms/step - accuracy: 0.9561 - loss: 0.1369

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 181ms/step - accuracy: 0.9569 - loss: 0.1358

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 181ms/step - accuracy: 0.9571 - loss: 0.1360

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 181ms/step - accuracy: 0.9578 - loss: 0.1347

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 181ms/step - accuracy: 0.9580 - loss: 0.1338

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 181ms/step - accuracy: 0.9582 - loss: 0.1329

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9583 - loss: 0.1324

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9580 - loss: 0.1332

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9582 - loss: 0.1331

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9588 - loss: 0.1324

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 180ms/step - accuracy: 0.9585 - loss: 0.1319

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 181ms/step - accuracy: 0.9582 - loss: 0.1325

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 181ms/step - accuracy: 0.9588 - loss: 0.1318

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 181ms/step - accuracy: 0.9589 - loss: 0.1307

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 181ms/step - accuracy: 0.9591 - loss: 0.1297

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 180ms/step - accuracy: 0.9592 - loss: 0.1291

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 180ms/step - accuracy: 0.9580 - loss: 0.1309

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 179ms/step - accuracy: 0.9583 - loss: 0.1306

74/74 ━━━━━━━━━━━━━━━━━━━━ 16s 213ms/step - accuracy: 0.9583 - loss: 0.1306 - val_accuracy: 0.8861 - val_loss: 0.3794

Epoch 4/4


 1/74 ━━━━━━━━━━━━━━━━━━━━ 18s 247ms/step - accuracy: 0.9062 - loss: 0.3132

 2/74 ━━━━━━━━━━━━━━━━━━━━ 16s 233ms/step - accuracy: 0.9375 - loss: 0.1993

 3/74 ━━━━━━━━━━━━━━━━━━━━ 14s 205ms/step - accuracy: 0.9479 - loss: 0.1571

 4/74 ━━━━━━━━━━━━━━━━━━━━ 13s 192ms/step - accuracy: 0.9609 - loss: 0.1274

 5/74 ━━━━━━━━━━━━━━━━━━━━ 12s 186ms/step - accuracy: 0.9563 - loss: 0.1294

 6/74 ━━━━━━━━━━━━━━━━━━━━ 12s 183ms/step - accuracy: 0.9583 - loss: 0.1220

 7/74 ━━━━━━━━━━━━━━━━━━━━ 12s 180ms/step - accuracy: 0.9509 - loss: 0.1247

 8/74 ━━━━━━━━━━━━━━━━━━━━ 11s 178ms/step - accuracy: 0.9570 - loss: 0.1129

 9/74 ━━━━━━━━━━━━━━━━━━━━ 11s 178ms/step - accuracy: 0.9583 - loss: 0.1178

10/74 ━━━━━━━━━━━━━━━━━━━━ 11s 177ms/step - accuracy: 0.9594 - loss: 0.1101

11/74 ━━━━━━━━━━━━━━━━━━━━ 11s 178ms/step - accuracy: 0.9602 - loss: 0.1236

12/74 ━━━━━━━━━━━━━━━━━━━━ 11s 178ms/step - accuracy: 0.9609 - loss: 0.1223

13/74 ━━━━━━━━━━━━━━━━━━━━ 10s 177ms/step - accuracy: 0.9639 - loss: 0.1183

14/74 ━━━━━━━━━━━━━━━━━━━━ 10s 178ms/step - accuracy: 0.9621 - loss: 0.1227

15/74 ━━━━━━━━━━━━━━━━━━━━ 10s 179ms/step - accuracy: 0.9604 - loss: 0.1239

16/74 ━━━━━━━━━━━━━━━━━━━━ 10s 178ms/step - accuracy: 0.9551 - loss: 0.1305

17/74 ━━━━━━━━━━━━━━━━━━━━ 10s 178ms/step - accuracy: 0.9577 - loss: 0.1269

18/74 ━━━━━━━━━━━━━━━━━━━━ 10s 179ms/step - accuracy: 0.9514 - loss: 0.1332

19/74 ━━━━━━━━━━━━━━━━━━━━ 9s 179ms/step - accuracy: 0.9507 - loss: 0.1350 

20/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.9516 - loss: 0.1329

21/74 ━━━━━━━━━━━━━━━━━━━━ 9s 180ms/step - accuracy: 0.9539 - loss: 0.1287

22/74 ━━━━━━━━━━━━━━━━━━━━ 9s 179ms/step - accuracy: 0.9560 - loss: 0.1276

23/74 ━━━━━━━━━━━━━━━━━━━━ 9s 179ms/step - accuracy: 0.9579 - loss: 0.1246

24/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.9596 - loss: 0.1218

25/74 ━━━━━━━━━━━━━━━━━━━━ 8s 179ms/step - accuracy: 0.9600 - loss: 0.1227

26/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.9591 - loss: 0.1214

27/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.9606 - loss: 0.1192

28/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.9609 - loss: 0.1169

29/74 ━━━━━━━━━━━━━━━━━━━━ 8s 180ms/step - accuracy: 0.9623 - loss: 0.1151

30/74 ━━━━━━━━━━━━━━━━━━━━ 7s 180ms/step - accuracy: 0.9604 - loss: 0.1189

31/74 ━━━━━━━━━━━━━━━━━━━━ 7s 180ms/step - accuracy: 0.9617 - loss: 0.1173

32/74 ━━━━━━━━━━━━━━━━━━━━ 7s 180ms/step - accuracy: 0.9619 - loss: 0.1169

33/74 ━━━━━━━━━━━━━━━━━━━━ 7s 180ms/step - accuracy: 0.9631 - loss: 0.1140

34/74 ━━━━━━━━━━━━━━━━━━━━ 7s 180ms/step - accuracy: 0.9642 - loss: 0.1116

35/74 ━━━━━━━━━━━━━━━━━━━━ 7s 180ms/step - accuracy: 0.9643 - loss: 0.1109

36/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9653 - loss: 0.1093

37/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9654 - loss: 0.1083

38/74 ━━━━━━━━━━━━━━━━━━━━ 6s 180ms/step - accuracy: 0.9655 - loss: 0.1080

39/74 ━━━━━━━━━━━━━━━━━━━━ 6s 179ms/step - accuracy: 0.9663 - loss: 0.1063

40/74 ━━━━━━━━━━━━━━━━━━━━ 6s 179ms/step - accuracy: 0.9672 - loss: 0.1046

41/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.9680 - loss: 0.1037

42/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.9673 - loss: 0.1053

43/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.9680 - loss: 0.1045

44/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.9688 - loss: 0.1027

45/74 ━━━━━━━━━━━━━━━━━━━━ 5s 178ms/step - accuracy: 0.9694 - loss: 0.1015

46/74 ━━━━━━━━━━━━━━━━━━━━ 4s 178ms/step - accuracy: 0.9694 - loss: 0.1008

47/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.9701 - loss: 0.1001

48/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.9688 - loss: 0.1019

49/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.9694 - loss: 0.1011

50/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.9694 - loss: 0.1014

51/74 ━━━━━━━━━━━━━━━━━━━━ 4s 177ms/step - accuracy: 0.9694 - loss: 0.1027

52/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.9694 - loss: 0.1020

53/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.9693 - loss: 0.1020

54/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.9693 - loss: 0.1022

55/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.9699 - loss: 0.1015

56/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.9699 - loss: 0.1021

57/74 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.9704 - loss: 0.1006

58/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.9704 - loss: 0.1009

59/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.9709 - loss: 0.1014

60/74 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.9714 - loss: 0.1002

61/74 ━━━━━━━━━━━━━━━━━━━━ 2s 178ms/step - accuracy: 0.9708 - loss: 0.1005

62/74 ━━━━━━━━━━━━━━━━━━━━ 2s 178ms/step - accuracy: 0.9708 - loss: 0.1004

63/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.9712 - loss: 0.0993

64/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.9717 - loss: 0.0990

65/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.9721 - loss: 0.0985

66/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.9721 - loss: 0.0977

67/74 ━━━━━━━━━━━━━━━━━━━━ 1s 177ms/step - accuracy: 0.9725 - loss: 0.0972

68/74 ━━━━━━━━━━━━━━━━━━━━ 1s 176ms/step - accuracy: 0.9724 - loss: 0.0973

69/74 ━━━━━━━━━━━━━━━━━━━━ 0s 176ms/step - accuracy: 0.9715 - loss: 0.0979

70/74 ━━━━━━━━━━━━━━━━━━━━ 0s 175ms/step - accuracy: 0.9714 - loss: 0.0976

71/74 ━━━━━━━━━━━━━━━━━━━━ 0s 174ms/step - accuracy: 0.9718 - loss: 0.0968

72/74 ━━━━━━━━━━━━━━━━━━━━ 0s 174ms/step - accuracy: 0.9714 - loss: 0.0980

73/74 ━━━━━━━━━━━━━━━━━━━━ 0s 174ms/step - accuracy: 0.9717 - loss: 0.0974

74/74 ━━━━━━━━━━━━━━━━━━━━ 0s 173ms/step - accuracy: 0.9715 - loss: 0.0974

74/74 ━━━━━━━━━━━━━━━━━━━━ 16s 209ms/step - accuracy: 0.9715 - loss: 0.0974 - val_accuracy: 0.8810 - val_loss: 0.3918

Tiempo C (fase 2): 74.3s  acumulado B+C: 150.6s

modelo                  C fine-tuning

epocas_corridas                     4

mejor_epoca_val_loss                1

min_val_loss                 0.371423

val_loss_final               0.391796

train_loss_en_mejor          0.217682

train_loss_final             0.097421

delta_val_tras_mejor         0.020373

gap_loss_mejor               0.153741

gap_loss_final               0.294375

train_acc_mejor              0.920358

val_acc_mejor                0.880952

train_acc_final              0.971465

val_acc_final                0.880952

gap_acc_mejor                0.039405

gap_acc_final                0.090513



LECTURA

La mejor val_loss no es la última época (1 de 4). Si restore_best_weights=True, el modelo guardado no es el del último paso.

Gap train-val de accuracy notable: posible sobreajuste o desajuste de dificultad.

TEST C  loss=0.3597 acc=0.8665

15. Curvas concatenadas: dos fases, un relato

La fase 1 (B) y la fase 2 (C) no son dos modelos morales distintos: son un proceso de afianzamiento. El corte vertical marca el cambio de hipótesis (congelar → adaptar).

h1, h2 = hist_b.history, hist_c.history
concat = {k: list(h1[k]) + list(h2[k]) for k in ["loss", "val_loss", "accuracy", "val_accuracy"]}
ep = range(1, len(concat["loss"]) + 1)
corte = len(h1["loss"]) + 0.5
fig, axes = plt.subplots(1, 2, figsize=(11, 3.6))
axes[0].plot(ep, concat["loss"], label="train")
axes[0].plot(ep, concat["val_loss"], label="val")
axes[0].axvline(corte, ls="--", color="0.3", label="inicio fine-tuning")
axes[0].set_title("Pérdida concatenada")
axes[0].legend()
axes[1].plot(ep, concat["accuracy"], label="train")
axes[1].plot(ep, concat["val_accuracy"], label="val")
axes[1].axvline(corte, ls="--", color="0.3")
axes[1].set_title("Accuracy concatenada")
axes[1].legend()
plt.tight_layout()
plt.show()
print("Si val_loss baja tras el corte, adaptar aportó. Si sube en seco, el LR o el descongelado fueron agresivos.")

Si val_loss baja tras el corte, adaptar aportó. Si sube en seco, el LR o el descongelado fueron agresivos.

16. Tabla final A / B / C y selección por validación

Test no elige al campeón. Primero se mira val (ya resumida en el diagnóstico); test confirma.

va_a = modelo_a.evaluate(val_a, verbose=0)[1]
va_b = modelo_b.evaluate(val_m, verbose=0)[1]
va_c = modelo_c.evaluate(val_m, verbose=0)[1]
df = pd.DataFrame([
    {"modelo": "A cero", "val_acc": va_a, "test_acc": acc_a, "test_loss": loss_a, "tiempo_s": tiempo_a},
    {"modelo": "B congelada", "val_acc": va_b, "test_acc": acc_b, "test_loss": loss_b, "tiempo_s": tiempo_b},
    {"modelo": "C fine-tuning", "val_acc": va_c, "test_acc": acc_c, "test_loss": loss_c, "tiempo_s": tiempo_b + tiempo_c},
])
print(df.to_string(index=False, float_format=lambda v: f"{v:.4f}"))
ganador = df.loc[df["val_acc"].idxmax(), "modelo"]
print("Seleccionado por VAL:", ganador)
print("Su test_acc (confirmación, no criterio):", float(df.loc[df["modelo"]==ganador, "test_acc"].iloc[0]))
       modelo  val_acc  test_acc  test_loss  tiempo_s
       A cero   0.5833    0.6008     0.9933   90.8461
  B congelada   0.8724    0.8610     0.3725   76.3054
C fine-tuning   0.8810    0.8665     0.3597  150.5701
Seleccionado por VAL: C fine-tuning
Su test_acc (confirmación, no criterio): 0.8664849996566772

Interpretación

Un C que gana en val y pierde en test es un candidato sobre-elegido. Un B que empata a C en val y tarda menos es, en producción, una decisión racional aunque C «se vea más moderno».

17. Reporte por especie del modelo seleccionado

El accuracy del ganador no cierra el caso. Hace falta F1 por clase: un vivero que confunde roses con tulips no se consuela con 0.85 global.

def etiquetas_ds(modelo, ds):
    ys, ps = [], []
    for xb, yb in ds:
        pr = modelo.predict(xb, verbose=0)
        ys.append(yb.numpy())
        ps.append(pr)
    y = np.concatenate(ys)
    p = np.concatenate(ps)
    return y, p, p.argmax(1)

modelo_sel = {"A cero": modelo_a, "B congelada": modelo_b, "C fine-tuning": modelo_c}[ganador]
ds_sel = test_a if ganador == "A cero" else test_m
y_true, probs_sel, y_hat = etiquetas_ds(modelo_sel, ds_sel)
informe_clasificacion(y_true, y_hat, clases, f"TEST — {ganador}")
TEST — C fine-tuning
              precision    recall  f1-score   support

       daisy     0.8810    0.8740    0.8775       127
   dandelion     0.8723    0.9162    0.8937       179
       roses     0.8966    0.8125    0.8525       128
  sunflowers     0.8872    0.8429    0.8645       140
      tulips     0.8129    0.8688    0.8399       160

    accuracy                         0.8665       734
   macro avg     0.8700    0.8629    0.8656       734
weighted avg     0.8679    0.8665    0.8664       734

Clases ordenadas por F1 (las de abajo son las más débiles):
     clase  precision  recall     f1  soporte
    tulips     0.8129  0.8688 0.8399      160
     roses     0.8966  0.8125 0.8525      128
sunflowers     0.8872  0.8429 0.8645      140
     daisy     0.8810  0.8740 0.8775      127
 dandelion     0.8723  0.9162 0.8937      179
clase precision recall f1 soporte
4 tulips 0.812865 0.868750 0.839879 160
2 roses 0.896552 0.812500 0.852459 128
3 sunflowers 0.887218 0.842857 0.864469 140
0 daisy 0.880952 0.874016 0.877470 127
1 dandelion 0.872340 0.916201 0.893733 179
# recuperar algunas imágenes del test para errores
imgs = []
for p, y in zip(r_te, yte_f):
    im = tf.image.decode_jpeg(tf.io.read_file(p), channels=3)
    im = tf.image.resize(im, [IMG_SIZE, IMG_SIZE]) / 255.0
    imgs.append(im.numpy())
imgs = np.stack(imgs)[: len(y_true)]
_ = matriz_y_errores(y_true, y_hat, clases, imgs, probs_sel, k=8)

Interpretación de errores de alta confianza

Un fallo con softmax 0.96 no es un empate: el modelo está seguro y está mal. Esos casos suelen ser fondo, recorte o especies que ImageNet tampoco separaba bien. No se «explica» el error con el heatmap aquí; se cuenta y se prioriza.

18. ¿Fallan A y el transferido en las mismas fotos?

Si los errores coinciden, ambas estrategias tropiezan con el mismo límite del dato. Si no, la transferencia cambia qué se equivoca, no solo cuánto.

y_a, _, hat_a = etiquetas_ds(modelo_a, test_a)
y_t, _, hat_t = etiquetas_ds(modelo_sel if ganador != "A cero" else modelo_b, test_m)
# alinear por índice de r_te (mismo orden)
ok = len(y_a) == len(y_t)
print("mismo N test:", ok, len(y_a))
if ok:
    ea = hat_a != y_a
    et = hat_t != y_t
    print(f"errores A: {ea.sum()}  transferido: {et.sum()}  intersección: {(ea & et).sum()}")
    print(f"solo A: {(ea & ~et).sum()}  solo transferido: {(~ea & et).sum()}")
    print("Si la intersección es alta, el cuello es el dato; si es baja, cambia el tipo de fallo.")
mismo N test: True 734
errores A: 293  transferido: 98  intersección: 69
solo A: 224  solo transferido: 29
Si la intersección es alta, el cuello es el dato; si es baja, cambia el tipo de fallo.

19. Cuando la transferencia no aporta

Dominio lejano (radiografía vs ImageNet), etiquetas muy finas, o una cabeza que no puede leer ((x)). El resultado A > B es un resultado, no un fracaso del artículo.

20. Residuales: por qué no solo apilar

Un bloque residual suma la entrada a la salida de unas convoluciones. Eso estabiliza el gradiente en redes profundas. No entrenamos ResNet-50 completa: inspeccionamos un Add() mínimo y el recuento de parámetros de ResNet50 preentrenada.

inp = tf.keras.Input((16, 16, 16))
x = tf.keras.layers.Conv2D(16, 3, padding="same", activation="relu")(inp)
x = tf.keras.layers.Conv2D(16, 3, padding="same")(x)
y = tf.keras.layers.Add()([inp, x])
y = tf.keras.layers.Activation("relu")(y)
mini = tf.keras.Model(inp, y, name="residual_minimo")
mini.summary()
Model: "residual_minimo"
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type)        ┃ Output Shape      ┃    Param # ┃ Connected to      ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩
│ input_layer_7       │ (None, 16, 16,    │          0 │ -                 │
│ (InputLayer)        │ 16)               │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ conv2d_5 (Conv2D)   │ (None, 16, 16,    │      2,320 │ input_layer_7[0]… │
│                     │ 16)               │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ conv2d_6 (Conv2D)   │ (None, 16, 16,    │      2,320 │ conv2d_5[0][0]    │
│                     │ 16)               │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ add (Add)           │ (None, 16, 16,    │          0 │ input_layer_7[0]… │
│                     │ 16)               │            │ conv2d_6[0][0]    │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ activation          │ (None, 16, 16,    │          0 │ add[0][0]         │
│ (Activation)        │ 16)               │            │                   │
└─────────────────────┴───────────────────┴────────────┴───────────────────┘
 Total params: 4,640 (18.12 KB)
 Trainable params: 4,640 (18.12 KB)
 Non-trainable params: 0 (0.00 B)
from tensorflow.keras.applications import ResNet50
r50 = ResNet50(include_top=False, weights="imagenet", input_shape=(128, 128, 3))
print("ResNet50 sin top: capas", len(r50.layers), "params", int(r50.count_params()))
print("No se entrena en este artículo; el número explica el costo de 'usar ResNet' en CPU.")
del r50
ResNet50 sin top: capas 175 params 23587712
No se entrena en este artículo; el número explica el costo de 'usar ResNet' en CPU.

Idea clave

Elegir ResNet o MobileNet no es estética. Es un presupuesto de memoria, latencia y riesgo de sobreajuste en nuestro N.

21. Caso C — Lectura comparada de tres informes

Reunimos empaques (CIFAR-4) y flores (A/B/C) en una sola narrativa de decisión.

print("PROXY EMPAQUES (4 SKU)")
print(f"  test_acc={te_acc:.4f}  vs azar 0.25")
print("FLORES")
print(df.to_string(index=False, float_format=lambda v: f"{v:.4f}"))
print()
print("DECISIÓN TIPO INFORME")
print("- Empaques: el baseline dice si hay señal antes de comprar un backbone.")
print("- Flores: se elige por val y se confirma en test; el tiempo entra al acta.")
print("- Fine-tuning se justifica si, tras el corte, val_loss baja sin disparar el gap.")
PROXY EMPAQUES (4 SKU)
  test_acc=0.7585  vs azar 0.25
FLORES
       modelo  val_acc  test_acc  test_loss  tiempo_s
       A cero   0.5833    0.6008     0.9933   90.8461
  B congelada   0.8724    0.8610     0.3725   76.3054
C fine-tuning   0.8810    0.8665     0.3597  150.5701

DECISIÓN TIPO INFORME
- Empaques: el baseline dice si hay señal antes de comprar un backbone.
- Flores: se elige por val y se confirma en test; el tiempo entra al acta.
- Fine-tuning se justifica si, tras el corte, val_loss baja sin disparar el gap.

22. Precisión, recall y el costo de un falso SKU

En planta, un falso positivo (decir «auto» cuando era «avión») no cuesta lo mismo que un falso negativo. El classification_report ya separa ambas; el negocio elige el umbral. El accuracy no.

print("EMPAQUES — pares precision/recall")
print(classification_report(y_te, pred_qc, target_names=SKU, digits=3, zero_division=0))
print("Si una clase tiene recall alto y precision baja, el modelo la 've por todos lados'.")
print("Si precision alta y recall bajo, es conservador: pierde unidades buenas.")
EMPAQUES — pares precision/recall
              precision    recall  f1-score   support

       avion      0.688     0.865     0.767       488
        auto      0.825     0.944     0.881       504
         ave      0.831     0.498     0.623       512
        gato      0.724     0.734     0.729       496

    accuracy                          0.758      2000
   macro avg      0.767     0.760     0.750      2000
weighted avg      0.768     0.758     0.749      2000

Si una clase tiene recall alto y precision baja, el modelo la 've por todos lados'.
Si precision alta y recall bajo, es conservador: pierde unidades buenas.

23. Learning rate como palanca de afianzamiento

La cabeza se entrena a 1e-3; el fine-tuning a 1e-5. No son números sagrados: son órdenes de magnitud. Un LR de cabeza en la fase 2 suele borrar lo que ImageNet ya había pagado.

Idea clave

Afianzar no es entrenar más épocas del mismo fit. Es cambiar qué pesos se mueven y cuánto se les permite moverse, y volver a leer val_loss.

24. Amenazas a la validez

  • Flowers y CIFAR no son una línea de producción.
  • 128 px aplasta detalle floral.
  • EarlyStopping y una semilla: el ranking puede moverse.
  • MobileNet preentrenado a 224; nosotros forzamos 128.
  • El proxy de empaques no tiene iluminación industrial.

25. El acta en una página

Antes de cerrar, el informe mínimo que un lector debería poder reconstruir: (1) mejor época de cada fit, (2) test del ganador por val, (3) F1 de la clase peor, (4) tiempo y parámetros entrenables. Sin esos cuatro renglones, Transfer Learning queda en eslogan.

26. Sensibilidad grosera del learning rate de fine-tuning

El 1e-5 no es dogma. Un orden de magnitud arriba suele borrar filtros; uno abajo apenas mueve val_loss. Aquí no reentrenamos una grilla: leemos el history de C y preguntamos si la fase 2 realmente cambió la pendiente de validación.

s1, s2 = series_history(hist_b), series_history(hist_c)
pend_b = float(s1["val_loss"][-1] - s1["val_loss"][0])
pend_c = float(s2["val_loss"][-1] - s2["val_loss"][0])
print(f"Δ val_loss fase B (cabeza): {pend_b:+.4f}")
print(f"Δ val_loss fase C (fine-tuning): {pend_c:+.4f}")
print("Si C no baja (o sube), el LR o el descongelado no afianzaron: se informa, no se esconde.")
Δ val_loss fase B (cabeza): -0.1304
Δ val_loss fase C (fine-tuning): +0.0204
Si C no baja (o sube), el LR o el descongelado no afianzaron: se informa, no se esconde.

Interpretación

Una fase 2 plana no «falla el artículo». Falla la hipótesis de que adaptar la base, con este LR y este N, aportaba. El acta debe poder concluir eso.

27. Costo de parámetros por punto de test

A veces B empata a C en test y entrena dos órdenes de magnitud menos pesos. Esa razón de «puntos de accuracy por millón de parámetros entrenables» es una métrica de afianzamiento, no de vanity.

def puntos_por_millon(acc, entrenables):
    return acc / max(entrenables / 1e6, 1e-9)

print("test_acc / millón de params entrenables")
for nom, acc, m in [
    ("A", acc_a, modelo_a),
    ("B", acc_b, modelo_b),
    ("C", acc_c, modelo_c),
]:
    ent = int(sum(np.prod(w.shape) for w in m.trainable_weights))
    print(f"  {nom}: acc={acc:.4f}  entrenables={ent:,}  razón={puntos_por_millon(acc, ent):.3f}")
test_acc / millón de params entrenables
  A: acc=0.6008  entrenables=65,285  razón=9.203
  B: acc=0.8610  entrenables=6,405  razón=134.432
  C: acc=0.8665  entrenables=1,517,125  razón=0.571

28. Cierre

💬 ¿Te sirvió?Deja en los comentarios una duda o un caso donde aplicarías esto —respondo todos. Sígueme para no perderte el próximo artículo de la serie ycomparte con alguien que esté aprendiendo deep learning.👉 El código completo está disponible para ejecutar directamente.