TP-reseaux-profond/TP4.ipynb
2023-06-22 20:35:38 +02:00

2174 lines
309 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "XMMppWbnG3dN"
},
"source": [
"\n",
"# Estimation de posture dans une image\n",
"\n",
"Pour ce TP ainsi que le suivant, nous allons traiter le problème de la détection du \"squelette\" d'un humain dans une image, tel qu'illustré dans la figure ci-dessous.\n",
"\n",
"![Texte alternatif…](https://drive.google.com/uc?id=1HpyLwzwkFdyQ6APoGZQJL7f837JCHNkh)\n",
"\n",
"Nous allons pour ce faire utiliser le [Leeds Sport Pose Dataset](https://sam.johnson.io/research/lspet.html) qui introduit 10000 images présentant des sportifs dans diverses situations, augmentées d'une annotation manuelle du squelette.\n",
"\n",
"À chaque image est associée une matrice de taille 3x14, correspondant aux coordonnées dans l'image des 14 joints du squelette de la personne décrite dans l'image. La 3e dimension désigne la visibilité du joint (1 s'il est visible, 0 s'il est occulté)\n",
"\n",
"Ces joints sont, dans l'ordre :\n",
"* Cheville droite\n",
"* Genou droit\n",
"* Hanche droite\n",
"* Hanche gauche\n",
"* Genou gauche\n",
"* Cheville gauche\n",
"* Poignet droit\n",
"* Coude droit\n",
"* Épaule droite\n",
"* Épaule gauche\n",
"* Coude gauche\n",
"* Poignet gauche\n",
"* Cou\n",
"* Sommet du crâne\n",
"\n",
"Pour un rappel des notions vues en cours sur ce sujet, vous pouvez regarder la vidéo ci-dessous :\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe\n",
" width=\"640\"\n",
" height=\"360\"\n",
" src=\"https://video.polymny.studio/?v=84ace9c1-f460-4375-9b33-917c3ff82c83/\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" \n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.IFrame at 0x7f1618711910>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import IFrame\n",
"IFrame(\"https://video.polymny.studio/?v=84ace9c1-f460-4375-9b33-917c3ff82c83/\", width=640, height=360)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Méthodologie \n",
"\n",
"Pour résoudre ce problème, nous allons suivre une méthodologie similaire à celle présentée dans le 2e cours, et rappelée sur la figure suivante : \n",
"\n",
"![Méthodologie de développement d'un algorithme d'apprentissage profond](https://drive.google.com/uc?id=195pkcjca4r_g86KDt2LCe0QdQsMC6iba)\n",
"\n",
"Ainsi nous allons commencer par une modélisation simple du problème, construire un modèle et l'améliorer pas à pas et évaluer sa performance.\n",
"Dans un second temps, nous modifierons la modélisation du problème, et donc l'architecture utilisée, afin d'améliorer les résultats.\n",
"\n",
"Pour chacune de ces deux étapes, je vous suggère de suivre la démarche suivante : \n",
"\n",
"- Simplifier le problème en traitant 10 imagettes (par exemple de dimension $64 \\times 64$) et construire un réseau qui surapprend parfaitement (qui diminue la perte jusqu'à quasiment 0)\n",
"- Ajouter des images (~1000) et recalibrer le réseau pour à nouveau, obtenir un sur-apprentissage\n",
"- Commencer à corriger le sur-apprentissage en ajoutant de la régularisation\n",
"- Et enfin, utiliser l'ensemble de la base de données pour diminuer le sur-apprentissage au maximum"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qjqZNAX2CVi1"
},
"source": [
"# Régression de la position des joints"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WFXG64qtCaCb"
},
"source": [
"Dans un premier temps, et comme vu en cours, nous allons nous inspirer de l'algorithme DeepPose (**[Toshev et al.] DeepPose : Human Pose Estimation via Deep Neural Networks**) et formuler le problème comme une régression de la position (x,y) des joints dans l'espace de l'image."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "z3mdNJJXc6Wy"
},
"source": [
"Commencez par télécharger la base de données sur Github\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "3IVjmLKWRDag",
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fatal: le chemin de destination 'lsp' existe déjà et n'est pas un répertoire vide.\n"
]
}
],
"source": [
"!git clone https://github.com/axelcarlier/lsp.git"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_-EFIogzdCc9"
},
"source": [
"Le bloc suivant contient une fonction qui permet de charger les images de la base de données dans les variables x et y. Par défaut les images sont redimensionnées en taille 128$\\times$128 et la base de données contient 1000 images. Pour commencer et vous permettre de travailler plus efficacement, **je vous suggère très fortement de diminuer la dimension des images** (par exemple 64$\\times$64) **et de ne travailler que sur un ensemble réduit d'images** (par exemple, 10). \n",
"\n",
"\n",
"N'oubliez pas également de diviser les données en images de test et/ou de validation pour obtenir des informations sur le sur-apprentissage éventuel. \n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "quOHEF__pf36",
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"data": {
"text/plain": [
"((10, 64, 64, 3), (10, 3, 14))"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import PIL\n",
"from PIL import Image\n",
"import os, sys\n",
"from scipy.io import loadmat\n",
"\n",
"# Cette fonction permettra plus tard de charger plus ou moins d'images (en modifiant le paramètre num_images)\n",
"# et de modifier la dimension d'entrée\n",
"def load_data(image_size=128, num_images=1000):\n",
"\n",
" path = \"./lsp/images/\"\n",
" dirs = sorted(os.listdir(path))\n",
"\n",
" x = np.zeros((min(num_images,len(dirs)),image_size,image_size,3))\n",
" y = np.zeros((min(num_images,len(dirs)), 3, 14))\n",
" \n",
" #Chargement des joints \n",
" mat_contents = loadmat('./lsp/joints.mat')\n",
" joints = mat_contents['joints']\n",
"\n",
" # Chargement des images, qui sont rangées dans lsp/images\n",
" for i in range(min(num_images,len(dirs))):\n",
" item = dirs[i]\n",
" if os.path.isfile(path+item):\n",
" img = Image.open(path+item)\n",
" # Redimensionnement et sauvegarde des joints\n",
" y[i, 0] = joints[:,0,i]*image_size/img.size[0]\n",
" y[i, 1] = joints[:,1,i]*image_size/img.size[1]\n",
" y[i, 2] = joints[:,2,i]\n",
" # Redimensionnement et sauvegarde des images \n",
" img = img.resize((image_size,image_size))\n",
" x[i] = np.asarray(img)\n",
"\n",
"\n",
" return x, y\n",
"\n",
"# Chargement de seulement 10 images, de taille 64x64\n",
"x, y = load_data(image_size=64, num_images=10) \n",
"x.shape, y.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "zRc0B4oxe6h_",
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"labels = {0: 'Cheville droite',\n",
" 1: 'Genou droit',\n",
" 2: 'Hanche droite',\n",
" 3: 'Hanche gauche',\n",
" 4: 'Genou gauche',\n",
" 5: 'Cheville gauche',\n",
" 6: 'Poignet droit',\n",
" 7: 'Coude droit',\n",
" 8: 'Épaule droite',\n",
" 9: 'Épaule gauche',\n",
" 10: 'Coude gauche',\n",
" 11: 'Poignet gauche',\n",
" 12: 'Cou',\n",
" 13: 'Sommet du crâne'}"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "meezS1y4G8QO"
},
"source": [
"La fonction suivante vous permet de visualiser les données. Vous vous rendrez compte que certaines données sont manquantes ! En effet quand des joints sont occultés dans les images, des valeurs de position aberrantes (négatives) sont indiquées. Dans ce cas, nous n'afficherons pas les articulations."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "JvcqdQIZdCYk",
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 360x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# Fonction d'affichage d'une image et de son label associé\n",
"def print_data(x,y,i):\n",
" \n",
" if y.shape[1] < 3:\n",
" y_new = np.ones((y.shape[0], 3, y.shape[2]))\n",
" y_new[:,0:2,:] = y\n",
" y = y_new\n",
" \n",
" plt.figure(figsize=(5, 5))\n",
" plt.imshow(x[i]/255)\n",
" for j in range(0,14):\n",
" if y[i, 2, j] == 1:\n",
" plt.scatter(y[i,0,j],y[i,1,j],label=labels.get(j))\n",
"\n",
" # Jambe droite \n",
" if (y[i, 2, 0] + y[i, 2, 1] == 2):\n",
" plt.plot(y[i,0,0:2],y[i,1,0:2],'b')\n",
" # Cuisse droite \n",
" if (y[i, 2, 1] + y[i, 2, 2] == 2):\n",
" plt.plot(y[i,0,1:3],y[i,1,1:3],'b')\n",
" # Bassin \n",
" if (y[i, 2, 2] + y[i, 2, 3] == 2):\n",
" plt.plot(y[i,0,2:4],y[i,1,2:4],'b')\n",
" # Cuisse gauche \n",
" if (y[i, 2, 3] + y[i, 2, 4] == 2):\n",
" plt.plot(y[i,0,3:5],y[i,1,3:5],'b')\n",
" # Jambe gauche \n",
" if (y[i, 2, 4] + y[i, 2, 5] == 2):\n",
" plt.plot(y[i,0,4:6],y[i,1,4:6],'b')\n",
" # Avant-bras droit \n",
" if (y[i, 2, 6] + y[i, 2, 7] == 2):\n",
" plt.plot(y[i,0,6:8],y[i,1,6:8],'b')\n",
" # Bras droit \n",
" if (y[i, 2, 7] + y[i, 2, 8] == 2):\n",
" plt.plot(y[i,0,7:9],y[i,1,7:9],'b')\n",
" # Bras gauche \n",
" if (y[i, 2, 9] + y[i, 2, 10] == 2):\n",
" plt.plot(y[i,0,9:11],y[i,1,9:11],'b')\n",
" # Avant-bras gauche \n",
" if (y[i, 2, 10] + y[i, 2, 11] == 2):\n",
" plt.plot(y[i,0,10:12],y[i,1,10:12],'b') \n",
" # Buste droit\n",
" x1=[y[i,0,2],y[i,0,12]]\n",
" y1=[y[i,1,2],y[i,1,12]]\n",
" if (y[i, 2, 2] + y[i, 2, 12] == 2):\n",
" plt.plot(x1, y1,'b')\n",
" # Buste gauche\n",
" x1=[y[i,0,3],y[i,0,12]]\n",
" y1=[y[i,1,3],y[i,1,12]]\n",
" if (y[i, 2, 3] + y[i, 2, 12] == 2):\n",
" plt.plot(x1, y1,'b')\n",
" # Omoplate droite\n",
" x1=[y[i,0,8],y[i,0,12]]\n",
" y1=[y[i,1,8],y[i,1,12]]\n",
" if (y[i, 2, 8] + y[i, 2, 12] == 2):\n",
" plt.plot(x1, y1,'b')\n",
" # Omoplate gauche\n",
" x1=[y[i,0,9],y[i,0,12]]\n",
" y1=[y[i,1,9],y[i,1,12]]\n",
" if (y[i, 2, 9] + y[i, 2, 12] == 2):\n",
" plt.plot(x1, y1,'b')\n",
" # Tete \n",
" if (y[i, 2, 12] + y[i, 2, 13] == 2):\n",
" plt.plot(y[i,0,12:14],y[i,1,12:14],'b')\n",
"\n",
" plt.axis([0, x.shape[1], x.shape[2], 0])\n",
" plt.show()\n",
" #plt.legend()\n",
"\n",
"# Affichage aléatoire d'une image\n",
"print_data(x,y,np.random.randint(x.shape[0]-1))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si nous formulons ce problème comme une régression, nous allons utiliser pour évaluer nos réseaux de neurones l'erreur quadratique moyenne (fonction *MSE*). Cette fonction sera parfaite comme fonction de perte, mais elle ne permet pas d'appréhender les résultats de manière satisfaisante.\n",
"\n",
"Une métrique commune en estimation de posture est le **PCK0.5**, pour *Percentage of Correct Keypoints*. *0.5* correspond à un seuil en-deça duquel on considère qu'un joint est correctement estimé. Cette question du seuil est particulièrement sensible car il faut utiliser une valeur qui soit valable pour n'importe quelle image. La personne considérée peut apparaître plus ou moins largement sur l'image, de face ou de profil, ce qui fait qu'une erreur de prédiction sur un joint peut avoir une importance très grande ou très faible selon les cas.\n",
"\n",
"Pour résoudre cette ambiguïté, on considère dans la métrique du **PCK0.5** que la référence est la taille de la tête, définie par la distance entre le joint du cou et le joint de la tête sur la vérité terrain. Un joint prédit par le réseau sera considéré correct s'il est situé à une distance inférieure à la moitié (*0.5*) de la taille de la tête par rapport au joint réel. ([Andriluka et al.] 2D Human Pose Estimation: New Benchmark and State of the Art Analysis)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"import numpy.matlib \n",
"\n",
"# Calcul du \"Percentage of Correct Keypoint\" avec seuil alpha :\n",
"# On compte corrects les joints pour lesquels la distance entre valeurs réelle et prédite \n",
"# est inférieure à alpha fois la dimension de la tête (c'est un peu arbitraire...)\n",
"# On ne comptera pas les joints invisibles.\n",
"# y_true est de dimension Nx3x14 et y_pred Nx2x14 (le réseau ne prédit pas la visibilité)\n",
"def compute_PCK_alpha(y_true, y_pred, alpha=0.5):\n",
" # Calcul des seuils ; la taille de la tête est la distance entre joints 12 et 13\n",
" head_sizes = np.sqrt(np.square(y_true[:,0,13]-y_true[:,0,12])+np.square(y_true[:,1,13]-y_true[:,1,12]))\n",
" thresholds = alpha*head_sizes\n",
" thresholds = np.matlib.repmat(np.expand_dims(thresholds, 1), 1, 14)\n",
"\n",
" # Calcul des distances inter-joints\n",
" joints_distances = np.sqrt(np.square(y_true[:,0,:]-y_pred[:,0,:]) + np.square(y_true[:,1,:]-y_pred[:,1,:]))\n",
"\n",
" # Visibilité des joints de la vérité terrain\n",
" visibility = y_true[:,2,:]\n",
" \n",
" total_joints = np.count_nonzero(visibility==1)\n",
" correctly_predicted_joints = np.count_nonzero(np.logical_and(joints_distances<thresholds, visibility == 1))\n",
" \n",
" return correctly_predicted_joints/total_joints"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comme dit précédemment, on va utiliser l'erreur quadratique moyenne (*MSE*) comme fonction de coût pour entraîner notre réseau de neurones, et on peut également comme pour le TP2 utiliser l'erreur absolue moyenne (*MAE*) pour obtenir une estimation plus fine des performances de notre réseau pendant l'entraînement (on obtient une erreur moyenne en pixels, ce qui est plus simple à interpréter).\n",
"\n",
"Il y a cependant une subtilité importante évoquée un peu plus haut : certains joints sont invisibles, et ont des coordonnées négatives (pour, il faut l'avouer, une raison un peu inexplicable). Il est important de ne pas affecter l'apprentissage en faisant prédire ces valeurs négatives, insensées, au réseau. \n",
"\n",
"On doit donc implanter nous-même notre propre fonction de coût, qui ne va pas prendre en compte les joints invisibles. Pour cela, il faut savoir que la vérité-terrain contient en fait 3 valeurs pour chaque joint : les 2 premières sont ses coordonnées sur l'image, la 3e représente la visibilité du joint (1 s'il est visible, 0 sinon).\n",
"\n",
"La fonction *custom_mse*, définie juste en-dessous, réalise cette opération. Prenez le temps de comprendre ce qu'il s'y passe. **Remarque importante** : Ce code fait appel à des fonctions particulières du Backend de Keras, dont vous trouverez les détails sur [cette page](https://keras.rstudio.com/articles/backend.html). Ces fonctions doivent traiter des tenseurs, de type *Tensor* (et pas des tableaux numpy), car elles seront appelées pendant l'entraînement sur des variables internes à Tensorflow. Les fonctions utilisables sont également limitées car il faut pouvoir dériver la fonction *custom_mse* pour la rétropropagation des gradients."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"import keras.backend as K\n",
"# y_true : vérité terrain de dimension B x 3 x 14\n",
"# y_pred : une prédiction de dimension B x 2 x 14 (on ne prédit pas la visibilité)\n",
"# B est le nombre d'images considérées (par exemple, pourra être la taille d'un mini-batch)\n",
"def custom_mse(y_true, y_pred):\n",
" # Changement de dimension : Bx3x14 -> Bx14x3\n",
" y_true = K.permute_dimensions(y_true, (0, 2, 1))\n",
" # Changement de dimension : Bx14x3 -> (B*14)x3\n",
" y_true = K.reshape(y_true, shape=(-1, 3))\n",
" \n",
" # Changement de dimension : Bx2x14 -> Bx14x2\n",
" y_pred = K.permute_dimensions(y_pred, (0, 2, 1))\n",
" # Changement de dimension : Bx14x2 -> (B*14)x2\n",
" y_pred = K.reshape(y_pred, shape=(-1, 2))\n",
" \n",
" # Détermination de l'indices des joints visibles\n",
" visible = K.greater_equal(y_true[:, 2], 1) \n",
" indices = K.arange(0, K.shape(y_true)[0])\n",
" indices_visible = indices[visible]\n",
" \n",
" # Sélection des vérité-terrains et prédictions des joints visibles\n",
" y_true_visible = K.gather(y_true[:,0:2], indices_visible)\n",
" y_pred_visible = K.gather(y_pred, indices_visible)\n",
" \n",
" # Calcul de la MSE\n",
" return K.mean(K.square(y_pred_visible[:,0] - y_true_visible[:,0]) + K.square(y_pred_visible[:,1] - y_true_visible[:,1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si vous avez bien compris le code de *custom_mse*, vous devriez pouvoir sans trop de problèmes écrire le code pour la fonction *custom_mae* ci-dessous :"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"# y_true : vérité terrain de dimension B x 3 x 14\n",
"# y_pred : une prédiction de dimension B x 2 x 14 (on ne prédit pas la visibilité)\n",
"# B est le nombre d'images considérées (par exemple, pourra être la taille d'un mini-batch)\n",
"def custom_mae(y_true, y_pred):\n",
" # Changement de dimension : Bx3x14 -> Bx14x3\n",
" y_true = K.permute_dimensions(y_true, (0, 2, 1))\n",
" # Changement de dimension : Bx14x3 -> (B*14)x3\n",
" y_true = K.reshape(y_true, shape=(-1, 3))\n",
" \n",
" # Changement de dimension : Bx2x14 -> Bx14x2\n",
" y_pred = K.permute_dimensions(y_pred, (0, 2, 1))\n",
" # Changement de dimension : Bx14x2 -> (B*14)x2\n",
" y_pred = K.reshape(y_pred, shape=(-1, 2))\n",
" \n",
" # Détermination de l'indices des joints visibles\n",
" visible = K.greater_equal(y_true[:, 2], 1) \n",
" indices = K.arange(0, K.shape(y_true)[0])\n",
" indices_visible = indices[visible]\n",
" \n",
" # Sélection des vérité-terrains et prédictions des joints visibles\n",
" y_true_visible = K.gather(y_true[:,0:2], indices_visible)\n",
" y_pred_visible = K.gather(y_pred, indices_visible)\n",
" \n",
" # Calcul de la MAE\n",
" return K.mean(K.abs(y_pred_visible[:,0] - y_true_visible[:,0]) + K.abs(y_pred_visible[:,1] - y_true_visible[:,1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comme d'habitude, on peut monitorer l'entraînement grâce à la fonction suivante (adaptée à nos fonctions *custom_mse* et *custom_mae* définies juste avant) : "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"def plot_training_analysis(history):\n",
" mae = history.history['custom_mae']\n",
" val_mae = history.history['val_custom_mae']\n",
" loss = history.history['loss']\n",
" val_loss = history.history['val_loss']\n",
"\n",
" epochs = range(len(loss))\n",
"\n",
" plt.plot(epochs, mae, 'b', linestyle=\"--\",label='Training MAE')\n",
" plt.plot(epochs, val_mae, 'g', label='Validation MAE')\n",
" plt.title('Training and validation MAE')\n",
" plt.legend()\n",
"\n",
" plt.figure()\n",
"\n",
" plt.plot(epochs, loss, 'b', linestyle=\"--\",label='Training loss')\n",
" plt.plot(epochs, val_loss,'g', label='Validation loss')\n",
" plt.title('Training and validation loss')\n",
" plt.legend()\n",
"\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# A vous de jouer :\n",
"\n",
"Pour tenter de résoudre le problème, vous pouvez suivre les étapes suivantes : \n",
"\n",
"- Simplifier le problème en traitant 10 imagettes (par exemple de dimension $64 \\times 64$) et construire un réseau qui surapprend parfaitement (qui diminue la perte jusqu'à quasiment 0)\n",
"- Ajouter des images (~1000) et éventuellement recalibrer votre réseau pour à nouveau, obtenir un sur-apprentissage\n",
"- Commencer à corriger le sur-apprentissage en ajoutant de la régularisation (notamment sur les couches denses)\n",
"- Et enfin, utiliser l'ensemble de la base de données pour diminuer le sur-apprentissage au maximum\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"import tensorflow\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.layers import InputLayer, Dense, Flatten, Conv2D, MaxPooling2D, Reshape\n",
"from tensorflow.keras import optimizers"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" conv2d (Conv2D) (None, 62, 62, 32) 896 \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-04-06 17:55:59.634360: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n",
"To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
"2022-04-06 17:56:00.243575: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 1537 MB memory: -> device: 0, name: Quadro K620, pci bus id: 0000:03:00.0, compute capability: 5.0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" \n",
" max_pooling2d (MaxPooling2D (None, 31, 31, 32) 0 \n",
" ) \n",
" \n",
" conv2d_1 (Conv2D) (None, 29, 29, 64) 18496 \n",
" \n",
" max_pooling2d_1 (MaxPooling (None, 14, 14, 64) 0 \n",
" 2D) \n",
" \n",
" conv2d_2 (Conv2D) (None, 12, 12, 92) 53084 \n",
" \n",
" max_pooling2d_2 (MaxPooling (None, 6, 6, 92) 0 \n",
" 2D) \n",
" \n",
" conv2d_3 (Conv2D) (None, 4, 4, 128) 106112 \n",
" \n",
" max_pooling2d_3 (MaxPooling (None, 2, 2, 128) 0 \n",
" 2D) \n",
" \n",
" flatten (Flatten) (None, 512) 0 \n",
" \n",
" dense (Dense) (None, 512) 262656 \n",
" \n",
" dense_1 (Dense) (None, 42) 21546 \n",
" \n",
" reshape (Reshape) (None, 3, 14) 0 \n",
" \n",
"=================================================================\n",
"Total params: 462,790\n",
"Trainable params: 462,790\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"Epoch 1/500\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-04-06 17:56:01.836865: I tensorflow/stream_executor/cuda/cuda_dnn.cc:368] Loaded cuDNN version 8100\n",
"2022-04-06 17:56:02.100433: W tensorflow/stream_executor/gpu/asm_compiler.cc:111] *** WARNING *** You are using ptxas 10.1.243, which is older than 11.1. ptxas before 11.1 is known to miscompile XLA code, leading to incorrect results or invalid-address errors.\n",
"\n",
"You may not need to update to CUDA 11.1; cherry-picking the ptxas binary is often sufficient.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 3s 51ms/step - loss: 1645.1646 - custom_mae: 52.2486 - accuracy: 0.0833 - val_loss: 1693.5813 - val_custom_mae: 49.8971 - val_accuracy: 0.0000e+00\n",
"Epoch 2/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1444.6974 - custom_mae: 48.6929 - accuracy: 0.0000e+00 - val_loss: 1508.6548 - val_custom_mae: 46.6334 - val_accuracy: 0.0000e+00\n",
"Epoch 3/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1282.0558 - custom_mae: 45.4224 - accuracy: 0.0000e+00 - val_loss: 1346.8967 - val_custom_mae: 43.7476 - val_accuracy: 0.0000e+00\n",
"Epoch 4/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1133.2850 - custom_mae: 42.3140 - accuracy: 0.0000e+00 - val_loss: 1205.5819 - val_custom_mae: 40.9955 - val_accuracy: 0.0000e+00\n",
"Epoch 5/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 998.4826 - custom_mae: 39.4157 - accuracy: 0.0417 - val_loss: 1081.7169 - val_custom_mae: 38.4698 - val_accuracy: 0.0000e+00\n",
"Epoch 6/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 888.7233 - custom_mae: 36.5170 - accuracy: 0.0417 - val_loss: 969.3460 - val_custom_mae: 36.0378 - val_accuracy: 0.0000e+00\n",
"Epoch 7/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 776.2627 - custom_mae: 33.8331 - accuracy: 0.0417 - val_loss: 871.7504 - val_custom_mae: 33.8565 - val_accuracy: 0.0000e+00\n",
"Epoch 8/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 683.6859 - custom_mae: 31.4663 - accuracy: 0.0417 - val_loss: 788.3529 - val_custom_mae: 32.0696 - val_accuracy: 0.0000e+00\n",
"Epoch 9/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 601.2419 - custom_mae: 29.1058 - accuracy: 0.0417 - val_loss: 714.2122 - val_custom_mae: 30.3781 - val_accuracy: 0.0000e+00\n",
"Epoch 10/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 530.6856 - custom_mae: 26.8891 - accuracy: 0.0417 - val_loss: 650.6997 - val_custom_mae: 28.8502 - val_accuracy: 0.0000e+00\n",
"Epoch 11/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 460.8983 - custom_mae: 24.9396 - accuracy: 0.0417 - val_loss: 595.4228 - val_custom_mae: 27.6559 - val_accuracy: 0.0000e+00\n",
"Epoch 12/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 419.7189 - custom_mae: 23.5046 - accuracy: 0.0417 - val_loss: 554.6285 - val_custom_mae: 26.7735 - val_accuracy: 0.0000e+00\n",
"Epoch 13/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 365.1169 - custom_mae: 21.7708 - accuracy: 0.0417 - val_loss: 519.9942 - val_custom_mae: 26.0165 - val_accuracy: 0.0000e+00\n",
"Epoch 14/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 334.8514 - custom_mae: 20.6905 - accuracy: 0.0417 - val_loss: 492.1808 - val_custom_mae: 25.4429 - val_accuracy: 0.0000e+00\n",
"Epoch 15/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 303.1241 - custom_mae: 19.5947 - accuracy: 0.0417 - val_loss: 471.8553 - val_custom_mae: 25.1111 - val_accuracy: 0.0000e+00\n",
"Epoch 16/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 280.7592 - custom_mae: 18.8709 - accuracy: 0.0417 - val_loss: 454.4292 - val_custom_mae: 24.8094 - val_accuracy: 0.0000e+00\n",
"Epoch 17/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 261.7864 - custom_mae: 18.2127 - accuracy: 0.0417 - val_loss: 438.0183 - val_custom_mae: 24.6108 - val_accuracy: 0.0000e+00\n",
"Epoch 18/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 247.5717 - custom_mae: 17.7303 - accuracy: 0.0417 - val_loss: 423.1320 - val_custom_mae: 24.3313 - val_accuracy: 0.0000e+00\n",
"Epoch 19/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 236.6561 - custom_mae: 17.3107 - accuracy: 0.0417 - val_loss: 418.0301 - val_custom_mae: 24.1982 - val_accuracy: 0.0000e+00\n",
"Epoch 20/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 227.7027 - custom_mae: 16.9665 - accuracy: 0.0417 - val_loss: 410.5230 - val_custom_mae: 24.0212 - val_accuracy: 0.0000e+00\n",
"Epoch 21/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 219.6795 - custom_mae: 16.6314 - accuracy: 0.0417 - val_loss: 407.5679 - val_custom_mae: 23.8922 - val_accuracy: 0.0000e+00\n",
"Epoch 22/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 216.2900 - custom_mae: 16.4975 - accuracy: 0.0417 - val_loss: 409.7578 - val_custom_mae: 23.9177 - val_accuracy: 0.0000e+00\n",
"Epoch 23/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 210.1933 - custom_mae: 16.2920 - accuracy: 0.0417 - val_loss: 410.7000 - val_custom_mae: 23.9031 - val_accuracy: 0.0000e+00\n",
"Epoch 24/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 205.3121 - custom_mae: 16.1387 - accuracy: 0.0417 - val_loss: 409.0459 - val_custom_mae: 23.8626 - val_accuracy: 0.0000e+00\n",
"Epoch 25/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 201.6986 - custom_mae: 16.0118 - accuracy: 0.0417 - val_loss: 404.6946 - val_custom_mae: 23.7187 - val_accuracy: 0.0000e+00\n",
"Epoch 26/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 199.1012 - custom_mae: 15.8988 - accuracy: 0.0417 - val_loss: 404.3250 - val_custom_mae: 23.7437 - val_accuracy: 0.0000e+00\n",
"Epoch 27/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 195.8875 - custom_mae: 15.7511 - accuracy: 0.0417 - val_loss: 402.3555 - val_custom_mae: 23.6955 - val_accuracy: 0.0000e+00\n",
"Epoch 28/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 192.9225 - custom_mae: 15.6315 - accuracy: 0.0417 - val_loss: 402.2287 - val_custom_mae: 23.6931 - val_accuracy: 0.0000e+00\n",
"Epoch 29/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 190.4810 - custom_mae: 15.5196 - accuracy: 0.0417 - val_loss: 403.3840 - val_custom_mae: 23.6961 - val_accuracy: 0.0000e+00\n",
"Epoch 30/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 188.2551 - custom_mae: 15.4126 - accuracy: 0.0417 - val_loss: 403.4760 - val_custom_mae: 23.6841 - val_accuracy: 0.0000e+00\n",
"Epoch 31/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 185.4532 - custom_mae: 15.2986 - accuracy: 0.0417 - val_loss: 400.3525 - val_custom_mae: 23.6035 - val_accuracy: 0.0000e+00\n",
"Epoch 32/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 183.5413 - custom_mae: 15.2177 - accuracy: 0.0417 - val_loss: 402.4420 - val_custom_mae: 23.6483 - val_accuracy: 0.0000e+00\n",
"Epoch 33/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 182.2500 - custom_mae: 15.1734 - accuracy: 0.0417 - val_loss: 402.6736 - val_custom_mae: 23.6653 - val_accuracy: 0.0000e+00\n",
"Epoch 34/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 180.7219 - custom_mae: 15.1348 - accuracy: 0.0417 - val_loss: 402.6113 - val_custom_mae: 23.7009 - val_accuracy: 0.0000e+00\n",
"Epoch 35/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 178.1879 - custom_mae: 14.9883 - accuracy: 0.0417 - val_loss: 402.5612 - val_custom_mae: 23.7117 - val_accuracy: 0.0000e+00\n",
"Epoch 36/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 176.4017 - custom_mae: 14.9213 - accuracy: 0.0417 - val_loss: 406.7460 - val_custom_mae: 23.8702 - val_accuracy: 0.0000e+00\n",
"Epoch 37/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 175.1766 - custom_mae: 14.8836 - accuracy: 0.0833 - val_loss: 402.6191 - val_custom_mae: 23.7288 - val_accuracy: 0.0000e+00\n",
"Epoch 38/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 172.3543 - custom_mae: 14.7350 - accuracy: 0.0833 - val_loss: 404.3982 - val_custom_mae: 23.7843 - val_accuracy: 0.0000e+00\n",
"Epoch 39/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 171.6455 - custom_mae: 14.7247 - accuracy: 0.0833 - val_loss: 406.1129 - val_custom_mae: 23.8634 - val_accuracy: 0.0000e+00\n",
"Epoch 40/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 169.0677 - custom_mae: 14.6236 - accuracy: 0.0833 - val_loss: 406.9654 - val_custom_mae: 23.9125 - val_accuracy: 0.0000e+00\n",
"Epoch 41/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 167.4359 - custom_mae: 14.5639 - accuracy: 0.0833 - val_loss: 406.0610 - val_custom_mae: 23.8634 - val_accuracy: 0.0000e+00\n",
"Epoch 42/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 165.4825 - custom_mae: 14.4465 - accuracy: 0.0833 - val_loss: 405.1148 - val_custom_mae: 23.8130 - val_accuracy: 0.0000e+00\n",
"Epoch 43/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 165.0361 - custom_mae: 14.4085 - accuracy: 0.0417 - val_loss: 404.9694 - val_custom_mae: 23.8234 - val_accuracy: 0.0000e+00\n",
"Epoch 44/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 161.9687 - custom_mae: 14.2890 - accuracy: 0.0417 - val_loss: 405.4351 - val_custom_mae: 23.8430 - val_accuracy: 0.0000e+00\n",
"Epoch 45/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 160.6979 - custom_mae: 14.2326 - accuracy: 0.0417 - val_loss: 407.0562 - val_custom_mae: 23.9097 - val_accuracy: 0.0000e+00\n",
"Epoch 46/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 159.2588 - custom_mae: 14.1610 - accuracy: 0.0417 - val_loss: 406.7657 - val_custom_mae: 23.8849 - val_accuracy: 0.0000e+00\n",
"Epoch 47/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 157.5886 - custom_mae: 14.1194 - accuracy: 0.0417 - val_loss: 408.6310 - val_custom_mae: 23.9701 - val_accuracy: 0.0000e+00\n",
"Epoch 48/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 156.3378 - custom_mae: 14.0550 - accuracy: 0.0417 - val_loss: 412.2852 - val_custom_mae: 24.1261 - val_accuracy: 0.0000e+00\n",
"Epoch 49/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 154.6217 - custom_mae: 14.0001 - accuracy: 0.0417 - val_loss: 414.9316 - val_custom_mae: 24.1959 - val_accuracy: 0.0000e+00\n",
"Epoch 50/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 152.6574 - custom_mae: 13.8891 - accuracy: 0.0417 - val_loss: 414.6105 - val_custom_mae: 24.1723 - val_accuracy: 0.0000e+00\n",
"Epoch 51/500\n",
"8/8 [==============================] - 0s 13ms/step - loss: 151.5095 - custom_mae: 13.8038 - accuracy: 0.0417 - val_loss: 409.2286 - val_custom_mae: 24.0196 - val_accuracy: 0.0000e+00\n",
"Epoch 52/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 150.8093 - custom_mae: 13.7771 - accuracy: 0.0417 - val_loss: 406.7242 - val_custom_mae: 23.9258 - val_accuracy: 0.0000e+00\n",
"Epoch 53/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 148.4751 - custom_mae: 13.6448 - accuracy: 0.0417 - val_loss: 410.3669 - val_custom_mae: 24.0966 - val_accuracy: 0.0000e+00\n",
"Epoch 54/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 146.6503 - custom_mae: 13.5933 - accuracy: 0.0417 - val_loss: 410.4221 - val_custom_mae: 24.1278 - val_accuracy: 0.0000e+00\n",
"Epoch 55/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 145.3093 - custom_mae: 13.5273 - accuracy: 0.0417 - val_loss: 412.1499 - val_custom_mae: 24.1638 - val_accuracy: 0.0000e+00\n",
"Epoch 56/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 144.4268 - custom_mae: 13.4793 - accuracy: 0.0417 - val_loss: 413.4369 - val_custom_mae: 24.2716 - val_accuracy: 0.0000e+00\n",
"Epoch 57/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 142.1533 - custom_mae: 13.3693 - accuracy: 0.0417 - val_loss: 410.2064 - val_custom_mae: 24.1708 - val_accuracy: 0.0000e+00\n",
"Epoch 58/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 141.1678 - custom_mae: 13.3268 - accuracy: 0.0417 - val_loss: 411.3347 - val_custom_mae: 24.2119 - val_accuracy: 0.0000e+00\n",
"Epoch 59/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 140.5152 - custom_mae: 13.2561 - accuracy: 0.0417 - val_loss: 405.2321 - val_custom_mae: 23.9684 - val_accuracy: 0.0000e+00\n",
"Epoch 60/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 139.5516 - custom_mae: 13.2209 - accuracy: 0.0417 - val_loss: 415.0569 - val_custom_mae: 24.3283 - val_accuracy: 0.0000e+00\n",
"Epoch 61/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 137.3128 - custom_mae: 13.1172 - accuracy: 0.0417 - val_loss: 409.6513 - val_custom_mae: 24.1504 - val_accuracy: 0.0000e+00\n",
"Epoch 62/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 135.6534 - custom_mae: 13.0263 - accuracy: 0.0417 - val_loss: 412.5158 - val_custom_mae: 24.2829 - val_accuracy: 0.0000e+00\n",
"Epoch 63/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 133.7861 - custom_mae: 12.9487 - accuracy: 0.0417 - val_loss: 414.0869 - val_custom_mae: 24.3709 - val_accuracy: 0.0000e+00\n",
"Epoch 64/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 134.0365 - custom_mae: 13.0084 - accuracy: 0.0417 - val_loss: 417.8215 - val_custom_mae: 24.4823 - val_accuracy: 0.0000e+00\n",
"Epoch 65/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 131.4517 - custom_mae: 12.8456 - accuracy: 0.0417 - val_loss: 413.1723 - val_custom_mae: 24.3072 - val_accuracy: 0.0000e+00\n",
"Epoch 66/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 129.6526 - custom_mae: 12.7441 - accuracy: 0.0417 - val_loss: 413.1596 - val_custom_mae: 24.3132 - val_accuracy: 0.0000e+00\n",
"Epoch 67/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 128.8961 - custom_mae: 12.7063 - accuracy: 0.0417 - val_loss: 411.5398 - val_custom_mae: 24.2937 - val_accuracy: 0.0000e+00\n",
"Epoch 68/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 127.6665 - custom_mae: 12.6517 - accuracy: 0.0417 - val_loss: 413.7512 - val_custom_mae: 24.3615 - val_accuracy: 0.0000e+00\n",
"Epoch 69/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 127.0278 - custom_mae: 12.6188 - accuracy: 0.0417 - val_loss: 409.0102 - val_custom_mae: 24.1772 - val_accuracy: 0.0000e+00\n",
"Epoch 70/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 124.4445 - custom_mae: 12.4524 - accuracy: 0.0417 - val_loss: 410.4698 - val_custom_mae: 24.2348 - val_accuracy: 0.0000e+00\n",
"Epoch 71/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 123.5950 - custom_mae: 12.4353 - accuracy: 0.0417 - val_loss: 410.0284 - val_custom_mae: 24.2068 - val_accuracy: 0.0000e+00\n",
"Epoch 72/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 123.1236 - custom_mae: 12.3779 - accuracy: 0.0417 - val_loss: 416.6451 - val_custom_mae: 24.4725 - val_accuracy: 0.0000e+00\n",
"Epoch 73/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 120.3443 - custom_mae: 12.2514 - accuracy: 0.0417 - val_loss: 419.1819 - val_custom_mae: 24.5486 - val_accuracy: 0.0000e+00\n",
"Epoch 74/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 120.0631 - custom_mae: 12.2410 - accuracy: 0.0417 - val_loss: 420.6152 - val_custom_mae: 24.6451 - val_accuracy: 0.0000e+00\n",
"Epoch 75/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 118.5125 - custom_mae: 12.1661 - accuracy: 0.0417 - val_loss: 416.0493 - val_custom_mae: 24.4676 - val_accuracy: 0.0000e+00\n",
"Epoch 76/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 116.7565 - custom_mae: 12.0846 - accuracy: 0.0417 - val_loss: 418.2752 - val_custom_mae: 24.5161 - val_accuracy: 0.0000e+00\n",
"Epoch 77/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 117.4395 - custom_mae: 12.1152 - accuracy: 0.0417 - val_loss: 425.4371 - val_custom_mae: 24.7851 - val_accuracy: 0.0000e+00\n",
"Epoch 78/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 114.2474 - custom_mae: 11.9354 - accuracy: 0.0417 - val_loss: 420.5996 - val_custom_mae: 24.6146 - val_accuracy: 0.0000e+00\n",
"Epoch 79/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 113.1958 - custom_mae: 11.8511 - accuracy: 0.0417 - val_loss: 418.4744 - val_custom_mae: 24.4806 - val_accuracy: 0.0000e+00\n",
"Epoch 80/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 111.9214 - custom_mae: 11.7995 - accuracy: 0.0417 - val_loss: 420.5223 - val_custom_mae: 24.6236 - val_accuracy: 0.0000e+00\n",
"Epoch 81/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 110.7491 - custom_mae: 11.7557 - accuracy: 0.0417 - val_loss: 420.4352 - val_custom_mae: 24.6390 - val_accuracy: 0.0000e+00\n",
"Epoch 82/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 109.5168 - custom_mae: 11.6780 - accuracy: 0.0417 - val_loss: 418.5866 - val_custom_mae: 24.5498 - val_accuracy: 0.0000e+00\n",
"Epoch 83/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 108.5691 - custom_mae: 11.5864 - accuracy: 0.0417 - val_loss: 415.6513 - val_custom_mae: 24.4047 - val_accuracy: 0.0000e+00\n",
"Epoch 84/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 107.1655 - custom_mae: 11.4943 - accuracy: 0.0000e+00 - val_loss: 417.2522 - val_custom_mae: 24.4805 - val_accuracy: 0.0000e+00\n",
"Epoch 85/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 104.9143 - custom_mae: 11.4095 - accuracy: 0.0000e+00 - val_loss: 421.9020 - val_custom_mae: 24.6575 - val_accuracy: 0.0000e+00\n",
"Epoch 86/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 104.2563 - custom_mae: 11.3663 - accuracy: 0.0417 - val_loss: 428.3400 - val_custom_mae: 24.9005 - val_accuracy: 0.0000e+00\n",
"Epoch 87/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 103.1367 - custom_mae: 11.2972 - accuracy: 0.0417 - val_loss: 429.1896 - val_custom_mae: 24.9507 - val_accuracy: 0.0000e+00\n",
"Epoch 88/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 102.2875 - custom_mae: 11.2484 - accuracy: 0.0417 - val_loss: 423.3947 - val_custom_mae: 24.7061 - val_accuracy: 0.0000e+00\n",
"Epoch 89/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 101.1349 - custom_mae: 11.1665 - accuracy: 0.0417 - val_loss: 427.1229 - val_custom_mae: 24.8693 - val_accuracy: 0.0000e+00\n",
"Epoch 90/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 100.1330 - custom_mae: 11.1440 - accuracy: 0.0417 - val_loss: 420.6021 - val_custom_mae: 24.6144 - val_accuracy: 0.0000e+00\n",
"Epoch 91/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 99.7618 - custom_mae: 11.0987 - accuracy: 0.0417 - val_loss: 429.6985 - val_custom_mae: 24.9727 - val_accuracy: 0.0000e+00\n",
"Epoch 92/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 97.0187 - custom_mae: 10.9343 - accuracy: 0.0833 - val_loss: 429.4257 - val_custom_mae: 24.9567 - val_accuracy: 0.0000e+00\n",
"Epoch 93/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 95.7500 - custom_mae: 10.8596 - accuracy: 0.0833 - val_loss: 426.2121 - val_custom_mae: 24.8527 - val_accuracy: 0.0000e+00\n",
"Epoch 94/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 96.7112 - custom_mae: 10.8691 - accuracy: 0.0000e+00 - val_loss: 417.3474 - val_custom_mae: 24.4897 - val_accuracy: 0.0000e+00\n",
"Epoch 95/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 93.4611 - custom_mae: 10.7117 - accuracy: 0.0000e+00 - val_loss: 420.2762 - val_custom_mae: 24.6373 - val_accuracy: 0.0000e+00\n",
"Epoch 96/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 91.9772 - custom_mae: 10.6206 - accuracy: 0.0417 - val_loss: 425.6195 - val_custom_mae: 24.8340 - val_accuracy: 0.0000e+00\n",
"Epoch 97/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 91.2963 - custom_mae: 10.5700 - accuracy: 0.0417 - val_loss: 427.8983 - val_custom_mae: 24.9089 - val_accuracy: 0.0000e+00\n",
"Epoch 98/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 89.9349 - custom_mae: 10.4948 - accuracy: 0.0417 - val_loss: 427.4246 - val_custom_mae: 24.8702 - val_accuracy: 0.0000e+00\n",
"Epoch 99/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 89.0157 - custom_mae: 10.4247 - accuracy: 0.0417 - val_loss: 424.4568 - val_custom_mae: 24.7276 - val_accuracy: 0.0000e+00\n",
"Epoch 100/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 87.8003 - custom_mae: 10.3883 - accuracy: 0.0417 - val_loss: 422.1203 - val_custom_mae: 24.7226 - val_accuracy: 0.0000e+00\n",
"Epoch 101/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 86.6618 - custom_mae: 10.3205 - accuracy: 0.0833 - val_loss: 426.9736 - val_custom_mae: 24.8916 - val_accuracy: 0.0000e+00\n",
"Epoch 102/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 84.9795 - custom_mae: 10.2201 - accuracy: 0.0833 - val_loss: 424.4954 - val_custom_mae: 24.7382 - val_accuracy: 0.0000e+00\n",
"Epoch 103/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 84.6022 - custom_mae: 10.1958 - accuracy: 0.0417 - val_loss: 422.1271 - val_custom_mae: 24.6736 - val_accuracy: 0.0000e+00\n",
"Epoch 104/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 82.9915 - custom_mae: 10.0656 - accuracy: 0.0417 - val_loss: 421.9286 - val_custom_mae: 24.6940 - val_accuracy: 0.0000e+00\n",
"Epoch 105/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 81.7410 - custom_mae: 9.9713 - accuracy: 0.0417 - val_loss: 427.6994 - val_custom_mae: 24.8964 - val_accuracy: 0.0000e+00\n",
"Epoch 106/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 80.9972 - custom_mae: 9.9322 - accuracy: 0.0417 - val_loss: 431.2686 - val_custom_mae: 25.0594 - val_accuracy: 0.0000e+00\n",
"Epoch 107/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 80.6039 - custom_mae: 9.9045 - accuracy: 0.0833 - val_loss: 437.9518 - val_custom_mae: 25.2723 - val_accuracy: 0.0000e+00\n",
"Epoch 108/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 78.3437 - custom_mae: 9.7548 - accuracy: 0.0833 - val_loss: 428.8666 - val_custom_mae: 24.9395 - val_accuracy: 0.0000e+00\n",
"Epoch 109/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 78.3060 - custom_mae: 9.7770 - accuracy: 0.0417 - val_loss: 426.6060 - val_custom_mae: 24.7673 - val_accuracy: 0.0000e+00\n",
"Epoch 110/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 76.4649 - custom_mae: 9.6531 - accuracy: 0.0417 - val_loss: 430.5608 - val_custom_mae: 24.9726 - val_accuracy: 0.0000e+00\n",
"Epoch 111/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 74.6942 - custom_mae: 9.5391 - accuracy: 0.0417 - val_loss: 430.2473 - val_custom_mae: 24.9625 - val_accuracy: 0.0000e+00\n",
"Epoch 112/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 73.3168 - custom_mae: 9.4405 - accuracy: 0.0417 - val_loss: 429.2884 - val_custom_mae: 24.9538 - val_accuracy: 0.0000e+00\n",
"Epoch 113/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 72.2169 - custom_mae: 9.3628 - accuracy: 0.0417 - val_loss: 432.4158 - val_custom_mae: 25.0389 - val_accuracy: 0.0000e+00\n",
"Epoch 114/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 71.0414 - custom_mae: 9.3034 - accuracy: 0.0417 - val_loss: 432.2120 - val_custom_mae: 25.0539 - val_accuracy: 0.0000e+00\n",
"Epoch 115/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 70.5078 - custom_mae: 9.2599 - accuracy: 0.0417 - val_loss: 436.0043 - val_custom_mae: 25.1645 - val_accuracy: 0.0000e+00\n",
"Epoch 116/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 69.0165 - custom_mae: 9.1592 - accuracy: 0.0417 - val_loss: 435.2921 - val_custom_mae: 25.1592 - val_accuracy: 0.0000e+00\n",
"Epoch 117/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 67.9589 - custom_mae: 9.0724 - accuracy: 0.0417 - val_loss: 428.1173 - val_custom_mae: 24.8933 - val_accuracy: 0.0000e+00\n",
"Epoch 118/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 67.4143 - custom_mae: 9.0412 - accuracy: 0.0417 - val_loss: 434.8939 - val_custom_mae: 25.0991 - val_accuracy: 0.0000e+00\n",
"Epoch 119/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 66.0839 - custom_mae: 8.9594 - accuracy: 0.0417 - val_loss: 433.0708 - val_custom_mae: 25.0399 - val_accuracy: 0.0000e+00\n",
"Epoch 120/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 65.9256 - custom_mae: 8.9698 - accuracy: 0.0417 - val_loss: 428.9426 - val_custom_mae: 24.8979 - val_accuracy: 0.0000e+00\n",
"Epoch 121/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 63.1886 - custom_mae: 8.7238 - accuracy: 0.0417 - val_loss: 436.8160 - val_custom_mae: 25.2241 - val_accuracy: 0.0000e+00\n",
"Epoch 122/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 62.3870 - custom_mae: 8.6666 - accuracy: 0.0417 - val_loss: 437.2810 - val_custom_mae: 25.2320 - val_accuracy: 0.0000e+00\n",
"Epoch 123/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 61.7238 - custom_mae: 8.6275 - accuracy: 0.0417 - val_loss: 438.6030 - val_custom_mae: 25.3054 - val_accuracy: 0.0000e+00\n",
"Epoch 124/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 60.5433 - custom_mae: 8.5357 - accuracy: 0.0417 - val_loss: 443.5125 - val_custom_mae: 25.4655 - val_accuracy: 0.0000e+00\n",
"Epoch 125/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 59.3125 - custom_mae: 8.4223 - accuracy: 0.0417 - val_loss: 440.6275 - val_custom_mae: 25.3692 - val_accuracy: 0.0000e+00\n",
"Epoch 126/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 58.4023 - custom_mae: 8.3737 - accuracy: 0.0417 - val_loss: 440.1028 - val_custom_mae: 25.3387 - val_accuracy: 0.0000e+00\n",
"Epoch 127/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 58.1661 - custom_mae: 8.3705 - accuracy: 0.0417 - val_loss: 442.4982 - val_custom_mae: 25.3775 - val_accuracy: 0.0000e+00\n",
"Epoch 128/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 56.2306 - custom_mae: 8.1875 - accuracy: 0.0417 - val_loss: 444.4538 - val_custom_mae: 25.4769 - val_accuracy: 0.0000e+00\n",
"Epoch 129/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 55.0303 - custom_mae: 8.1080 - accuracy: 0.0417 - val_loss: 442.9167 - val_custom_mae: 25.4125 - val_accuracy: 0.0000e+00\n",
"Epoch 130/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 54.0156 - custom_mae: 8.0168 - accuracy: 0.0417 - val_loss: 446.5889 - val_custom_mae: 25.5574 - val_accuracy: 0.0000e+00\n",
"Epoch 131/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 52.9252 - custom_mae: 7.9337 - accuracy: 0.0833 - val_loss: 446.3956 - val_custom_mae: 25.5658 - val_accuracy: 0.0000e+00\n",
"Epoch 132/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 51.9142 - custom_mae: 7.8970 - accuracy: 0.0417 - val_loss: 442.4985 - val_custom_mae: 25.3680 - val_accuracy: 0.0000e+00\n",
"Epoch 133/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 51.1319 - custom_mae: 7.8152 - accuracy: 0.0417 - val_loss: 447.0637 - val_custom_mae: 25.5970 - val_accuracy: 0.0000e+00\n",
"Epoch 134/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 49.8007 - custom_mae: 7.6705 - accuracy: 0.0417 - val_loss: 445.0345 - val_custom_mae: 25.5861 - val_accuracy: 0.0000e+00\n",
"Epoch 135/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 48.6811 - custom_mae: 7.5643 - accuracy: 0.0417 - val_loss: 443.0012 - val_custom_mae: 25.5583 - val_accuracy: 0.0000e+00\n",
"Epoch 136/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 48.2607 - custom_mae: 7.5659 - accuracy: 0.0417 - val_loss: 439.7896 - val_custom_mae: 25.3781 - val_accuracy: 0.0000e+00\n",
"Epoch 137/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 46.8254 - custom_mae: 7.4343 - accuracy: 0.0417 - val_loss: 442.0301 - val_custom_mae: 25.4404 - val_accuracy: 0.0000e+00\n",
"Epoch 138/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 45.5511 - custom_mae: 7.3325 - accuracy: 0.0417 - val_loss: 445.8210 - val_custom_mae: 25.5933 - val_accuracy: 0.0000e+00\n",
"Epoch 139/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 45.0168 - custom_mae: 7.2914 - accuracy: 0.0417 - val_loss: 448.6976 - val_custom_mae: 25.6725 - val_accuracy: 0.0000e+00\n",
"Epoch 140/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 43.9791 - custom_mae: 7.1802 - accuracy: 0.0417 - val_loss: 446.7123 - val_custom_mae: 25.5835 - val_accuracy: 0.0000e+00\n",
"Epoch 141/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 43.1393 - custom_mae: 7.1117 - accuracy: 0.0417 - val_loss: 443.8585 - val_custom_mae: 25.4488 - val_accuracy: 0.0000e+00\n",
"Epoch 142/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 42.0530 - custom_mae: 7.0421 - accuracy: 0.0417 - val_loss: 446.0829 - val_custom_mae: 25.5527 - val_accuracy: 0.0000e+00\n",
"Epoch 143/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 42.1297 - custom_mae: 7.0045 - accuracy: 0.0417 - val_loss: 455.9144 - val_custom_mae: 25.9180 - val_accuracy: 0.0000e+00\n",
"Epoch 144/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 40.2080 - custom_mae: 6.8173 - accuracy: 0.0417 - val_loss: 452.2101 - val_custom_mae: 25.7997 - val_accuracy: 0.0000e+00\n",
"Epoch 145/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 39.6084 - custom_mae: 6.7818 - accuracy: 0.0417 - val_loss: 444.0982 - val_custom_mae: 25.4777 - val_accuracy: 0.0000e+00\n",
"Epoch 146/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 38.7660 - custom_mae: 6.7019 - accuracy: 0.0417 - val_loss: 449.2700 - val_custom_mae: 25.6236 - val_accuracy: 0.0000e+00\n",
"Epoch 147/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 38.2095 - custom_mae: 6.6438 - accuracy: 0.0417 - val_loss: 449.8256 - val_custom_mae: 25.6540 - val_accuracy: 0.0000e+00\n",
"Epoch 148/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 36.9949 - custom_mae: 6.5295 - accuracy: 0.0417 - val_loss: 453.5786 - val_custom_mae: 25.7693 - val_accuracy: 0.0000e+00\n",
"Epoch 149/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 36.3998 - custom_mae: 6.4640 - accuracy: 0.0417 - val_loss: 453.8980 - val_custom_mae: 25.7478 - val_accuracy: 0.0000e+00\n",
"Epoch 150/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 35.7318 - custom_mae: 6.4153 - accuracy: 0.0417 - val_loss: 455.4772 - val_custom_mae: 25.8269 - val_accuracy: 0.0000e+00\n",
"Epoch 151/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 35.3494 - custom_mae: 6.3914 - accuracy: 0.0417 - val_loss: 450.8029 - val_custom_mae: 25.6449 - val_accuracy: 0.0000e+00\n",
"Epoch 152/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 34.5699 - custom_mae: 6.3014 - accuracy: 0.0417 - val_loss: 459.5722 - val_custom_mae: 25.9405 - val_accuracy: 0.0000e+00\n",
"Epoch 153/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 33.3331 - custom_mae: 6.1431 - accuracy: 0.0417 - val_loss: 457.1331 - val_custom_mae: 25.8412 - val_accuracy: 0.0000e+00\n",
"Epoch 154/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 32.9963 - custom_mae: 6.1439 - accuracy: 0.0417 - val_loss: 453.6251 - val_custom_mae: 25.7267 - val_accuracy: 0.0000e+00\n",
"Epoch 155/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 32.0551 - custom_mae: 6.0378 - accuracy: 0.0417 - val_loss: 456.0417 - val_custom_mae: 25.7919 - val_accuracy: 0.0000e+00\n",
"Epoch 156/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 32.3482 - custom_mae: 6.0396 - accuracy: 0.0833 - val_loss: 466.5399 - val_custom_mae: 26.1508 - val_accuracy: 0.0000e+00\n",
"Epoch 157/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 30.7660 - custom_mae: 5.8952 - accuracy: 0.0833 - val_loss: 461.1880 - val_custom_mae: 25.9642 - val_accuracy: 0.0000e+00\n",
"Epoch 158/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 29.7537 - custom_mae: 5.8285 - accuracy: 0.0833 - val_loss: 457.4011 - val_custom_mae: 25.8132 - val_accuracy: 0.0000e+00\n",
"Epoch 159/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 29.5087 - custom_mae: 5.7671 - accuracy: 0.0417 - val_loss: 457.6366 - val_custom_mae: 25.8140 - val_accuracy: 0.0000e+00\n",
"Epoch 160/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 28.9460 - custom_mae: 5.7221 - accuracy: 0.0417 - val_loss: 460.2501 - val_custom_mae: 25.9221 - val_accuracy: 0.0000e+00\n",
"Epoch 161/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 28.2239 - custom_mae: 5.6289 - accuracy: 0.0417 - val_loss: 460.9203 - val_custom_mae: 25.9758 - val_accuracy: 0.0000e+00\n",
"Epoch 162/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 27.4046 - custom_mae: 5.5540 - accuracy: 0.0417 - val_loss: 463.3424 - val_custom_mae: 26.0324 - val_accuracy: 0.0000e+00\n",
"Epoch 163/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 27.0080 - custom_mae: 5.4735 - accuracy: 0.0417 - val_loss: 462.5216 - val_custom_mae: 25.9708 - val_accuracy: 0.0000e+00\n",
"Epoch 164/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 26.5262 - custom_mae: 5.4505 - accuracy: 0.0417 - val_loss: 459.0640 - val_custom_mae: 25.8779 - val_accuracy: 0.0000e+00\n",
"Epoch 165/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 25.6896 - custom_mae: 5.3489 - accuracy: 0.0417 - val_loss: 467.4054 - val_custom_mae: 26.1621 - val_accuracy: 0.0000e+00\n",
"Epoch 166/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 25.0785 - custom_mae: 5.2762 - accuracy: 0.0417 - val_loss: 463.7683 - val_custom_mae: 26.0607 - val_accuracy: 0.0000e+00\n",
"Epoch 167/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 24.5338 - custom_mae: 5.2252 - accuracy: 0.0417 - val_loss: 463.9749 - val_custom_mae: 26.0405 - val_accuracy: 0.0000e+00\n",
"Epoch 168/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 24.8176 - custom_mae: 5.2634 - accuracy: 0.0833 - val_loss: 469.7042 - val_custom_mae: 26.2299 - val_accuracy: 0.0000e+00\n",
"Epoch 169/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 23.4418 - custom_mae: 5.1271 - accuracy: 0.0417 - val_loss: 465.4104 - val_custom_mae: 26.0587 - val_accuracy: 0.0000e+00\n",
"Epoch 170/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 23.4545 - custom_mae: 5.0908 - accuracy: 0.0833 - val_loss: 471.0990 - val_custom_mae: 26.2474 - val_accuracy: 0.0000e+00\n",
"Epoch 171/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 22.6246 - custom_mae: 4.9760 - accuracy: 0.0417 - val_loss: 464.9403 - val_custom_mae: 26.0717 - val_accuracy: 0.0000e+00\n",
"Epoch 172/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 22.0491 - custom_mae: 4.9336 - accuracy: 0.0417 - val_loss: 464.9464 - val_custom_mae: 26.1121 - val_accuracy: 0.0000e+00\n",
"Epoch 173/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 21.6660 - custom_mae: 4.8979 - accuracy: 0.0417 - val_loss: 463.2189 - val_custom_mae: 26.0392 - val_accuracy: 0.0000e+00\n",
"Epoch 174/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 20.9636 - custom_mae: 4.8194 - accuracy: 0.0417 - val_loss: 469.7394 - val_custom_mae: 26.2230 - val_accuracy: 0.0000e+00\n",
"Epoch 175/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 21.0507 - custom_mae: 4.8291 - accuracy: 0.0417 - val_loss: 474.6667 - val_custom_mae: 26.3608 - val_accuracy: 0.0000e+00\n",
"Epoch 176/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 20.0407 - custom_mae: 4.6759 - accuracy: 0.0417 - val_loss: 472.0492 - val_custom_mae: 26.2491 - val_accuracy: 0.0000e+00\n",
"Epoch 177/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 19.6447 - custom_mae: 4.6592 - accuracy: 0.0417 - val_loss: 466.8966 - val_custom_mae: 26.1098 - val_accuracy: 0.0000e+00\n",
"Epoch 178/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 19.3669 - custom_mae: 4.6167 - accuracy: 0.0417 - val_loss: 466.9753 - val_custom_mae: 26.1518 - val_accuracy: 0.0000e+00\n",
"Epoch 179/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 18.8801 - custom_mae: 4.5518 - accuracy: 0.0417 - val_loss: 473.5079 - val_custom_mae: 26.3749 - val_accuracy: 0.0000e+00\n",
"Epoch 180/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 18.4521 - custom_mae: 4.5003 - accuracy: 0.0417 - val_loss: 474.3641 - val_custom_mae: 26.3569 - val_accuracy: 0.0000e+00\n",
"Epoch 181/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 17.7927 - custom_mae: 4.3935 - accuracy: 0.0417 - val_loss: 471.8148 - val_custom_mae: 26.2449 - val_accuracy: 0.0000e+00\n",
"Epoch 182/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 17.4695 - custom_mae: 4.3722 - accuracy: 0.0417 - val_loss: 471.5206 - val_custom_mae: 26.2671 - val_accuracy: 0.0000e+00\n",
"Epoch 183/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 17.1027 - custom_mae: 4.3010 - accuracy: 0.0417 - val_loss: 471.3881 - val_custom_mae: 26.2539 - val_accuracy: 0.0000e+00\n",
"Epoch 184/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 16.6544 - custom_mae: 4.2442 - accuracy: 0.0417 - val_loss: 471.6605 - val_custom_mae: 26.2710 - val_accuracy: 0.0000e+00\n",
"Epoch 185/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 16.2947 - custom_mae: 4.1925 - accuracy: 0.0417 - val_loss: 475.3328 - val_custom_mae: 26.3920 - val_accuracy: 0.0000e+00\n",
"Epoch 186/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 16.1027 - custom_mae: 4.2016 - accuracy: 0.0417 - val_loss: 475.3194 - val_custom_mae: 26.3913 - val_accuracy: 0.0000e+00\n",
"Epoch 187/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 15.4615 - custom_mae: 4.1142 - accuracy: 0.0417 - val_loss: 474.8930 - val_custom_mae: 26.3670 - val_accuracy: 0.0000e+00\n",
"Epoch 188/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 15.0995 - custom_mae: 4.0559 - accuracy: 0.0417 - val_loss: 471.7344 - val_custom_mae: 26.2607 - val_accuracy: 0.0000e+00\n",
"Epoch 189/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 14.7917 - custom_mae: 4.0052 - accuracy: 0.0417 - val_loss: 471.8742 - val_custom_mae: 26.2761 - val_accuracy: 0.0000e+00\n",
"Epoch 190/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 14.5857 - custom_mae: 3.9726 - accuracy: 0.0417 - val_loss: 473.7744 - val_custom_mae: 26.3379 - val_accuracy: 0.0000e+00\n",
"Epoch 191/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 14.4158 - custom_mae: 3.9429 - accuracy: 0.0417 - val_loss: 479.8463 - val_custom_mae: 26.5359 - val_accuracy: 0.0000e+00\n",
"Epoch 192/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 13.8274 - custom_mae: 3.8969 - accuracy: 0.0417 - val_loss: 473.4620 - val_custom_mae: 26.3280 - val_accuracy: 0.0000e+00\n",
"Epoch 193/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 13.6661 - custom_mae: 3.8534 - accuracy: 0.0417 - val_loss: 472.7038 - val_custom_mae: 26.2905 - val_accuracy: 0.0000e+00\n",
"Epoch 194/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 13.3780 - custom_mae: 3.8121 - accuracy: 0.0417 - val_loss: 476.4352 - val_custom_mae: 26.4500 - val_accuracy: 0.0000e+00\n",
"Epoch 195/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 12.7909 - custom_mae: 3.7180 - accuracy: 0.0417 - val_loss: 475.7620 - val_custom_mae: 26.4157 - val_accuracy: 0.0000e+00\n",
"Epoch 196/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 12.5520 - custom_mae: 3.6657 - accuracy: 0.0417 - val_loss: 476.3515 - val_custom_mae: 26.4403 - val_accuracy: 0.0000e+00\n",
"Epoch 197/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 12.1764 - custom_mae: 3.6299 - accuracy: 0.0417 - val_loss: 475.9054 - val_custom_mae: 26.4461 - val_accuracy: 0.0000e+00\n",
"Epoch 198/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 11.9500 - custom_mae: 3.5970 - accuracy: 0.0417 - val_loss: 473.1739 - val_custom_mae: 26.3367 - val_accuracy: 0.0000e+00\n",
"Epoch 199/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 11.5614 - custom_mae: 3.5167 - accuracy: 0.0417 - val_loss: 476.7552 - val_custom_mae: 26.4499 - val_accuracy: 0.0000e+00\n",
"Epoch 200/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 11.3241 - custom_mae: 3.4732 - accuracy: 0.0417 - val_loss: 478.5265 - val_custom_mae: 26.5310 - val_accuracy: 0.0000e+00\n",
"Epoch 201/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 11.1584 - custom_mae: 3.4535 - accuracy: 0.0417 - val_loss: 476.2689 - val_custom_mae: 26.4369 - val_accuracy: 0.0000e+00\n",
"Epoch 202/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 10.6642 - custom_mae: 3.3776 - accuracy: 0.0417 - val_loss: 475.9219 - val_custom_mae: 26.4274 - val_accuracy: 0.0000e+00\n",
"Epoch 203/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 10.6251 - custom_mae: 3.3579 - accuracy: 0.0417 - val_loss: 480.9362 - val_custom_mae: 26.6021 - val_accuracy: 0.0000e+00\n",
"Epoch 204/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 10.2866 - custom_mae: 3.3197 - accuracy: 0.0417 - val_loss: 477.6129 - val_custom_mae: 26.4705 - val_accuracy: 0.0000e+00\n",
"Epoch 205/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 9.9283 - custom_mae: 3.2573 - accuracy: 0.0417 - val_loss: 476.9622 - val_custom_mae: 26.4626 - val_accuracy: 0.0000e+00\n",
"Epoch 206/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 9.8609 - custom_mae: 3.2517 - accuracy: 0.0417 - val_loss: 475.8647 - val_custom_mae: 26.4406 - val_accuracy: 0.0000e+00\n",
"Epoch 207/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 9.4229 - custom_mae: 3.1697 - accuracy: 0.0417 - val_loss: 479.7575 - val_custom_mae: 26.5694 - val_accuracy: 0.0000e+00\n",
"Epoch 208/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 9.3209 - custom_mae: 3.1502 - accuracy: 0.0417 - val_loss: 480.2411 - val_custom_mae: 26.5635 - val_accuracy: 0.0000e+00\n",
"Epoch 209/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 9.2476 - custom_mae: 3.1546 - accuracy: 0.0417 - val_loss: 483.7486 - val_custom_mae: 26.6802 - val_accuracy: 0.0000e+00\n",
"Epoch 210/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 8.7970 - custom_mae: 3.1031 - accuracy: 0.0417 - val_loss: 482.4272 - val_custom_mae: 26.6145 - val_accuracy: 0.0000e+00\n",
"Epoch 211/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 8.8304 - custom_mae: 3.0748 - accuracy: 0.0417 - val_loss: 477.6331 - val_custom_mae: 26.4479 - val_accuracy: 0.0000e+00\n",
"Epoch 212/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 8.4544 - custom_mae: 2.9726 - accuracy: 0.0417 - val_loss: 482.2137 - val_custom_mae: 26.6322 - val_accuracy: 0.0000e+00\n",
"Epoch 213/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 8.2045 - custom_mae: 2.9717 - accuracy: 0.0417 - val_loss: 483.4682 - val_custom_mae: 26.6789 - val_accuracy: 0.0000e+00\n",
"Epoch 214/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 8.0322 - custom_mae: 2.9384 - accuracy: 0.0417 - val_loss: 478.7954 - val_custom_mae: 26.5078 - val_accuracy: 0.0000e+00\n",
"Epoch 215/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 7.7288 - custom_mae: 2.8449 - accuracy: 0.0417 - val_loss: 481.1552 - val_custom_mae: 26.5881 - val_accuracy: 0.0000e+00\n",
"Epoch 216/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 7.5951 - custom_mae: 2.8360 - accuracy: 0.0417 - val_loss: 483.2097 - val_custom_mae: 26.6620 - val_accuracy: 0.0000e+00\n",
"Epoch 217/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 7.3217 - custom_mae: 2.7876 - accuracy: 0.0417 - val_loss: 482.3259 - val_custom_mae: 26.6244 - val_accuracy: 0.0000e+00\n",
"Epoch 218/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 7.1674 - custom_mae: 2.7456 - accuracy: 0.0417 - val_loss: 482.1502 - val_custom_mae: 26.6162 - val_accuracy: 0.0000e+00\n",
"Epoch 219/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 7.0554 - custom_mae: 2.7201 - accuracy: 0.0417 - val_loss: 481.5610 - val_custom_mae: 26.6031 - val_accuracy: 0.0000e+00\n",
"Epoch 220/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 6.7992 - custom_mae: 2.6690 - accuracy: 0.0417 - val_loss: 480.9422 - val_custom_mae: 26.5998 - val_accuracy: 0.0000e+00\n",
"Epoch 221/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 6.6288 - custom_mae: 2.6315 - accuracy: 0.0417 - val_loss: 482.3175 - val_custom_mae: 26.6392 - val_accuracy: 0.0000e+00\n",
"Epoch 222/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 6.4631 - custom_mae: 2.5971 - accuracy: 0.0417 - val_loss: 482.6704 - val_custom_mae: 26.6644 - val_accuracy: 0.0000e+00\n",
"Epoch 223/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 6.2518 - custom_mae: 2.5768 - accuracy: 0.0417 - val_loss: 484.4213 - val_custom_mae: 26.7052 - val_accuracy: 0.0000e+00\n",
"Epoch 224/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 6.1151 - custom_mae: 2.5461 - accuracy: 0.0417 - val_loss: 482.9436 - val_custom_mae: 26.6709 - val_accuracy: 0.0000e+00\n",
"Epoch 225/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.9538 - custom_mae: 2.5064 - accuracy: 0.0417 - val_loss: 481.1745 - val_custom_mae: 26.6197 - val_accuracy: 0.0000e+00\n",
"Epoch 226/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.7982 - custom_mae: 2.4491 - accuracy: 0.0417 - val_loss: 483.1761 - val_custom_mae: 26.6742 - val_accuracy: 0.0000e+00\n",
"Epoch 227/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.6811 - custom_mae: 2.4184 - accuracy: 0.0417 - val_loss: 481.5321 - val_custom_mae: 26.6290 - val_accuracy: 0.0000e+00\n",
"Epoch 228/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.6439 - custom_mae: 2.4236 - accuracy: 0.0417 - val_loss: 484.2849 - val_custom_mae: 26.7045 - val_accuracy: 0.0000e+00\n",
"Epoch 229/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.3910 - custom_mae: 2.4047 - accuracy: 0.0417 - val_loss: 484.6814 - val_custom_mae: 26.7116 - val_accuracy: 0.0000e+00\n",
"Epoch 230/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.2502 - custom_mae: 2.3314 - accuracy: 0.0417 - val_loss: 481.8926 - val_custom_mae: 26.6336 - val_accuracy: 0.0000e+00\n",
"Epoch 231/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.1015 - custom_mae: 2.2883 - accuracy: 0.0417 - val_loss: 483.5603 - val_custom_mae: 26.6887 - val_accuracy: 0.0000e+00\n",
"Epoch 232/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.9428 - custom_mae: 2.2504 - accuracy: 0.0417 - val_loss: 484.5164 - val_custom_mae: 26.7148 - val_accuracy: 0.0000e+00\n",
"Epoch 233/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.8061 - custom_mae: 2.2283 - accuracy: 0.0417 - val_loss: 483.0309 - val_custom_mae: 26.6787 - val_accuracy: 0.0000e+00\n",
"Epoch 234/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.7203 - custom_mae: 2.1983 - accuracy: 0.0417 - val_loss: 482.1803 - val_custom_mae: 26.6563 - val_accuracy: 0.0000e+00\n",
"Epoch 235/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.5844 - custom_mae: 2.1763 - accuracy: 0.0417 - val_loss: 485.1508 - val_custom_mae: 26.7345 - val_accuracy: 0.0000e+00\n",
"Epoch 236/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.4690 - custom_mae: 2.1567 - accuracy: 0.0417 - val_loss: 484.5008 - val_custom_mae: 26.7102 - val_accuracy: 0.0000e+00\n",
"Epoch 237/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.3288 - custom_mae: 2.1133 - accuracy: 0.0417 - val_loss: 484.6514 - val_custom_mae: 26.7237 - val_accuracy: 0.0000e+00\n",
"Epoch 238/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.1703 - custom_mae: 2.0672 - accuracy: 0.0417 - val_loss: 484.2482 - val_custom_mae: 26.7213 - val_accuracy: 0.0000e+00\n",
"Epoch 239/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.1035 - custom_mae: 2.0552 - accuracy: 0.0417 - val_loss: 485.8715 - val_custom_mae: 26.7689 - val_accuracy: 0.0000e+00\n",
"Epoch 240/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.0573 - custom_mae: 2.0286 - accuracy: 0.0417 - val_loss: 482.4370 - val_custom_mae: 26.6746 - val_accuracy: 0.0000e+00\n",
"Epoch 241/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.8923 - custom_mae: 1.9748 - accuracy: 0.0417 - val_loss: 484.6525 - val_custom_mae: 26.7375 - val_accuracy: 0.0000e+00\n",
"Epoch 242/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.8083 - custom_mae: 1.9649 - accuracy: 0.0417 - val_loss: 486.6066 - val_custom_mae: 26.7897 - val_accuracy: 0.0000e+00\n",
"Epoch 243/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.6956 - custom_mae: 1.9540 - accuracy: 0.0417 - val_loss: 486.0649 - val_custom_mae: 26.7732 - val_accuracy: 0.0000e+00\n",
"Epoch 244/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.5765 - custom_mae: 1.9265 - accuracy: 0.0417 - val_loss: 485.4619 - val_custom_mae: 26.7510 - val_accuracy: 0.0000e+00\n",
"Epoch 245/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.5586 - custom_mae: 1.8838 - accuracy: 0.0417 - val_loss: 483.5710 - val_custom_mae: 26.7111 - val_accuracy: 0.0000e+00\n",
"Epoch 246/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.4745 - custom_mae: 1.8430 - accuracy: 0.0417 - val_loss: 485.7385 - val_custom_mae: 26.7809 - val_accuracy: 0.0000e+00\n",
"Epoch 247/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.2997 - custom_mae: 1.8138 - accuracy: 0.0417 - val_loss: 484.8431 - val_custom_mae: 26.7510 - val_accuracy: 0.0000e+00\n",
"Epoch 248/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.2009 - custom_mae: 1.7841 - accuracy: 0.0417 - val_loss: 484.9460 - val_custom_mae: 26.7484 - val_accuracy: 0.0000e+00\n",
"Epoch 249/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.1651 - custom_mae: 1.7822 - accuracy: 0.0417 - val_loss: 486.1873 - val_custom_mae: 26.7779 - val_accuracy: 0.0000e+00\n",
"Epoch 250/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.0366 - custom_mae: 1.7465 - accuracy: 0.0417 - val_loss: 487.0725 - val_custom_mae: 26.8050 - val_accuracy: 0.0000e+00\n",
"Epoch 251/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.9916 - custom_mae: 1.7321 - accuracy: 0.0417 - val_loss: 486.6724 - val_custom_mae: 26.8004 - val_accuracy: 0.0000e+00\n",
"Epoch 252/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.9219 - custom_mae: 1.7150 - accuracy: 0.0417 - val_loss: 487.4058 - val_custom_mae: 26.8154 - val_accuracy: 0.0000e+00\n",
"Epoch 253/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.8601 - custom_mae: 1.6870 - accuracy: 0.0417 - val_loss: 485.9131 - val_custom_mae: 26.7819 - val_accuracy: 0.0000e+00\n",
"Epoch 254/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.7535 - custom_mae: 1.6466 - accuracy: 0.0417 - val_loss: 487.6457 - val_custom_mae: 26.8282 - val_accuracy: 0.0000e+00\n",
"Epoch 255/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.7029 - custom_mae: 1.6742 - accuracy: 0.0417 - val_loss: 486.9001 - val_custom_mae: 26.8037 - val_accuracy: 0.0000e+00\n",
"Epoch 256/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.5937 - custom_mae: 1.6200 - accuracy: 0.0417 - val_loss: 485.7010 - val_custom_mae: 26.7692 - val_accuracy: 0.0000e+00\n",
"Epoch 257/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.5744 - custom_mae: 1.5719 - accuracy: 0.0417 - val_loss: 485.4424 - val_custom_mae: 26.7727 - val_accuracy: 0.0000e+00\n",
"Epoch 258/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.4540 - custom_mae: 1.5382 - accuracy: 0.0417 - val_loss: 486.7944 - val_custom_mae: 26.8143 - val_accuracy: 0.0000e+00\n",
"Epoch 259/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.3810 - custom_mae: 1.5183 - accuracy: 0.0417 - val_loss: 486.7484 - val_custom_mae: 26.8047 - val_accuracy: 0.0000e+00\n",
"Epoch 260/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.3523 - custom_mae: 1.5282 - accuracy: 0.0417 - val_loss: 487.8643 - val_custom_mae: 26.8270 - val_accuracy: 0.0000e+00\n",
"Epoch 261/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.3121 - custom_mae: 1.5271 - accuracy: 0.0417 - val_loss: 487.3483 - val_custom_mae: 26.8192 - val_accuracy: 0.0000e+00\n",
"Epoch 262/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.1976 - custom_mae: 1.4701 - accuracy: 0.0417 - val_loss: 487.7708 - val_custom_mae: 26.8348 - val_accuracy: 0.0000e+00\n",
"Epoch 263/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.1569 - custom_mae: 1.4452 - accuracy: 0.0417 - val_loss: 487.0035 - val_custom_mae: 26.8101 - val_accuracy: 0.0000e+00\n",
"Epoch 264/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.1042 - custom_mae: 1.4067 - accuracy: 0.0417 - val_loss: 486.7105 - val_custom_mae: 26.8014 - val_accuracy: 0.0000e+00\n",
"Epoch 265/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.0109 - custom_mae: 1.3925 - accuracy: 0.0417 - val_loss: 487.7247 - val_custom_mae: 26.8299 - val_accuracy: 0.0000e+00\n",
"Epoch 266/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.9935 - custom_mae: 1.4166 - accuracy: 0.0417 - val_loss: 488.8463 - val_custom_mae: 26.8552 - val_accuracy: 0.0000e+00\n",
"Epoch 267/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.9531 - custom_mae: 1.3788 - accuracy: 0.0417 - val_loss: 487.1858 - val_custom_mae: 26.8107 - val_accuracy: 0.0000e+00\n",
"Epoch 268/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.8745 - custom_mae: 1.3282 - accuracy: 0.0417 - val_loss: 487.7438 - val_custom_mae: 26.8362 - val_accuracy: 0.0000e+00\n",
"Epoch 269/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.8010 - custom_mae: 1.3065 - accuracy: 0.0417 - val_loss: 489.0699 - val_custom_mae: 26.8655 - val_accuracy: 0.0000e+00\n",
"Epoch 270/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.7769 - custom_mae: 1.3088 - accuracy: 0.0417 - val_loss: 488.2446 - val_custom_mae: 26.8362 - val_accuracy: 0.0000e+00\n",
"Epoch 271/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.7711 - custom_mae: 1.3366 - accuracy: 0.0417 - val_loss: 488.4815 - val_custom_mae: 26.8399 - val_accuracy: 0.0000e+00\n",
"Epoch 272/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.6652 - custom_mae: 1.2751 - accuracy: 0.0417 - val_loss: 487.8883 - val_custom_mae: 26.8287 - val_accuracy: 0.0000e+00\n",
"Epoch 273/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.6143 - custom_mae: 1.2271 - accuracy: 0.0417 - val_loss: 488.2449 - val_custom_mae: 26.8406 - val_accuracy: 0.0000e+00\n",
"Epoch 274/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.6082 - custom_mae: 1.2450 - accuracy: 0.0417 - val_loss: 488.4309 - val_custom_mae: 26.8439 - val_accuracy: 0.0000e+00\n",
"Epoch 275/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.5240 - custom_mae: 1.2057 - accuracy: 0.0417 - val_loss: 488.4113 - val_custom_mae: 26.8350 - val_accuracy: 0.0000e+00\n",
"Epoch 276/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.4973 - custom_mae: 1.1910 - accuracy: 0.0417 - val_loss: 488.4000 - val_custom_mae: 26.8347 - val_accuracy: 0.0000e+00\n",
"Epoch 277/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.4520 - custom_mae: 1.1725 - accuracy: 0.0417 - val_loss: 488.4713 - val_custom_mae: 26.8412 - val_accuracy: 0.0000e+00\n",
"Epoch 278/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 1.3980 - custom_mae: 1.1481 - accuracy: 0.0417 - val_loss: 488.7491 - val_custom_mae: 26.8505 - val_accuracy: 0.0000e+00\n",
"Epoch 279/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.3548 - custom_mae: 1.1228 - accuracy: 0.0417 - val_loss: 488.9457 - val_custom_mae: 26.8549 - val_accuracy: 0.0000e+00\n",
"Epoch 280/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.3351 - custom_mae: 1.1085 - accuracy: 0.0417 - val_loss: 488.3984 - val_custom_mae: 26.8396 - val_accuracy: 0.0000e+00\n",
"Epoch 281/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 1.2813 - custom_mae: 1.0892 - accuracy: 0.0417 - val_loss: 489.3159 - val_custom_mae: 26.8581 - val_accuracy: 0.0000e+00\n",
"Epoch 282/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.2785 - custom_mae: 1.1231 - accuracy: 0.0417 - val_loss: 489.8076 - val_custom_mae: 26.8672 - val_accuracy: 0.0000e+00\n",
"Epoch 283/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.2103 - custom_mae: 1.0779 - accuracy: 0.0417 - val_loss: 489.5902 - val_custom_mae: 26.8607 - val_accuracy: 0.0000e+00\n",
"Epoch 284/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.1828 - custom_mae: 1.0525 - accuracy: 0.0417 - val_loss: 489.1288 - val_custom_mae: 26.8514 - val_accuracy: 0.0000e+00\n",
"Epoch 285/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 1.1573 - custom_mae: 1.0459 - accuracy: 0.0417 - val_loss: 489.6539 - val_custom_mae: 26.8638 - val_accuracy: 0.0000e+00\n",
"Epoch 286/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.1059 - custom_mae: 1.0117 - accuracy: 0.0417 - val_loss: 489.4764 - val_custom_mae: 26.8570 - val_accuracy: 0.0000e+00\n",
"Epoch 287/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.0807 - custom_mae: 1.0001 - accuracy: 0.0417 - val_loss: 489.7199 - val_custom_mae: 26.8640 - val_accuracy: 0.0000e+00\n",
"Epoch 288/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.0718 - custom_mae: 0.9890 - accuracy: 0.0417 - val_loss: 489.0706 - val_custom_mae: 26.8514 - val_accuracy: 0.0000e+00\n",
"Epoch 289/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 1.0287 - custom_mae: 0.9621 - accuracy: 0.0417 - val_loss: 489.6757 - val_custom_mae: 26.8680 - val_accuracy: 0.0000e+00\n",
"Epoch 290/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.9918 - custom_mae: 0.9491 - accuracy: 0.0417 - val_loss: 489.7965 - val_custom_mae: 26.8615 - val_accuracy: 0.0000e+00\n",
"Epoch 291/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.9727 - custom_mae: 0.9435 - accuracy: 0.0417 - val_loss: 489.5268 - val_custom_mae: 26.8530 - val_accuracy: 0.0000e+00\n",
"Epoch 292/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.9295 - custom_mae: 0.9131 - accuracy: 0.0417 - val_loss: 489.4735 - val_custom_mae: 26.8555 - val_accuracy: 0.0000e+00\n",
"Epoch 293/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.9144 - custom_mae: 0.9202 - accuracy: 0.0417 - val_loss: 491.0399 - val_custom_mae: 26.8941 - val_accuracy: 0.0000e+00\n",
"Epoch 294/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.9095 - custom_mae: 0.9488 - accuracy: 0.0417 - val_loss: 490.7638 - val_custom_mae: 26.8798 - val_accuracy: 0.0000e+00\n",
"Epoch 295/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.8483 - custom_mae: 0.8974 - accuracy: 0.0417 - val_loss: 490.3413 - val_custom_mae: 26.8688 - val_accuracy: 0.0000e+00\n",
"Epoch 296/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.8330 - custom_mae: 0.8698 - accuracy: 0.0417 - val_loss: 490.5738 - val_custom_mae: 26.8810 - val_accuracy: 0.0000e+00\n",
"Epoch 297/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.8146 - custom_mae: 0.8633 - accuracy: 0.0417 - val_loss: 490.6082 - val_custom_mae: 26.8784 - val_accuracy: 0.0000e+00\n",
"Epoch 298/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.7932 - custom_mae: 0.8358 - accuracy: 0.0417 - val_loss: 489.8294 - val_custom_mae: 26.8530 - val_accuracy: 0.0000e+00\n",
"Epoch 299/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.7604 - custom_mae: 0.8166 - accuracy: 0.0417 - val_loss: 490.5051 - val_custom_mae: 26.8729 - val_accuracy: 0.0000e+00\n",
"Epoch 300/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.7348 - custom_mae: 0.8074 - accuracy: 0.0417 - val_loss: 490.5215 - val_custom_mae: 26.8753 - val_accuracy: 0.0000e+00\n",
"Epoch 301/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.7105 - custom_mae: 0.7996 - accuracy: 0.0417 - val_loss: 491.4999 - val_custom_mae: 26.9012 - val_accuracy: 0.0000e+00\n",
"Epoch 302/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.7176 - custom_mae: 0.8318 - accuracy: 0.0417 - val_loss: 491.8369 - val_custom_mae: 26.9076 - val_accuracy: 0.0000e+00\n",
"Epoch 303/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.6669 - custom_mae: 0.7988 - accuracy: 0.0417 - val_loss: 491.5625 - val_custom_mae: 26.8972 - val_accuracy: 0.0000e+00\n",
"Epoch 304/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.6482 - custom_mae: 0.7726 - accuracy: 0.0417 - val_loss: 491.5914 - val_custom_mae: 26.8999 - val_accuracy: 0.0000e+00\n",
"Epoch 305/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.6304 - custom_mae: 0.7482 - accuracy: 0.0417 - val_loss: 491.4050 - val_custom_mae: 26.8977 - val_accuracy: 0.0000e+00\n",
"Epoch 306/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.6217 - custom_mae: 0.7486 - accuracy: 0.0417 - val_loss: 492.0545 - val_custom_mae: 26.9137 - val_accuracy: 0.0000e+00\n",
"Epoch 307/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.5897 - custom_mae: 0.7256 - accuracy: 0.0417 - val_loss: 491.6697 - val_custom_mae: 26.8996 - val_accuracy: 0.0000e+00\n",
"Epoch 308/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.5818 - custom_mae: 0.7112 - accuracy: 0.0417 - val_loss: 491.8970 - val_custom_mae: 26.9064 - val_accuracy: 0.0000e+00\n",
"Epoch 309/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.5544 - custom_mae: 0.7007 - accuracy: 0.0417 - val_loss: 492.2628 - val_custom_mae: 26.9152 - val_accuracy: 0.0000e+00\n",
"Epoch 310/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.5454 - custom_mae: 0.6890 - accuracy: 0.0417 - val_loss: 491.7086 - val_custom_mae: 26.8989 - val_accuracy: 0.0000e+00\n",
"Epoch 311/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.5413 - custom_mae: 0.6991 - accuracy: 0.0417 - val_loss: 492.8210 - val_custom_mae: 26.9295 - val_accuracy: 0.0000e+00\n",
"Epoch 312/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.5090 - custom_mae: 0.6852 - accuracy: 0.0417 - val_loss: 492.4782 - val_custom_mae: 26.9173 - val_accuracy: 0.0000e+00\n",
"Epoch 313/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.4935 - custom_mae: 0.6604 - accuracy: 0.0417 - val_loss: 492.3422 - val_custom_mae: 26.9127 - val_accuracy: 0.0000e+00\n",
"Epoch 314/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.4805 - custom_mae: 0.6533 - accuracy: 0.0417 - val_loss: 492.7933 - val_custom_mae: 26.9251 - val_accuracy: 0.0000e+00\n",
"Epoch 315/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.4609 - custom_mae: 0.6370 - accuracy: 0.0417 - val_loss: 492.6136 - val_custom_mae: 26.9206 - val_accuracy: 0.0000e+00\n",
"Epoch 316/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.4516 - custom_mae: 0.6220 - accuracy: 0.0417 - val_loss: 492.3545 - val_custom_mae: 26.9116 - val_accuracy: 0.0000e+00\n",
"Epoch 317/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.4295 - custom_mae: 0.6018 - accuracy: 0.0417 - val_loss: 492.4247 - val_custom_mae: 26.9142 - val_accuracy: 0.0000e+00\n",
"Epoch 318/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.4188 - custom_mae: 0.6046 - accuracy: 0.0417 - val_loss: 493.3983 - val_custom_mae: 26.9355 - val_accuracy: 0.0000e+00\n",
"Epoch 319/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.4074 - custom_mae: 0.6093 - accuracy: 0.0417 - val_loss: 492.9115 - val_custom_mae: 26.9212 - val_accuracy: 0.0000e+00\n",
"Epoch 320/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.3992 - custom_mae: 0.5902 - accuracy: 0.0417 - val_loss: 493.3150 - val_custom_mae: 26.9336 - val_accuracy: 0.0000e+00\n",
"Epoch 321/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.3761 - custom_mae: 0.5705 - accuracy: 0.0417 - val_loss: 493.3654 - val_custom_mae: 26.9372 - val_accuracy: 0.0000e+00\n",
"Epoch 322/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.3696 - custom_mae: 0.5747 - accuracy: 0.0417 - val_loss: 493.6761 - val_custom_mae: 26.9436 - val_accuracy: 0.0000e+00\n",
"Epoch 323/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.3619 - custom_mae: 0.5804 - accuracy: 0.0417 - val_loss: 493.7351 - val_custom_mae: 26.9404 - val_accuracy: 0.0000e+00\n",
"Epoch 324/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.3415 - custom_mae: 0.5621 - accuracy: 0.0417 - val_loss: 493.8978 - val_custom_mae: 26.9422 - val_accuracy: 0.0000e+00\n",
"Epoch 325/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.3310 - custom_mae: 0.5378 - accuracy: 0.0417 - val_loss: 493.8358 - val_custom_mae: 26.9441 - val_accuracy: 0.0000e+00\n",
"Epoch 326/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.3340 - custom_mae: 0.5253 - accuracy: 0.0417 - val_loss: 493.1354 - val_custom_mae: 26.9265 - val_accuracy: 0.0000e+00\n",
"Epoch 327/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.3111 - custom_mae: 0.5072 - accuracy: 0.0417 - val_loss: 494.1719 - val_custom_mae: 26.9546 - val_accuracy: 0.0000e+00\n",
"Epoch 328/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.3109 - custom_mae: 0.5297 - accuracy: 0.0417 - val_loss: 494.3883 - val_custom_mae: 26.9533 - val_accuracy: 0.0000e+00\n",
"Epoch 329/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2908 - custom_mae: 0.5176 - accuracy: 0.0417 - val_loss: 494.2490 - val_custom_mae: 26.9481 - val_accuracy: 0.0000e+00\n",
"Epoch 330/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2818 - custom_mae: 0.5050 - accuracy: 0.0417 - val_loss: 494.5416 - val_custom_mae: 26.9603 - val_accuracy: 0.0000e+00\n",
"Epoch 331/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2808 - custom_mae: 0.4855 - accuracy: 0.0417 - val_loss: 493.9260 - val_custom_mae: 26.9455 - val_accuracy: 0.0000e+00\n",
"Epoch 332/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2660 - custom_mae: 0.4782 - accuracy: 0.0417 - val_loss: 494.6317 - val_custom_mae: 26.9635 - val_accuracy: 0.0000e+00\n",
"Epoch 333/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2546 - custom_mae: 0.4685 - accuracy: 0.0417 - val_loss: 494.2513 - val_custom_mae: 26.9488 - val_accuracy: 0.0000e+00\n",
"Epoch 334/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2582 - custom_mae: 0.4839 - accuracy: 0.0417 - val_loss: 494.9866 - val_custom_mae: 26.9672 - val_accuracy: 0.0000e+00\n",
"Epoch 335/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2404 - custom_mae: 0.4712 - accuracy: 0.0417 - val_loss: 495.0686 - val_custom_mae: 26.9691 - val_accuracy: 0.0000e+00\n",
"Epoch 336/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.2381 - custom_mae: 0.4418 - accuracy: 0.0417 - val_loss: 494.2435 - val_custom_mae: 26.9496 - val_accuracy: 0.0000e+00\n",
"Epoch 337/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2292 - custom_mae: 0.4422 - accuracy: 0.0417 - val_loss: 495.1205 - val_custom_mae: 26.9709 - val_accuracy: 0.0000e+00\n",
"Epoch 338/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2142 - custom_mae: 0.4290 - accuracy: 0.0417 - val_loss: 494.4334 - val_custom_mae: 26.9437 - val_accuracy: 0.0000e+00\n",
"Epoch 339/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.2084 - custom_mae: 0.4247 - accuracy: 0.0417 - val_loss: 494.7942 - val_custom_mae: 26.9488 - val_accuracy: 0.0000e+00\n",
"Epoch 340/500\n",
"8/8 [==============================] - 0s 13ms/step - loss: 0.1987 - custom_mae: 0.4204 - accuracy: 0.0417 - val_loss: 494.9329 - val_custom_mae: 26.9485 - val_accuracy: 0.0000e+00\n",
"Epoch 341/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1987 - custom_mae: 0.4091 - accuracy: 0.0417 - val_loss: 494.6151 - val_custom_mae: 26.9407 - val_accuracy: 0.0000e+00\n",
"Epoch 342/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.1975 - custom_mae: 0.4155 - accuracy: 0.0417 - val_loss: 495.0503 - val_custom_mae: 26.9517 - val_accuracy: 0.0000e+00\n",
"Epoch 343/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1863 - custom_mae: 0.3969 - accuracy: 0.0417 - val_loss: 494.3197 - val_custom_mae: 26.9326 - val_accuracy: 0.0000e+00\n",
"Epoch 344/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1715 - custom_mae: 0.3738 - accuracy: 0.0417 - val_loss: 494.9692 - val_custom_mae: 26.9513 - val_accuracy: 0.0000e+00\n",
"Epoch 345/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1693 - custom_mae: 0.3822 - accuracy: 0.0417 - val_loss: 495.3814 - val_custom_mae: 26.9565 - val_accuracy: 0.0000e+00\n",
"Epoch 346/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1623 - custom_mae: 0.3803 - accuracy: 0.0417 - val_loss: 495.2960 - val_custom_mae: 26.9538 - val_accuracy: 0.0000e+00\n",
"Epoch 347/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1579 - custom_mae: 0.3726 - accuracy: 0.0417 - val_loss: 494.9153 - val_custom_mae: 26.9464 - val_accuracy: 0.0000e+00\n",
"Epoch 348/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1576 - custom_mae: 0.3721 - accuracy: 0.0417 - val_loss: 495.5757 - val_custom_mae: 26.9584 - val_accuracy: 0.0000e+00\n",
"Epoch 349/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1436 - custom_mae: 0.3610 - accuracy: 0.0417 - val_loss: 495.4489 - val_custom_mae: 26.9470 - val_accuracy: 0.0000e+00\n",
"Epoch 350/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1431 - custom_mae: 0.3475 - accuracy: 0.0417 - val_loss: 495.2490 - val_custom_mae: 26.9432 - val_accuracy: 0.0000e+00\n",
"Epoch 351/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1362 - custom_mae: 0.3362 - accuracy: 0.0417 - val_loss: 495.7759 - val_custom_mae: 26.9607 - val_accuracy: 0.0000e+00\n",
"Epoch 352/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.1297 - custom_mae: 0.3326 - accuracy: 0.0417 - val_loss: 495.4026 - val_custom_mae: 26.9494 - val_accuracy: 0.0000e+00\n",
"Epoch 353/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.1245 - custom_mae: 0.3256 - accuracy: 0.0417 - val_loss: 495.6801 - val_custom_mae: 26.9568 - val_accuracy: 0.0000e+00\n",
"Epoch 354/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1210 - custom_mae: 0.3264 - accuracy: 0.0417 - val_loss: 496.0530 - val_custom_mae: 26.9644 - val_accuracy: 0.0000e+00\n",
"Epoch 355/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1152 - custom_mae: 0.3187 - accuracy: 0.0417 - val_loss: 495.8714 - val_custom_mae: 26.9562 - val_accuracy: 0.0000e+00\n",
"Epoch 356/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1117 - custom_mae: 0.3086 - accuracy: 0.0417 - val_loss: 495.8951 - val_custom_mae: 26.9568 - val_accuracy: 0.0000e+00\n",
"Epoch 357/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1121 - custom_mae: 0.3017 - accuracy: 0.0417 - val_loss: 495.8504 - val_custom_mae: 26.9556 - val_accuracy: 0.0000e+00\n",
"Epoch 358/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1074 - custom_mae: 0.3031 - accuracy: 0.0417 - val_loss: 496.4321 - val_custom_mae: 26.9685 - val_accuracy: 0.0000e+00\n",
"Epoch 359/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.1014 - custom_mae: 0.2996 - accuracy: 0.0417 - val_loss: 496.1546 - val_custom_mae: 26.9593 - val_accuracy: 0.0000e+00\n",
"Epoch 360/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0957 - custom_mae: 0.2903 - accuracy: 0.0417 - val_loss: 496.2288 - val_custom_mae: 26.9634 - val_accuracy: 0.0000e+00\n",
"Epoch 361/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0931 - custom_mae: 0.2792 - accuracy: 0.0417 - val_loss: 496.2048 - val_custom_mae: 26.9635 - val_accuracy: 0.0000e+00\n",
"Epoch 362/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0912 - custom_mae: 0.2787 - accuracy: 0.0417 - val_loss: 496.6744 - val_custom_mae: 26.9743 - val_accuracy: 0.0000e+00\n",
"Epoch 363/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0866 - custom_mae: 0.2782 - accuracy: 0.0417 - val_loss: 496.5798 - val_custom_mae: 26.9681 - val_accuracy: 0.0000e+00\n",
"Epoch 364/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0844 - custom_mae: 0.2649 - accuracy: 0.0417 - val_loss: 496.2144 - val_custom_mae: 26.9607 - val_accuracy: 0.0000e+00\n",
"Epoch 365/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0808 - custom_mae: 0.2579 - accuracy: 0.0417 - val_loss: 496.8933 - val_custom_mae: 26.9792 - val_accuracy: 0.0000e+00\n",
"Epoch 366/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0765 - custom_mae: 0.2568 - accuracy: 0.0417 - val_loss: 496.6259 - val_custom_mae: 26.9691 - val_accuracy: 0.0000e+00\n",
"Epoch 367/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0755 - custom_mae: 0.2580 - accuracy: 0.0417 - val_loss: 496.8974 - val_custom_mae: 26.9749 - val_accuracy: 0.0000e+00\n",
"Epoch 368/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0717 - custom_mae: 0.2495 - accuracy: 0.0417 - val_loss: 496.8920 - val_custom_mae: 26.9769 - val_accuracy: 0.0000e+00\n",
"Epoch 369/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0697 - custom_mae: 0.2503 - accuracy: 0.0417 - val_loss: 497.0009 - val_custom_mae: 26.9795 - val_accuracy: 0.0000e+00\n",
"Epoch 370/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0668 - custom_mae: 0.2366 - accuracy: 0.0417 - val_loss: 496.7284 - val_custom_mae: 26.9724 - val_accuracy: 0.0000e+00\n",
"Epoch 371/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0643 - custom_mae: 0.2342 - accuracy: 0.0417 - val_loss: 497.2168 - val_custom_mae: 26.9857 - val_accuracy: 0.0000e+00\n",
"Epoch 372/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0601 - custom_mae: 0.2293 - accuracy: 0.0417 - val_loss: 497.0638 - val_custom_mae: 26.9790 - val_accuracy: 0.0000e+00\n",
"Epoch 373/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0604 - custom_mae: 0.2347 - accuracy: 0.0417 - val_loss: 497.4595 - val_custom_mae: 26.9871 - val_accuracy: 0.0000e+00\n",
"Epoch 374/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0567 - custom_mae: 0.2206 - accuracy: 0.0417 - val_loss: 497.0615 - val_custom_mae: 26.9781 - val_accuracy: 0.0000e+00\n",
"Epoch 375/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0537 - custom_mae: 0.2090 - accuracy: 0.0417 - val_loss: 497.2368 - val_custom_mae: 26.9851 - val_accuracy: 0.0000e+00\n",
"Epoch 376/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0520 - custom_mae: 0.2067 - accuracy: 0.0417 - val_loss: 497.4591 - val_custom_mae: 26.9886 - val_accuracy: 0.0000e+00\n",
"Epoch 377/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0510 - custom_mae: 0.2146 - accuracy: 0.0417 - val_loss: 497.6440 - val_custom_mae: 26.9901 - val_accuracy: 0.0000e+00\n",
"Epoch 378/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0484 - custom_mae: 0.2105 - accuracy: 0.0417 - val_loss: 497.5444 - val_custom_mae: 26.9879 - val_accuracy: 0.0000e+00\n",
"Epoch 379/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0467 - custom_mae: 0.2013 - accuracy: 0.0417 - val_loss: 497.5261 - val_custom_mae: 26.9903 - val_accuracy: 0.0000e+00\n",
"Epoch 380/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 0.0445 - custom_mae: 0.1960 - accuracy: 0.0417 - val_loss: 497.7465 - val_custom_mae: 26.9950 - val_accuracy: 0.0000e+00\n",
"Epoch 381/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0419 - custom_mae: 0.1950 - accuracy: 0.0417 - val_loss: 497.7120 - val_custom_mae: 26.9909 - val_accuracy: 0.0000e+00\n",
"Epoch 382/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0416 - custom_mae: 0.1949 - accuracy: 0.0417 - val_loss: 497.7560 - val_custom_mae: 26.9930 - val_accuracy: 0.0000e+00\n",
"Epoch 383/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0402 - custom_mae: 0.1822 - accuracy: 0.0417 - val_loss: 497.4890 - val_custom_mae: 26.9874 - val_accuracy: 0.0000e+00\n",
"Epoch 384/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0376 - custom_mae: 0.1732 - accuracy: 0.0417 - val_loss: 497.9262 - val_custom_mae: 26.9994 - val_accuracy: 0.0000e+00\n",
"Epoch 385/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0355 - custom_mae: 0.1749 - accuracy: 0.0417 - val_loss: 497.9811 - val_custom_mae: 26.9980 - val_accuracy: 0.0000e+00\n",
"Epoch 386/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0350 - custom_mae: 0.1792 - accuracy: 0.0417 - val_loss: 498.1114 - val_custom_mae: 26.9997 - val_accuracy: 0.0000e+00\n",
"Epoch 387/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0335 - custom_mae: 0.1760 - accuracy: 0.0417 - val_loss: 498.0630 - val_custom_mae: 26.9996 - val_accuracy: 0.0000e+00\n",
"Epoch 388/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0319 - custom_mae: 0.1701 - accuracy: 0.0417 - val_loss: 498.0527 - val_custom_mae: 27.0015 - val_accuracy: 0.0000e+00\n",
"Epoch 389/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0313 - custom_mae: 0.1688 - accuracy: 0.0417 - val_loss: 498.2177 - val_custom_mae: 27.0046 - val_accuracy: 0.0000e+00\n",
"Epoch 390/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0298 - custom_mae: 0.1604 - accuracy: 0.0417 - val_loss: 498.0598 - val_custom_mae: 26.9978 - val_accuracy: 0.0000e+00\n",
"Epoch 391/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0297 - custom_mae: 0.1548 - accuracy: 0.0417 - val_loss: 498.1248 - val_custom_mae: 27.0005 - val_accuracy: 0.0000e+00\n",
"Epoch 392/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0293 - custom_mae: 0.1593 - accuracy: 0.0417 - val_loss: 498.4585 - val_custom_mae: 27.0096 - val_accuracy: 0.0000e+00\n",
"Epoch 393/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0268 - custom_mae: 0.1576 - accuracy: 0.0417 - val_loss: 498.0756 - val_custom_mae: 26.9984 - val_accuracy: 0.0000e+00\n",
"Epoch 394/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0256 - custom_mae: 0.1525 - accuracy: 0.0417 - val_loss: 498.4431 - val_custom_mae: 27.0073 - val_accuracy: 0.0000e+00\n",
"Epoch 395/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0242 - custom_mae: 0.1463 - accuracy: 0.0417 - val_loss: 498.4828 - val_custom_mae: 27.0080 - val_accuracy: 0.0000e+00\n",
"Epoch 396/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0229 - custom_mae: 0.1409 - accuracy: 0.0417 - val_loss: 498.2771 - val_custom_mae: 27.0023 - val_accuracy: 0.0000e+00\n",
"Epoch 397/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0230 - custom_mae: 0.1439 - accuracy: 0.0417 - val_loss: 498.5149 - val_custom_mae: 27.0085 - val_accuracy: 0.0000e+00\n",
"Epoch 398/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0208 - custom_mae: 0.1411 - accuracy: 0.0417 - val_loss: 498.5582 - val_custom_mae: 27.0075 - val_accuracy: 0.0000e+00\n",
"Epoch 399/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0196 - custom_mae: 0.1319 - accuracy: 0.0417 - val_loss: 498.4999 - val_custom_mae: 27.0057 - val_accuracy: 0.0000e+00\n",
"Epoch 400/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0195 - custom_mae: 0.1302 - accuracy: 0.0417 - val_loss: 498.6266 - val_custom_mae: 27.0100 - val_accuracy: 0.0000e+00\n",
"Epoch 401/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0188 - custom_mae: 0.1263 - accuracy: 0.0417 - val_loss: 498.5002 - val_custom_mae: 27.0056 - val_accuracy: 0.0000e+00\n",
"Epoch 402/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0182 - custom_mae: 0.1250 - accuracy: 0.0417 - val_loss: 498.7569 - val_custom_mae: 27.0118 - val_accuracy: 0.0000e+00\n",
"Epoch 403/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0176 - custom_mae: 0.1230 - accuracy: 0.0417 - val_loss: 498.6774 - val_custom_mae: 27.0086 - val_accuracy: 0.0000e+00\n",
"Epoch 404/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0160 - custom_mae: 0.1190 - accuracy: 0.0417 - val_loss: 498.8095 - val_custom_mae: 27.0130 - val_accuracy: 0.0000e+00\n",
"Epoch 405/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0161 - custom_mae: 0.1260 - accuracy: 0.0417 - val_loss: 498.8636 - val_custom_mae: 27.0137 - val_accuracy: 0.0000e+00\n",
"Epoch 406/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0148 - custom_mae: 0.1193 - accuracy: 0.0417 - val_loss: 498.7666 - val_custom_mae: 27.0105 - val_accuracy: 0.0000e+00\n",
"Epoch 407/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0147 - custom_mae: 0.1144 - accuracy: 0.0417 - val_loss: 498.8578 - val_custom_mae: 27.0144 - val_accuracy: 0.0000e+00\n",
"Epoch 408/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0150 - custom_mae: 0.1120 - accuracy: 0.0417 - val_loss: 498.7195 - val_custom_mae: 27.0105 - val_accuracy: 0.0000e+00\n",
"Epoch 409/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0137 - custom_mae: 0.1091 - accuracy: 0.0417 - val_loss: 499.0517 - val_custom_mae: 27.0172 - val_accuracy: 0.0000e+00\n",
"Epoch 410/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0127 - custom_mae: 0.1085 - accuracy: 0.0417 - val_loss: 498.9183 - val_custom_mae: 27.0130 - val_accuracy: 0.0000e+00\n",
"Epoch 411/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0122 - custom_mae: 0.1073 - accuracy: 0.0417 - val_loss: 499.0080 - val_custom_mae: 27.0170 - val_accuracy: 0.0000e+00\n",
"Epoch 412/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0121 - custom_mae: 0.1027 - accuracy: 0.0417 - val_loss: 498.9417 - val_custom_mae: 27.0150 - val_accuracy: 0.0000e+00\n",
"Epoch 413/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0114 - custom_mae: 0.0995 - accuracy: 0.0417 - val_loss: 499.1314 - val_custom_mae: 27.0189 - val_accuracy: 0.0000e+00\n",
"Epoch 414/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0107 - custom_mae: 0.0982 - accuracy: 0.0417 - val_loss: 499.0407 - val_custom_mae: 27.0157 - val_accuracy: 0.0000e+00\n",
"Epoch 415/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0105 - custom_mae: 0.0999 - accuracy: 0.0417 - val_loss: 499.0301 - val_custom_mae: 27.0160 - val_accuracy: 0.0000e+00\n",
"Epoch 416/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0101 - custom_mae: 0.0991 - accuracy: 0.0417 - val_loss: 499.1465 - val_custom_mae: 27.0182 - val_accuracy: 0.0000e+00\n",
"Epoch 417/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0096 - custom_mae: 0.0940 - accuracy: 0.0417 - val_loss: 499.0759 - val_custom_mae: 27.0160 - val_accuracy: 0.0000e+00\n",
"Epoch 418/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0091 - custom_mae: 0.0874 - accuracy: 0.0417 - val_loss: 499.2227 - val_custom_mae: 27.0202 - val_accuracy: 0.0000e+00\n",
"Epoch 419/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0084 - custom_mae: 0.0860 - accuracy: 0.0417 - val_loss: 499.2723 - val_custom_mae: 27.0196 - val_accuracy: 0.0000e+00\n",
"Epoch 420/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0083 - custom_mae: 0.0904 - accuracy: 0.0417 - val_loss: 499.2439 - val_custom_mae: 27.0183 - val_accuracy: 0.0000e+00\n",
"Epoch 421/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0082 - custom_mae: 0.0863 - accuracy: 0.0417 - val_loss: 499.2122 - val_custom_mae: 27.0185 - val_accuracy: 0.0000e+00\n",
"Epoch 422/500\n",
"8/8 [==============================] - 0s 13ms/step - loss: 0.0076 - custom_mae: 0.0854 - accuracy: 0.0417 - val_loss: 499.3022 - val_custom_mae: 27.0211 - val_accuracy: 0.0000e+00\n",
"Epoch 423/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0071 - custom_mae: 0.0816 - accuracy: 0.0417 - val_loss: 499.2509 - val_custom_mae: 27.0193 - val_accuracy: 0.0000e+00\n",
"Epoch 424/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0069 - custom_mae: 0.0800 - accuracy: 0.0417 - val_loss: 499.3427 - val_custom_mae: 27.0213 - val_accuracy: 0.0000e+00\n",
"Epoch 425/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0066 - custom_mae: 0.0791 - accuracy: 0.0417 - val_loss: 499.3573 - val_custom_mae: 27.0212 - val_accuracy: 0.0000e+00\n",
"Epoch 426/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0064 - custom_mae: 0.0739 - accuracy: 0.0417 - val_loss: 499.3005 - val_custom_mae: 27.0197 - val_accuracy: 0.0000e+00\n",
"Epoch 427/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0061 - custom_mae: 0.0711 - accuracy: 0.0417 - val_loss: 499.3195 - val_custom_mae: 27.0204 - val_accuracy: 0.0000e+00\n",
"Epoch 428/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0056 - custom_mae: 0.0680 - accuracy: 0.0417 - val_loss: 499.3864 - val_custom_mae: 27.0220 - val_accuracy: 0.0000e+00\n",
"Epoch 429/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0054 - custom_mae: 0.0713 - accuracy: 0.0417 - val_loss: 499.4987 - val_custom_mae: 27.0244 - val_accuracy: 0.0000e+00\n",
"Epoch 430/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0054 - custom_mae: 0.0741 - accuracy: 0.0417 - val_loss: 499.4813 - val_custom_mae: 27.0233 - val_accuracy: 0.0000e+00\n",
"Epoch 431/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0054 - custom_mae: 0.0717 - accuracy: 0.0417 - val_loss: 499.4486 - val_custom_mae: 27.0233 - val_accuracy: 0.0000e+00\n",
"Epoch 432/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0050 - custom_mae: 0.0668 - accuracy: 0.0417 - val_loss: 499.5279 - val_custom_mae: 27.0251 - val_accuracy: 0.0000e+00\n",
"Epoch 433/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0046 - custom_mae: 0.0640 - accuracy: 0.0417 - val_loss: 499.4086 - val_custom_mae: 27.0213 - val_accuracy: 0.0000e+00\n",
"Epoch 434/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0046 - custom_mae: 0.0629 - accuracy: 0.0417 - val_loss: 499.5440 - val_custom_mae: 27.0245 - val_accuracy: 0.0000e+00\n",
"Epoch 435/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0044 - custom_mae: 0.0633 - accuracy: 0.0417 - val_loss: 499.5598 - val_custom_mae: 27.0243 - val_accuracy: 0.0000e+00\n",
"Epoch 436/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0041 - custom_mae: 0.0609 - accuracy: 0.0417 - val_loss: 499.5330 - val_custom_mae: 27.0239 - val_accuracy: 0.0000e+00\n",
"Epoch 437/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0038 - custom_mae: 0.0577 - accuracy: 0.0417 - val_loss: 499.5914 - val_custom_mae: 27.0258 - val_accuracy: 0.0000e+00\n",
"Epoch 438/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0037 - custom_mae: 0.0560 - accuracy: 0.0417 - val_loss: 499.5930 - val_custom_mae: 27.0261 - val_accuracy: 0.0000e+00\n",
"Epoch 439/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0036 - custom_mae: 0.0588 - accuracy: 0.0417 - val_loss: 499.6241 - val_custom_mae: 27.0285 - val_accuracy: 0.0000e+00\n",
"Epoch 440/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 0.0033 - custom_mae: 0.0562 - accuracy: 0.0417 - val_loss: 499.6143 - val_custom_mae: 27.0267 - val_accuracy: 0.0000e+00\n",
"Epoch 441/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0031 - custom_mae: 0.0524 - accuracy: 0.0417 - val_loss: 499.6224 - val_custom_mae: 27.0260 - val_accuracy: 0.0000e+00\n",
"Epoch 442/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0032 - custom_mae: 0.0517 - accuracy: 0.0417 - val_loss: 499.6124 - val_custom_mae: 27.0254 - val_accuracy: 0.0000e+00\n",
"Epoch 443/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0030 - custom_mae: 0.0510 - accuracy: 0.0417 - val_loss: 499.6590 - val_custom_mae: 27.0278 - val_accuracy: 0.0000e+00\n",
"Epoch 444/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0028 - custom_mae: 0.0509 - accuracy: 0.0417 - val_loss: 499.6487 - val_custom_mae: 27.0275 - val_accuracy: 0.0000e+00\n",
"Epoch 445/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0026 - custom_mae: 0.0486 - accuracy: 0.0417 - val_loss: 499.6879 - val_custom_mae: 27.0283 - val_accuracy: 0.0000e+00\n",
"Epoch 446/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0026 - custom_mae: 0.0474 - accuracy: 0.0417 - val_loss: 499.6669 - val_custom_mae: 27.0273 - val_accuracy: 0.0000e+00\n",
"Epoch 447/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0024 - custom_mae: 0.0450 - accuracy: 0.0417 - val_loss: 499.6914 - val_custom_mae: 27.0278 - val_accuracy: 0.0000e+00\n",
"Epoch 448/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0022 - custom_mae: 0.0440 - accuracy: 0.0417 - val_loss: 499.7463 - val_custom_mae: 27.0293 - val_accuracy: 0.0000e+00\n",
"Epoch 449/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0022 - custom_mae: 0.0454 - accuracy: 0.0417 - val_loss: 499.7432 - val_custom_mae: 27.0298 - val_accuracy: 0.0000e+00\n",
"Epoch 450/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0021 - custom_mae: 0.0444 - accuracy: 0.0417 - val_loss: 499.7231 - val_custom_mae: 27.0289 - val_accuracy: 0.0000e+00\n",
"Epoch 451/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0020 - custom_mae: 0.0434 - accuracy: 0.0417 - val_loss: 499.7239 - val_custom_mae: 27.0290 - val_accuracy: 0.0000e+00\n",
"Epoch 452/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 0.0020 - custom_mae: 0.0412 - accuracy: 0.0417 - val_loss: 499.7679 - val_custom_mae: 27.0294 - val_accuracy: 0.0000e+00\n",
"Epoch 453/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0020 - custom_mae: 0.0432 - accuracy: 0.0417 - val_loss: 499.7787 - val_custom_mae: 27.0294 - val_accuracy: 0.0000e+00\n",
"Epoch 454/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0017 - custom_mae: 0.0397 - accuracy: 0.0417 - val_loss: 499.6925 - val_custom_mae: 27.0285 - val_accuracy: 0.0000e+00\n",
"Epoch 455/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0017 - custom_mae: 0.0375 - accuracy: 0.0417 - val_loss: 499.7932 - val_custom_mae: 27.0308 - val_accuracy: 0.0000e+00\n",
"Epoch 456/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0015 - custom_mae: 0.0360 - accuracy: 0.0417 - val_loss: 499.7675 - val_custom_mae: 27.0290 - val_accuracy: 0.0000e+00\n",
"Epoch 457/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0016 - custom_mae: 0.0381 - accuracy: 0.0417 - val_loss: 499.8068 - val_custom_mae: 27.0303 - val_accuracy: 0.0000e+00\n",
"Epoch 458/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0014 - custom_mae: 0.0371 - accuracy: 0.0417 - val_loss: 499.8171 - val_custom_mae: 27.0304 - val_accuracy: 0.0000e+00\n",
"Epoch 459/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0014 - custom_mae: 0.0352 - accuracy: 0.0417 - val_loss: 499.7731 - val_custom_mae: 27.0291 - val_accuracy: 0.0000e+00\n",
"Epoch 460/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0014 - custom_mae: 0.0338 - accuracy: 0.0417 - val_loss: 499.8286 - val_custom_mae: 27.0307 - val_accuracy: 0.0000e+00\n",
"Epoch 461/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0012 - custom_mae: 0.0328 - accuracy: 0.0417 - val_loss: 499.7890 - val_custom_mae: 27.0293 - val_accuracy: 0.0000e+00\n",
"Epoch 462/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0012 - custom_mae: 0.0322 - accuracy: 0.0417 - val_loss: 499.8723 - val_custom_mae: 27.0321 - val_accuracy: 0.0000e+00\n",
"Epoch 463/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0011 - custom_mae: 0.0323 - accuracy: 0.0417 - val_loss: 499.8212 - val_custom_mae: 27.0314 - val_accuracy: 0.0000e+00\n",
"Epoch 464/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0010 - custom_mae: 0.0301 - accuracy: 0.0417 - val_loss: 499.8231 - val_custom_mae: 27.0314 - val_accuracy: 0.0000e+00\n",
"Epoch 465/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 0.0010 - custom_mae: 0.0299 - accuracy: 0.0417 - val_loss: 499.8588 - val_custom_mae: 27.0311 - val_accuracy: 0.0000e+00\n",
"Epoch 466/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 9.8071e-04 - custom_mae: 0.0294 - accuracy: 0.0417 - val_loss: 499.8590 - val_custom_mae: 27.0307 - val_accuracy: 0.0000e+00\n",
"Epoch 467/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 8.9396e-04 - custom_mae: 0.0285 - accuracy: 0.0417 - val_loss: 499.8817 - val_custom_mae: 27.0321 - val_accuracy: 0.0000e+00\n",
"Epoch 468/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 8.7410e-04 - custom_mae: 0.0278 - accuracy: 0.0417 - val_loss: 499.8451 - val_custom_mae: 27.0314 - val_accuracy: 0.0000e+00\n",
"Epoch 469/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 8.2264e-04 - custom_mae: 0.0261 - accuracy: 0.0417 - val_loss: 499.8533 - val_custom_mae: 27.0314 - val_accuracy: 0.0000e+00\n",
"Epoch 470/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 7.8254e-04 - custom_mae: 0.0256 - accuracy: 0.0417 - val_loss: 499.9111 - val_custom_mae: 27.0325 - val_accuracy: 0.0000e+00\n",
"Epoch 471/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 7.7250e-04 - custom_mae: 0.0271 - accuracy: 0.0417 - val_loss: 499.9024 - val_custom_mae: 27.0323 - val_accuracy: 0.0000e+00\n",
"Epoch 472/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 6.8937e-04 - custom_mae: 0.0260 - accuracy: 0.0417 - val_loss: 499.8756 - val_custom_mae: 27.0321 - val_accuracy: 0.0000e+00\n",
"Epoch 473/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 7.2580e-04 - custom_mae: 0.0246 - accuracy: 0.0417 - val_loss: 499.8849 - val_custom_mae: 27.0321 - val_accuracy: 0.0000e+00\n",
"Epoch 474/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 6.5127e-04 - custom_mae: 0.0237 - accuracy: 0.0417 - val_loss: 499.9116 - val_custom_mae: 27.0323 - val_accuracy: 0.0000e+00\n",
"Epoch 475/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 6.0367e-04 - custom_mae: 0.0234 - accuracy: 0.0417 - val_loss: 499.9120 - val_custom_mae: 27.0326 - val_accuracy: 0.0000e+00\n",
"Epoch 476/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.6024e-04 - custom_mae: 0.0224 - accuracy: 0.0417 - val_loss: 499.8936 - val_custom_mae: 27.0323 - val_accuracy: 0.0000e+00\n",
"Epoch 477/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 5.3261e-04 - custom_mae: 0.0217 - accuracy: 0.0417 - val_loss: 499.9124 - val_custom_mae: 27.0324 - val_accuracy: 0.0000e+00\n",
"Epoch 478/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 5.1553e-04 - custom_mae: 0.0208 - accuracy: 0.0417 - val_loss: 499.8885 - val_custom_mae: 27.0318 - val_accuracy: 0.0000e+00\n",
"Epoch 479/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 4.8770e-04 - custom_mae: 0.0196 - accuracy: 0.0417 - val_loss: 499.9443 - val_custom_mae: 27.0334 - val_accuracy: 0.0000e+00\n",
"Epoch 480/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 4.5954e-04 - custom_mae: 0.0202 - accuracy: 0.0417 - val_loss: 499.9435 - val_custom_mae: 27.0328 - val_accuracy: 0.0000e+00\n",
"Epoch 481/500\n",
"8/8 [==============================] - 0s 10ms/step - loss: 4.4328e-04 - custom_mae: 0.0201 - accuracy: 0.0417 - val_loss: 499.9374 - val_custom_mae: 27.0330 - val_accuracy: 0.0000e+00\n",
"Epoch 482/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.2739e-04 - custom_mae: 0.0189 - accuracy: 0.0417 - val_loss: 499.8960 - val_custom_mae: 27.0326 - val_accuracy: 0.0000e+00\n",
"Epoch 483/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 4.0729e-04 - custom_mae: 0.0182 - accuracy: 0.0417 - val_loss: 499.9327 - val_custom_mae: 27.0334 - val_accuracy: 0.0000e+00\n",
"Epoch 484/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.6898e-04 - custom_mae: 0.0178 - accuracy: 0.0417 - val_loss: 499.9790 - val_custom_mae: 27.0338 - val_accuracy: 0.0000e+00\n",
"Epoch 485/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.6186e-04 - custom_mae: 0.0182 - accuracy: 0.0417 - val_loss: 499.9576 - val_custom_mae: 27.0329 - val_accuracy: 0.0000e+00\n",
"Epoch 486/500\n",
"8/8 [==============================] - 0s 12ms/step - loss: 3.4267e-04 - custom_mae: 0.0173 - accuracy: 0.0417 - val_loss: 499.9493 - val_custom_mae: 27.0336 - val_accuracy: 0.0000e+00\n",
"Epoch 487/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.1823e-04 - custom_mae: 0.0169 - accuracy: 0.0417 - val_loss: 499.9608 - val_custom_mae: 27.0339 - val_accuracy: 0.0000e+00\n",
"Epoch 488/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 3.0632e-04 - custom_mae: 0.0169 - accuracy: 0.0417 - val_loss: 499.9485 - val_custom_mae: 27.0333 - val_accuracy: 0.0000e+00\n",
"Epoch 489/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.8342e-04 - custom_mae: 0.0154 - accuracy: 0.0417 - val_loss: 499.9747 - val_custom_mae: 27.0340 - val_accuracy: 0.0000e+00\n",
"Epoch 490/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.6139e-04 - custom_mae: 0.0145 - accuracy: 0.0417 - val_loss: 499.9545 - val_custom_mae: 27.0334 - val_accuracy: 0.0000e+00\n",
"Epoch 491/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.6569e-04 - custom_mae: 0.0145 - accuracy: 0.0417 - val_loss: 499.9816 - val_custom_mae: 27.0340 - val_accuracy: 0.0000e+00\n",
"Epoch 492/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.5165e-04 - custom_mae: 0.0148 - accuracy: 0.0417 - val_loss: 499.9815 - val_custom_mae: 27.0341 - val_accuracy: 0.0000e+00\n",
"Epoch 493/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.3426e-04 - custom_mae: 0.0149 - accuracy: 0.0417 - val_loss: 499.9771 - val_custom_mae: 27.0339 - val_accuracy: 0.0000e+00\n",
"Epoch 494/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.4409e-04 - custom_mae: 0.0143 - accuracy: 0.0417 - val_loss: 499.9797 - val_custom_mae: 27.0339 - val_accuracy: 0.0000e+00\n",
"Epoch 495/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.0566e-04 - custom_mae: 0.0129 - accuracy: 0.0417 - val_loss: 499.9780 - val_custom_mae: 27.0340 - val_accuracy: 0.0000e+00\n",
"Epoch 496/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.3338e-04 - custom_mae: 0.0148 - accuracy: 0.0417 - val_loss: 499.9927 - val_custom_mae: 27.0345 - val_accuracy: 0.0000e+00\n",
"Epoch 497/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 2.0089e-04 - custom_mae: 0.0131 - accuracy: 0.0417 - val_loss: 499.9764 - val_custom_mae: 27.0341 - val_accuracy: 0.0000e+00\n",
"Epoch 498/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.7758e-04 - custom_mae: 0.0119 - accuracy: 0.0417 - val_loss: 500.0060 - val_custom_mae: 27.0346 - val_accuracy: 0.0000e+00\n",
"Epoch 499/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.6596e-04 - custom_mae: 0.0118 - accuracy: 0.0417 - val_loss: 499.9808 - val_custom_mae: 27.0343 - val_accuracy: 0.0000e+00\n",
"Epoch 500/500\n",
"8/8 [==============================] - 0s 11ms/step - loss: 1.5378e-04 - custom_mae: 0.0112 - accuracy: 0.0417 - val_loss: 500.0090 - val_custom_mae: 27.0350 - val_accuracy: 0.0000e+00\n"
]
}
],
"source": [
"x, y = load_data(image_size=64, num_images=10)\n",
"\n",
"model = Sequential([\n",
" InputLayer(input_shape=x.shape[1:]),\n",
" \n",
" Conv2D(32, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
" \n",
" Conv2D(64, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Conv2D(92, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Conv2D(128, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Flatten(),\n",
"\n",
" Dense(512, activation=\"relu\"),\n",
" Dense(y.shape[1] * y.shape[2], activation=\"linear\"),\n",
" Reshape(y.shape[1:])\n",
"])\n",
"\n",
"model.summary()\n",
"\n",
"adam = optimizers.Adam(learning_rate=1e-5)\n",
"model.compile(optimizer=adam, loss=custom_mse, metrics=[custom_mae, \"accuracy\"])\n",
"history = model.fit(x, y, epochs=300, validation_split=0.2, batch_size=1)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.08333333333333333\n"
]
}
],
"source": [
"plot_training_analysis(history)\n",
"\n",
"y_pred = model.predict(x)\n",
"pck = compute_PCK_alpha(y, y_pred)\n",
"print(pck)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential_3\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" conv2d_12 (Conv2D) (None, 62, 62, 32) 896 \n",
" \n",
" max_pooling2d_12 (MaxPoolin (None, 31, 31, 32) 0 \n",
" g2D) \n",
" \n",
" conv2d_13 (Conv2D) (None, 29, 29, 64) 18496 \n",
" \n",
" max_pooling2d_13 (MaxPoolin (None, 14, 14, 64) 0 \n",
" g2D) \n",
" \n",
" conv2d_14 (Conv2D) (None, 12, 12, 92) 53084 \n",
" \n",
" max_pooling2d_14 (MaxPoolin (None, 6, 6, 92) 0 \n",
" g2D) \n",
" \n",
" conv2d_15 (Conv2D) (None, 4, 4, 128) 106112 \n",
" \n",
" max_pooling2d_15 (MaxPoolin (None, 2, 2, 128) 0 \n",
" g2D) \n",
" \n",
" flatten_3 (Flatten) (None, 512) 0 \n",
" \n",
" dense_6 (Dense) (None, 512) 262656 \n",
" \n",
" dense_7 (Dense) (None, 42) 21546 \n",
" \n",
" reshape_3 (Reshape) (None, 3, 14) 0 \n",
" \n",
"=================================================================\n",
"Total params: 462,790\n",
"Trainable params: 462,790\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"Epoch 1/20\n",
"900/900 [==============================] - 7s 7ms/step - loss: 436.1250 - custom_mae: 22.9435 - accuracy: 0.1063 - val_loss: 301.4426 - val_custom_mae: 19.5207 - val_accuracy: 0.1067\n",
"Epoch 2/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 306.5551 - custom_mae: 19.7242 - accuracy: 0.0911 - val_loss: 282.6898 - val_custom_mae: 18.9662 - val_accuracy: 0.0867\n",
"Epoch 3/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 293.9691 - custom_mae: 19.2866 - accuracy: 0.0796 - val_loss: 282.8599 - val_custom_mae: 18.9778 - val_accuracy: 0.0667\n",
"Epoch 4/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 286.9001 - custom_mae: 19.0547 - accuracy: 0.0752 - val_loss: 277.5684 - val_custom_mae: 18.7558 - val_accuracy: 0.0600\n",
"Epoch 5/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 279.4478 - custom_mae: 18.8183 - accuracy: 0.0733 - val_loss: 276.7022 - val_custom_mae: 18.8043 - val_accuracy: 0.0300\n",
"Epoch 6/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 275.4402 - custom_mae: 18.6737 - accuracy: 0.0785 - val_loss: 276.4867 - val_custom_mae: 18.7703 - val_accuracy: 0.0567\n",
"Epoch 7/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 270.3714 - custom_mae: 18.5070 - accuracy: 0.0737 - val_loss: 273.4456 - val_custom_mae: 18.5880 - val_accuracy: 0.0633\n",
"Epoch 8/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 265.8038 - custom_mae: 18.3447 - accuracy: 0.0700 - val_loss: 274.5800 - val_custom_mae: 18.6840 - val_accuracy: 0.0400\n",
"Epoch 9/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 261.2702 - custom_mae: 18.1500 - accuracy: 0.0693 - val_loss: 271.1825 - val_custom_mae: 18.5663 - val_accuracy: 0.1067\n",
"Epoch 10/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 257.5489 - custom_mae: 18.0389 - accuracy: 0.0737 - val_loss: 272.6388 - val_custom_mae: 18.5681 - val_accuracy: 0.0367\n",
"Epoch 11/20\n",
"900/900 [==============================] - 6s 6ms/step - loss: 253.8484 - custom_mae: 17.8498 - accuracy: 0.0659 - val_loss: 275.5805 - val_custom_mae: 18.5730 - val_accuracy: 0.0600\n",
"Epoch 12/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 248.3715 - custom_mae: 17.6936 - accuracy: 0.0730 - val_loss: 270.3711 - val_custom_mae: 18.5194 - val_accuracy: 0.0600\n",
"Epoch 13/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 242.3419 - custom_mae: 17.4627 - accuracy: 0.0737 - val_loss: 269.5866 - val_custom_mae: 18.4398 - val_accuracy: 0.0567\n",
"Epoch 14/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 239.1807 - custom_mae: 17.3445 - accuracy: 0.0696 - val_loss: 273.4536 - val_custom_mae: 18.5913 - val_accuracy: 0.0500\n",
"Epoch 15/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 234.5071 - custom_mae: 17.1719 - accuracy: 0.0748 - val_loss: 281.4737 - val_custom_mae: 18.8920 - val_accuracy: 0.0400\n",
"Epoch 16/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 231.7038 - custom_mae: 17.0464 - accuracy: 0.0670 - val_loss: 272.9087 - val_custom_mae: 18.5188 - val_accuracy: 0.0367\n",
"Epoch 17/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 226.5649 - custom_mae: 16.8362 - accuracy: 0.0774 - val_loss: 268.8194 - val_custom_mae: 18.3130 - val_accuracy: 0.0367\n",
"Epoch 18/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 221.8425 - custom_mae: 16.6449 - accuracy: 0.0793 - val_loss: 269.8996 - val_custom_mae: 18.4402 - val_accuracy: 0.0333\n",
"Epoch 19/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 219.2012 - custom_mae: 16.5254 - accuracy: 0.0715 - val_loss: 279.0634 - val_custom_mae: 18.6853 - val_accuracy: 0.0600\n",
"Epoch 20/20\n",
"900/900 [==============================] - 6s 7ms/step - loss: 215.3356 - custom_mae: 16.4273 - accuracy: 0.0759 - val_loss: 267.8714 - val_custom_mae: 18.2929 - val_accuracy: 0.0400\n"
]
}
],
"source": [
"x, y = load_data(image_size=64, num_images=1000)\n",
"\n",
"model = Sequential([\n",
" InputLayer(input_shape=x.shape[1:]),\n",
" \n",
" Conv2D(32, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
" \n",
" Conv2D(64, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Conv2D(92, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Conv2D(128, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Flatten(),\n",
"\n",
" Dense(512, activation=\"relu\"),\n",
" Dense(y.shape[1] * y.shape[2], activation=\"linear\"),\n",
" Reshape(y.shape[1:])\n",
"])\n",
"\n",
"model.summary()\n",
"\n",
"adam = optimizers.Adam(learning_rate=1e-5)\n",
"model.compile(optimizer=adam, loss=custom_mse, metrics=[custom_mae, \"accuracy\"])\n",
"history = model.fit(x, y, epochs=20, validation_split=0.1, batch_size=1)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.11499959306584194\n"
]
}
],
"source": [
"plot_training_analysis(history)\n",
"\n",
"y_pred = model.predict(x)\n",
"pck = compute_PCK_alpha(y, y_pred)\n",
"print(pck)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [],
"source": [
"from tensorflow.keras.regularizers import L1"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential_8\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" conv2d_32 (Conv2D) (None, 62, 62, 32) 896 \n",
" \n",
" max_pooling2d_32 (MaxPoolin (None, 31, 31, 32) 0 \n",
" g2D) \n",
" \n",
" conv2d_33 (Conv2D) (None, 29, 29, 64) 18496 \n",
" \n",
" max_pooling2d_33 (MaxPoolin (None, 14, 14, 64) 0 \n",
" g2D) \n",
" \n",
" conv2d_34 (Conv2D) (None, 12, 12, 92) 53084 \n",
" \n",
" max_pooling2d_34 (MaxPoolin (None, 6, 6, 92) 0 \n",
" g2D) \n",
" \n",
" conv2d_35 (Conv2D) (None, 4, 4, 128) 106112 \n",
" \n",
" max_pooling2d_35 (MaxPoolin (None, 2, 2, 128) 0 \n",
" g2D) \n",
" \n",
" flatten_8 (Flatten) (None, 512) 0 \n",
" \n",
" dense_16 (Dense) (None, 512) 262656 \n",
" \n",
" dense_17 (Dense) (None, 42) 21546 \n",
" \n",
" reshape_8 (Reshape) (None, 3, 14) 0 \n",
" \n",
"=================================================================\n",
"Total params: 462,790\n",
"Trainable params: 462,790\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"Epoch 1/50\n",
"900/900 [==============================] - 7s 7ms/step - loss: 1600.6188 - custom_mae: 24.7274 - accuracy: 0.0856 - val_loss: 1313.9059 - val_custom_mae: 19.2149 - val_accuracy: 0.0567\n",
"Epoch 2/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 1291.3328 - custom_mae: 19.5816 - accuracy: 0.0663 - val_loss: 1230.8826 - val_custom_mae: 18.9220 - val_accuracy: 0.0633\n",
"Epoch 3/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 1207.2291 - custom_mae: 19.2404 - accuracy: 0.0696 - val_loss: 1155.3102 - val_custom_mae: 18.8178 - val_accuracy: 0.0267\n",
"Epoch 4/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 1132.5310 - custom_mae: 19.0138 - accuracy: 0.0659 - val_loss: 1093.0542 - val_custom_mae: 18.9194 - val_accuracy: 0.0433\n",
"Epoch 5/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 1062.8149 - custom_mae: 18.7545 - accuracy: 0.0681 - val_loss: 1035.3274 - val_custom_mae: 18.8979 - val_accuracy: 0.0733\n",
"Epoch 6/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 1001.9334 - custom_mae: 18.5588 - accuracy: 0.0737 - val_loss: 978.5314 - val_custom_mae: 18.7171 - val_accuracy: 0.0367\n",
"Epoch 7/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 948.2893 - custom_mae: 18.3561 - accuracy: 0.0678 - val_loss: 935.9355 - val_custom_mae: 18.7541 - val_accuracy: 0.0533\n",
"Epoch 8/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 902.5227 - custom_mae: 18.1901 - accuracy: 0.0730 - val_loss: 912.6291 - val_custom_mae: 19.1317 - val_accuracy: 0.0700\n",
"Epoch 9/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 866.1888 - custom_mae: 17.9962 - accuracy: 0.0719 - val_loss: 868.8121 - val_custom_mae: 18.6186 - val_accuracy: 0.0567\n",
"Epoch 10/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 835.9440 - custom_mae: 17.8430 - accuracy: 0.0696 - val_loss: 843.2394 - val_custom_mae: 18.5577 - val_accuracy: 0.0700\n",
"Epoch 11/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 809.4442 - custom_mae: 17.6539 - accuracy: 0.0696 - val_loss: 847.6819 - val_custom_mae: 19.3826 - val_accuracy: 0.0400\n",
"Epoch 12/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 785.1916 - custom_mae: 17.4793 - accuracy: 0.0715 - val_loss: 803.3231 - val_custom_mae: 18.3979 - val_accuracy: 0.0400\n",
"Epoch 13/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 764.9724 - custom_mae: 17.2881 - accuracy: 0.0741 - val_loss: 790.0184 - val_custom_mae: 18.4058 - val_accuracy: 0.0800\n",
"Epoch 14/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 747.8378 - custom_mae: 17.1618 - accuracy: 0.0785 - val_loss: 778.4919 - val_custom_mae: 18.3664 - val_accuracy: 0.0400\n",
"Epoch 15/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 731.6422 - custom_mae: 16.9957 - accuracy: 0.0767 - val_loss: 774.0274 - val_custom_mae: 18.5825 - val_accuracy: 0.0267\n",
"Epoch 16/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 717.2520 - custom_mae: 16.8505 - accuracy: 0.0704 - val_loss: 753.8166 - val_custom_mae: 18.3133 - val_accuracy: 0.0567\n",
"Epoch 17/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 704.8784 - custom_mae: 16.7288 - accuracy: 0.0726 - val_loss: 747.3119 - val_custom_mae: 18.3142 - val_accuracy: 0.0333\n",
"Epoch 18/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 692.4477 - custom_mae: 16.5168 - accuracy: 0.0741 - val_loss: 736.3395 - val_custom_mae: 18.2599 - val_accuracy: 0.0400\n",
"Epoch 19/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 681.8674 - custom_mae: 16.3894 - accuracy: 0.0719 - val_loss: 732.4158 - val_custom_mae: 18.3323 - val_accuracy: 0.0567\n",
"Epoch 20/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 671.8062 - custom_mae: 16.2239 - accuracy: 0.0685 - val_loss: 723.9401 - val_custom_mae: 18.2230 - val_accuracy: 0.0700\n",
"Epoch 21/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 663.5496 - custom_mae: 16.1147 - accuracy: 0.0707 - val_loss: 717.6505 - val_custom_mae: 18.2588 - val_accuracy: 0.0567\n",
"Epoch 22/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 655.1087 - custom_mae: 16.0022 - accuracy: 0.0778 - val_loss: 711.7806 - val_custom_mae: 18.1043 - val_accuracy: 0.0467\n",
"Epoch 23/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 648.0977 - custom_mae: 15.8962 - accuracy: 0.0770 - val_loss: 724.2146 - val_custom_mae: 18.7435 - val_accuracy: 0.0867\n",
"Epoch 24/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 638.8377 - custom_mae: 15.6779 - accuracy: 0.0741 - val_loss: 702.2473 - val_custom_mae: 18.1418 - val_accuracy: 0.0833\n",
"Epoch 25/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 631.8398 - custom_mae: 15.5892 - accuracy: 0.0744 - val_loss: 699.0881 - val_custom_mae: 18.1864 - val_accuracy: 0.0800\n",
"Epoch 26/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 625.5166 - custom_mae: 15.5084 - accuracy: 0.0815 - val_loss: 700.0754 - val_custom_mae: 18.2896 - val_accuracy: 0.0867\n",
"Epoch 27/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 618.1070 - custom_mae: 15.3338 - accuracy: 0.0774 - val_loss: 696.2742 - val_custom_mae: 18.4092 - val_accuracy: 0.0633\n",
"Epoch 28/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 611.0324 - custom_mae: 15.2123 - accuracy: 0.0819 - val_loss: 693.2403 - val_custom_mae: 18.3400 - val_accuracy: 0.0433\n",
"Epoch 29/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 605.3654 - custom_mae: 15.1036 - accuracy: 0.0785 - val_loss: 689.4489 - val_custom_mae: 18.3240 - val_accuracy: 0.0867\n",
"Epoch 30/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 598.5970 - custom_mae: 14.9257 - accuracy: 0.0830 - val_loss: 697.1451 - val_custom_mae: 18.6957 - val_accuracy: 0.0700\n",
"Epoch 31/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 593.0287 - custom_mae: 14.8324 - accuracy: 0.0837 - val_loss: 682.5284 - val_custom_mae: 18.2608 - val_accuracy: 0.1067\n",
"Epoch 32/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 586.8223 - custom_mae: 14.6828 - accuracy: 0.0919 - val_loss: 676.1535 - val_custom_mae: 18.1355 - val_accuracy: 0.0600\n",
"Epoch 33/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 580.5615 - custom_mae: 14.5288 - accuracy: 0.0893 - val_loss: 679.8427 - val_custom_mae: 18.3359 - val_accuracy: 0.0700\n",
"Epoch 34/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 575.5278 - custom_mae: 14.4210 - accuracy: 0.0848 - val_loss: 673.6619 - val_custom_mae: 18.2497 - val_accuracy: 0.0467\n",
"Epoch 35/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 569.3248 - custom_mae: 14.2640 - accuracy: 0.0837 - val_loss: 674.8303 - val_custom_mae: 18.3349 - val_accuracy: 0.0567\n",
"Epoch 36/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 563.3799 - custom_mae: 14.1157 - accuracy: 0.0863 - val_loss: 678.8046 - val_custom_mae: 18.4942 - val_accuracy: 0.0667\n",
"Epoch 37/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 558.2557 - custom_mae: 13.9926 - accuracy: 0.0881 - val_loss: 669.0584 - val_custom_mae: 18.3795 - val_accuracy: 0.0700\n",
"Epoch 38/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 553.7178 - custom_mae: 13.9113 - accuracy: 0.0867 - val_loss: 664.1337 - val_custom_mae: 18.2757 - val_accuracy: 0.0667\n",
"Epoch 39/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 547.0479 - custom_mae: 13.6922 - accuracy: 0.0893 - val_loss: 665.8436 - val_custom_mae: 18.4226 - val_accuracy: 0.0700\n",
"Epoch 40/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 542.4849 - custom_mae: 13.6235 - accuracy: 0.0881 - val_loss: 667.3710 - val_custom_mae: 18.5683 - val_accuracy: 0.0700\n",
"Epoch 41/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 537.6252 - custom_mae: 13.4894 - accuracy: 0.0885 - val_loss: 662.0100 - val_custom_mae: 18.4422 - val_accuracy: 0.0633\n",
"Epoch 42/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 532.7130 - custom_mae: 13.3705 - accuracy: 0.0941 - val_loss: 658.4034 - val_custom_mae: 18.3899 - val_accuracy: 0.0467\n",
"Epoch 43/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 526.7731 - custom_mae: 13.1849 - accuracy: 0.0948 - val_loss: 663.8610 - val_custom_mae: 18.7139 - val_accuracy: 0.0933\n",
"Epoch 44/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 521.6479 - custom_mae: 13.0322 - accuracy: 0.0937 - val_loss: 659.8156 - val_custom_mae: 18.6054 - val_accuracy: 0.0500\n",
"Epoch 45/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 517.1684 - custom_mae: 12.9476 - accuracy: 0.0937 - val_loss: 655.1570 - val_custom_mae: 18.5126 - val_accuracy: 0.0633\n",
"Epoch 46/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 511.0065 - custom_mae: 12.7268 - accuracy: 0.0915 - val_loss: 654.9119 - val_custom_mae: 18.5737 - val_accuracy: 0.0500\n",
"Epoch 47/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 506.4033 - custom_mae: 12.6392 - accuracy: 0.0911 - val_loss: 653.8961 - val_custom_mae: 18.5993 - val_accuracy: 0.0600\n",
"Epoch 48/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 502.6320 - custom_mae: 12.5451 - accuracy: 0.0996 - val_loss: 658.9085 - val_custom_mae: 18.7675 - val_accuracy: 0.0433\n",
"Epoch 49/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 497.2288 - custom_mae: 12.3731 - accuracy: 0.0970 - val_loss: 652.7715 - val_custom_mae: 18.6982 - val_accuracy: 0.0667\n",
"Epoch 50/50\n",
"900/900 [==============================] - 6s 7ms/step - loss: 492.1422 - custom_mae: 12.1980 - accuracy: 0.0948 - val_loss: 650.8259 - val_custom_mae: 18.7055 - val_accuracy: 0.0400\n"
]
}
],
"source": [
"x, y = load_data(image_size=64, num_images=1000)\n",
"\n",
"model = Sequential([\n",
" InputLayer(input_shape=x.shape[1:]),\n",
" \n",
" Conv2D(32, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
" \n",
" Conv2D(64, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Conv2D(92, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Conv2D(128, 3, activation=\"relu\"),\n",
" MaxPooling2D(pool_size=(2, 2)),\n",
"\n",
" Flatten(),\n",
"\n",
" Dense(512, activation=\"relu\", kernel_regularizer=L1(0.1)),\n",
" Dense(y.shape[1] * y.shape[2], activation=\"linear\", kernel_regularizer=L1(0.1)),\n",
" Reshape(y.shape[1:])\n",
"])\n",
"\n",
"model.summary()\n",
"\n",
"adam = optimizers.Adam(learning_rate=1e-5)\n",
"model.compile(optimizer=adam, loss=custom_mse, metrics=[custom_mae, \"accuracy\"])\n",
"history = model.fit(x, y, epochs=50, validation_split=0.1, batch_size=1)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"vscode": {
"languageId": "python"
}
},
"outputs": [
{
"data": {
"image/png": "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pfakDAgIYMKECbRt25aWLVty8ODBLOMqacPOusxtwfRDyiql8m7MsjHsPLuzUI8ZXCeYyf0mZ7u+Ro0adOjQgaVLlzJo0CDmzJnDkCFDEBHeeecdatSoQVJSEr1792b37t20atUqy+Ns376dOXPmsHPnThITE2nbti3t2rUD4P777+fJJ58E4M9//jNffPEFzz33HAMHDmTAgAE3VFHEx8czcuRIVq9eTZMmTfj973/PRx99xJgxYwDbBX7Hjh1MmzaNd999N0NVSXoladhZl5jQAdKGlNWmhEq5hvTVKOmrT+bOnUvbtm1p06YN+/bty1Ddkdn69ev53e9+R8WKFalSpQoDBw5MXbd37166detGy5YtmTVrFvv27csxnkOHDhEYGEiTJk0AGDFiBD///HPq+vvvvx+Adu3aERoamu1xhgwZwrx585g9e/YNVUKZh51duHAhSUlJqevTV6EUxpjhLlMC1zHBlcqfnErKRWnQoEGMHTuWHTt2EBcXR7t27Th+/DjvvvsuW7dupXr16owcOZL4+Ph8HX/kyJEsXLiQ1q1bM336dNYVcMzblJJ0bsPRlqRhZ12mBF6xIgwfDk2bOjsSpVReeHt707NnTx577LHUkuqlS5eoVKkSVatW5dy5cyxdujTHY9xxxx0sXLiQq1evEhsby48//pi6LjY2lrp165KQkMCsWbNSl1euXJnY2NgbjtW0aVNCQ0M5cuQIADNnzqR79+75uraJEyfyj3/8I8thZ0+ePEloaCihoaFMnTqV2bNn5+sceeEyJXCAr792dgRKqZsxbNgwfve736VWpbRu3Zo2bdrQrFkz6tevT5cuXXLcv23btgwdOpTWrVtTq1atDEPCvv3223Ts2BFfX186duyYmrQfeughnnzyST744IMMLT28vLz46quvePDBB0lMTKR9+/Y8/fTT+bqukjLsrMsMJ5siORncXOZ3g1LOocPJuq5CHU62JBk0CLp2dXYUSilVMrhUAq9QQW9iKqVUCpdK4D4+msCVyqvirB5VheNm/81cLoFHR0M+JpxWqkzx8vIiKipKk7gLMcYQFRWFl5dXnvdxqVYoNWuCMXDxIvj6OjsapUouf39/wsLCKMgY/Kr4eXl54e/vn+ftXSqBt28PL76orVCUyo2npyeBgYHODkMVMZdK4J062YdSSikXqwM3Bq5cgatXnR2J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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.11475543257101001\n"
]
}
],
"source": [
"plot_training_analysis(history)\n",
"\n",
"y_pred = model.predict(x)\n",
"pck = compute_PCK_alpha(y, y_pred)\n",
"print(pck)"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"collapsed_sections": [],
"machine_shape": "hm",
"name": "IAM2020 - TP4 - Estimation de Posture.ipynb",
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"display_name": ".env",
"language": "python",
"name": ".env"
}
},
"nbformat": 4,
"nbformat_minor": 1
}