9. Analyse de séries temporelles avec IA#

Marc Buffat dpt mécanique, UCB Lyon1

time series

import tensorflow as tf
2026-07-21 15:40:30.980121: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2026-07-21 15:40:30.984314: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2026-07-21 15:40:30.995394: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:467] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1784641231.013544  446696 cuda_dnn.cc:8579] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1784641231.018880  446696 cuda_blas.cc:1407] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
W0000 00:00:1784641231.033455  446696 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1784641231.033474  446696 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1784641231.033476  446696 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1784641231.033478  446696 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
2026-07-21 15:40:31.037902: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# police des titres
plt.rc('font', family='serif', size='18')
from IPython.display import display,Markdown
# IA
import sklearn as sk
import tensorflow as tf
_uid_ = 12345
def serie_temp(N,a0=1.0,a1=0.5,a2 = 0.4, a3=0.1):
    # data / jours 
    np.random.seed(_uid_)
    # time series
    Ts = np.array([x for x in np.arange(N)],dtype=int)
    ys = [ a0*np.sin(2*np.pi*x/180) + a1*np.cos(2*np.pi*x/15) \
         + a2*x/360  for x in range(N)] + \
           a3*np.random.normal(size=N,scale=0.2)
    return Ts,ys

9.1. Objectifs#

On étudie un système temporel \(Y(t)\) et on souhaite prédire l’évolution du système: i.e. la prévision de ses futures réalisations en se basant sur ses valeurs passées

Une série temporelle Yt est communément décomposée en tendance, saisonnalité, bruit:

\[Y(t) =T(t)+S(t)+\epsilon(t)\]
  • tendance \(T(t)\) = évolution à long terme

  • saisonnalité \(S(t)\) = phénoméne périodique

  • bruit \(\epsilon(t)\) = partie aléatoire

9.1.1. méthodes#

méthodes classiques: (modélisation de série chro. linéaires):

  • lissages exponentiels,

  • modèles de régression (régression linéaire, modèles non-paramétriques… ),

  • modèles SARIMA

utilisation de l’IA:

  • random forest,

  • réseaux de neuronnes récurrents LSTM

9.2. Scikit Learn RandomForest#

“forêt aléatoire” d’arbres de décision

  • prédiction 1 valeur à la fois

random forest

9.3. Réseau de neurones: LSTM/ RNN#

LSTM = Long Short-Term Memory

  • réseau RNN récurrent

  • fonction activation: évite l’explosion de la sortie (tanh )

  • méthode de gradient numérique (\(\alpha\) taux d’apprentissage) $\( w_{k+1} = w_k - \alpha F_w\)$

  • EPOCH = nbre d’epoques pour l’apprentissage

Le nombre d’époques est un hyperparamètre qui définit le nombre de fois que l’algorithme d’apprentissage parcours l’ensemble des données d’entraînement

  1. Modèle de neuronne informatique

../../_images/neuroneformel-1.png

la sortie \(y\) est une fonction non linéaire des entrées (f = fonction d’activation)

\[ y = f(\sum_i w_i x_i + b) \]

les coefficients \(w_i, b\) sont obtenu par minimisation d’une erreur \(Err = || y_{pred} - \hat{y} ||\) à partir d’une base de données d’apprentissage \(\hat{y}\) en utilisant des algorithmes de minimisation (gradient)

  1. Réseau de neuronnes par couche

../../_images/reseau_neuronne.png
  1. Réseau de neuronnes récurrents (traitement de séquence temporelle)

../../_images/reseau-RNN.png
\[ y^t = f(\sum_i w_i x^t_i + b + \sum_j r_j y^t_j) \]

9.3.1. Réseaux RNN#

images/Architecture-RNN.jpg

9.3.2. La problématique de l’apprentissage d’un réseau récurrent#

réseau récurrent simple classique constitué d’une couche récurrente suivie d’une couche dense :

../../_images/RNNsimple.png

Il comprend trois matrices de poids : W, R et V ; R étant la matrice des poids récurrents. L’apprentissage du réseau consiste donc à apprendre ces trois matrices sur une base d’exemples étiquetés.

Or l’algorithme de minimisation par gradient pour les réseaux de neuronnes utilise un algorithme appelé rétropropagation du gradient. Cet algorithme rétropropage le gradient de l’erreur à travers les différentes couches de poids du réseau, en remontant de la dernière à la première couche.

Malheureusement, dans le cas des réseaux récurrents, la présence du cycle de récurrence (matrice R) interdit l’utilisation de cet algorithme

9.3.3. solution : rétropropagation à travers le temps#

La solution à ce problème consiste à exploiter la version dépliée du réseau, qui élimine les cycles.

Nous allons donc utiliser une approximation du réseau récurrent par un réseau déplié K fois (K = profondeur = nbre de couches internes cachés de 10 a 100) , comme présenté sur la figure suivante avec K=2 :

../../_images/RNNdeplie.png

Attention

  • Le réseau déplié étant plus profond, la disparition du gradient (ou gradient évanescent) est plus importante durant l’apprentissage, et il est plus difficile à entraîner à cause d’une erreur qui tend à s’annuler en se rapprochant des couches basses.

Il est donc important d’utiliser toutes les stratégies possibles permettant de lutter contre ce phénomène : Batch Normalization, dropout, régularisation L1 et L2, etc.

  • Comme les poids de la couche récurrente sont dupliqués, les réseaux récurrents sont également sujets à un autre phénomène appelé explosion du gradient. Il s’agit d’un gradient d’erreur dont la norme est supérieure à 1.

Une méthode simple et efficace pour éviter cela consiste à tester cette norme, et à la limiter si elle est trop importante (aussi appelée gradient clipping, en anglais).

9.3.4. neuronne LSTM : Long Short Term Memory#

Afin de modéliser des dépendances à très long terme, il est nécessaire de donner aux réseaux de neurones récurrents la capacité de maintenir un état sur une longue période de temps.

C’est le but des cellules LSTM (Long Short Term Memory), qui possèdent une mémoire interne appelée cellule (ou cell). La cellule permet de maintenir un état aussi longtemps que nécessaire. Cette cellule consiste en une valeur numérique que le réseau peut piloter en fonction des situations.

../../_images/RNN_LSTM.png

la cellule mémoire peut être pilotée par trois portes de contrôle qu’on peut voir comme des vannes :

  • la porte d’entrée décide si l’entrée doit modifier le contenu de la cellule

  • la porte d’oubli décide s’il faut remettre à 0 le contenu de la cellule

  • la porte de sortie décide si le contenu de la cellule doit influer sur la sortie du neurone

Le mécanisme des trois portes est strictement similaire. L’ouverture/la fermeture de la vanne est modélisée par une fonction d’activation f qui est généralement une sigmoïde. Cette sigmoïde est appliquée à la somme pondérée des entrées, des sorties et de la cellule, avec des poids spécifiques.

Pour calculer la sortie \(y^t\), on utilise donc l’entrée \(x^t\), les états cachés \(h^{t-1}\) (\(x^{t-1},x^{t-2}\)) (dépliement de la récurrence) qui représentent la mémoire à court terme (short-term mémory) et les états des cellules mémoires \(c^{t-1}\) qui représentent la mémoire à long terme (long-term memory)

Comme n’importe quel neurone, les neurones LSTM sont généralement utilisés en couches. Dans ce cas, les sorties de tous les neurones sont réinjectées en entrée de tous les neurones.

Compte tenu de toutes les connexions nécessaires au pilotage de la cellule mémoire, les couches de neurones de type LSTM sont deux fois plus « lourdes » que les couches récurrentes simples, qui elles-mêmes sont deux fois plus lourdes que les couches denses classiques.

Les couches LSTM sont donc à utiliser avec parcimonie !

9.4. Application: analyse d’une serie temporelle#

  • Série temporelle \(Y = Y(t)\)

  • N mesures à intervalle régulier \(\Delta t\)

    • tableau de données ys

      \[ys[i] = Y(i\Delta t)\]
    • tableau ts (pour l’analyse)

      \[ts[i] = i\Delta t\]

Base de données de tests

  1. série périodique simple

    • serie bi-périodique (modulation)

    • avec tendance à long terme

    • du bruit

# construction serie temporelle
# cas periodique le plus simple
Ts,ys = serie_temp(1000,a0=0,a1=0.5,a2=0.0,a3 = 0.)
# cas bi-periodique 
#Ts,ys = serie_temp(1000,a0=1.0,a1=0.5,a2=0.0,a3=0.0)
# + tendance 
#Ts,ys = serie_temp(1000,a0=1.0,a1=0.5,a2=0.2,a3=0.0)
# + bruit
Ts,ys = serie_temp(1000,a0=1.0,a1=0.5,a2=0.2,a3=0.3)
plt.figure(figsize=(12,8))
plt.subplot(1,2,1)
plt.plot(Ts[:],ys)
plt.xlabel("jour")
plt.title("serie temporelle");
plt.subplot(1,2,2)
plt.plot(Ts[:100],ys[:100])
plt.xlabel("jour")
Text(0.5, 0, 'jour')
../../_images/87ba0d5be3b2a47a8a60b5d27b0d3e168d3a9333f75a467e6711e8971a3afeef.png

9.4.1. Objectifs#

  • base de données journalières : serie temporelle

  • préparations des donnees: fenétrage « avant : après »

    • data X: (avant)
      on se donne les données sur 14 jours avant

    • résulata y: a(pres)
      on veut pérédire les données sur les 7 jours suivants

ATTENTION: approche différente de l’approche classique y=F(X) car la pédiction est récurrente !

  • utilisation de l’IA:

    • random forest,

    • réseaux de neuronnes récurrents LSTM

9.5. Notebook version étudiant#

mise en oeuvre

source/Cours3_Serie_temp/NotesCours_serie_temp.ipynb

9.6. Notebook solution#

9.6.1. préparation des données#

fenêtrage des données:

choix d’une fenêtre de nav jours précédents pour prédire nap valeurs (i.e. sur nap jours)

  • nav taille de la fenêtre d’histoire (avant)

  • nap taille de la fenêtre prédiction (après)

  • N nbre de fenêtres

  • t0 date de début prédiction

def dataset(Ts,ys,nav,nap,N,t0):
    # choix d'une fenetre de nav jours précédents pour prédir nap valeurs (i.e. sur nap jours)
    # nav taille de la fenetre d'histoire (avant)
    # nap taille de la fenetre prediction (apres)
    # N nbre de fenetres
    # t0 date de debut prediction
    # 
    t1 = t0 - N - nav -nap
    print(f"apprentissage sur {N} fenetres de {nav}-{nap} jours entre le jour {t1} et {t0}")
    # 
    X  = np.zeros((N,nav))
    y  = np.zeros((N,nap))
    t  = np.zeros(N,dtype=int)
    # construction de la base de données
    for i in range(N):
        X[i,:] = ys[t1+i:t1+i+nav]
        y[i]   = ys[t1+i+nav:t1+i+nav+nap]
        t[i]   = Ts[t1+i+nav]
    return X,y,t
# N fenetres: de 14 jours -> 7 jours pour prediction à partir du jour t0
nav = 14
nap = 7
#N  = 200
#t0 = 300
N = 400
t0 = 600
X,y,t = dataset(Ts,ys,nav,nap,N,t0)
apprentissage sur 400 fenetres de 14-7 jours entre le jour 179 et 600
X.shape, y.shape, t.shape
((400, 14), (400, 7), (400,))
def plot_dataset():
    plt.figure(figsize=(14,6))
    plt.subplot(1,2,1)
    plt.plot(t-nav,X[:,0])
    plt.plot(t,y[:,0])
    plt.xlabel("jour")
    plt.ylabel("y")
    plt.title("data apprentissage")
    plt.subplot(1,2,2)
    plt.plot(np.arange(t[0]-nav,t[0]+nap),ys[t[0]-nav:t[0]+nap],'--')
    plt.plot(np.arange(t[0]-nav,t[0]),X[0,:],'or')
    plt.plot(np.arange(t[0],t[0]+nap),y[0,:],'xg')
    plt.plot(np.arange(t[-1]-nav,t[-1]+nap),ys[t[-1]-nav:t[-1]+nap],'--')
    plt.plot(np.arange(t[-1]-nav,t[-1]),X[-1,:],'or')
    plt.plot(np.arange(t[-1],t[-1]+nap),y[-1,:],'xg')
    plt.xlabel("jour")
    plt.title("first/last window");
    return
plot_dataset()
../../_images/91132305927c5478a57e85df5a02c499870a07318c779f2b03bcd5ebd23cfdc5.png

9.6.2. Mise en oeuvre: apprentissage RandomForest#

  • scikit learn

from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics   import r2_score
# choix de l'algorithme
clf = RandomForestRegressor()
#clf = KNeighborsRegressor()
#clf = LinearRegression()
Xlearn = X.copy()
ylearn = y[:,0]
clf.fit(Xlearn,ylearn)
RandomForestRegressor()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
print("score = {:2d}%".format(int(100*clf.score(Xlearn, ylearn))))
yp = clf.predict(Xlearn)
print("R2 = {:3.2f}%".format(r2_score(ylearn,yp)))
score = 99%
R2 = 1.00%
def plot_pred():
    plt.figure(figsize=(10,6))
    plt.plot(Ts[t2:t2+nap],ypred,'x')
    plt.plot(Ts[t2-nav:t2],Xpred[0],'--o')
    plt.plot(Ts[t2-nav:t2+nap],ys[t2-nav:t2+nap],'--')
    plt.xlabel("jour")
    plt.title(f"prediction sur {nap} jours à partir du jour {t2}");
    return
# prediction à partir de t2
t2 = t0 
Xpred  = np.array([ys[t2-nav:t2]])
ypred  = np.zeros(nap)
Xp     = Xpred.copy()
ypred[0] = clf.predict(Xp)[0]
for i in range(1,nap):
    Xp[0,:-i] = Xpred[0,i:]
    Xp[0,-i:] = ypred[:i]
    ypred[i] = clf.predict(Xp)[0]
Xpred.shape, ypred.shape
((1, 14), (7,))
plot_pred()
../../_images/0839154d040a44d0502251cf34963d11f58870d07e8de953669a979c1cbd0a7b.png

9.6.3. Mise en oeuvre: LSTM RNN#

  • bibliothèque tensor flow Keras RNN

#Machine learning
from sklearn import preprocessing
import tensorflow as tf
import statsmodels as st
from statsmodels.tsa.seasonal import STL
from sklearn.model_selection  import train_test_split
Xlearn = X.copy()
ylearn = y.copy()
Xlearn = Xlearn.reshape(X.shape[0], nav, 1)
ylearn = ylearn.reshape(y.shape[0], nap, 1)
Xlearn.shape, ylearn.shape
((400, 14, 1), (400, 7, 1))
#Nombre d'époque d'entrainement (fenetre de taille nav)
#EPOQUE = 300
EPOQUE = 200
#EPOQUE = 50
# modèle du réseaux de neurones(4 rangées (100,100,50,50) dont la première LSTM)
# si pas activation: activation='linear' lineaire a(x)=x, sinon test avec 'relu'
modele_lstm = tf.keras.models.Sequential([
    tf.keras.layers.LSTM(nav),
    tf.keras.layers.Dense(nav,activation='tanh'),
    tf.keras.layers.Dense(nap,activation='tanh'),
    tf.keras.layers.Dense(nap)
])
#Configuration du modèle(on minimise avec la méthode des moindres carrés)
modele_lstm.compile(optimizer='adam', metrics=['mae'], loss='mse')
print(EPOQUE)
200
E0000 00:00:1784641235.380262  446696 cuda_executor.cc:1228] INTERNAL: CUDA Runtime error: Failed call to cudaGetRuntimeVersion: Error loading CUDA libraries. GPU will not be used.: Error loading CUDA libraries. GPU will not be used.
W0000 00:00:1784641235.387532  446696 gpu_device.cc:2341] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
#Lance l'entrainement du modèle
import time
time_start = time.time()
modele_lstm.fit(Xlearn, ylearn, epochs=EPOQUE, verbose = True)
print('phase apprentissage: {:.2f} seconds'.format(time.time()-time_start))
Epoch 1/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 20s 2s/step - loss: 0.7567 - mae: 0.7314

13/13 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.7071 - mae: 0.7050
Epoch 2/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 66ms/step - loss: 0.4974 - mae: 0.5750

 7/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.6323 - mae: 0.6557 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.6342 - mae: 0.6618
Epoch 3/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.6641 - mae: 0.6927

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.5961 - mae: 0.6452 
Epoch 4/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.6888 - mae: 0.7180

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.5449 - mae: 0.6130 
Epoch 5/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.4435 - mae: 0.5396

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.4403 - mae: 0.5387 
Epoch 6/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.4911 - mae: 0.5692

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.4032 - mae: 0.5168 
Epoch 7/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.3539 - mae: 0.4820

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.3486 - mae: 0.4807 
Epoch 8/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.3376 - mae: 0.4723

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.3193 - mae: 0.4601 
Epoch 9/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.3064 - mae: 0.4605

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2957 - mae: 0.4455 
Epoch 10/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.2600 - mae: 0.4191

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2706 - mae: 0.4283 
Epoch 11/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.2995 - mae: 0.4493

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2625 - mae: 0.4221 
Epoch 12/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.2529 - mae: 0.4203

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2450 - mae: 0.4078 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.2449 - mae: 0.4076
Epoch 13/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 80ms/step - loss: 0.2490 - mae: 0.4146

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.2424 - mae: 0.4055

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.2409 - mae: 0.4035 
Epoch 14/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.2014 - mae: 0.3719

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2198 - mae: 0.3857 
Epoch 15/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.2508 - mae: 0.4078

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2263 - mae: 0.3895 
Epoch 16/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.2481 - mae: 0.4177

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2187 - mae: 0.3847 
Epoch 17/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.2594 - mae: 0.4290

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2198 - mae: 0.3887 
Epoch 18/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.1700 - mae: 0.3343

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.2069 - mae: 0.3743 
Epoch 19/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.2805 - mae: 0.4474

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.2234 - mae: 0.3908 
Epoch 20/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.1749 - mae: 0.3340

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1944 - mae: 0.3596 
Epoch 21/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.1913 - mae: 0.3564

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1920 - mae: 0.3592 
Epoch 22/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.1925 - mae: 0.3622

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1929 - mae: 0.3611 
Epoch 23/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.2128 - mae: 0.3820

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1927 - mae: 0.3587 
Epoch 24/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.1601 - mae: 0.3145

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.1737 - mae: 0.3377 
Epoch 25/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.1694 - mae: 0.3393

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1786 - mae: 0.3449 
Epoch 26/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.1362 - mae: 0.2980

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.1589 - mae: 0.3229 
Epoch 27/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 93ms/step - loss: 0.1311 - mae: 0.2957

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.1398 - mae: 0.3016

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.1486 - mae: 0.3110 
Epoch 28/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.1342 - mae: 0.3029

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1432 - mae: 0.3062 
Epoch 29/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.1369 - mae: 0.2999

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1416 - mae: 0.3056 
Epoch 30/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 100ms/step - loss: 0.1290 - mae: 0.2961

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.1383 - mae: 0.3031  
Epoch 31/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.1344 - mae: 0.2980

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1337 - mae: 0.2956 
Epoch 32/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - loss: 0.1217 - mae: 0.2776

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1223 - mae: 0.2820 
Epoch 33/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0930 - mae: 0.2424

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1178 - mae: 0.2767 
Epoch 34/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - loss: 0.1230 - mae: 0.2798

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1222 - mae: 0.2828 
Epoch 35/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.1255 - mae: 0.2990

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1105 - mae: 0.2716 
Epoch 36/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.1018 - mae: 0.2569

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1112 - mae: 0.2662 
Epoch 37/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.1098 - mae: 0.2646

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1076 - mae: 0.2674 
Epoch 38/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 99ms/step - loss: 0.0913 - mae: 0.2502

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0947 - mae: 0.2494

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0984 - mae: 0.2549 
Epoch 39/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.1127 - mae: 0.2709

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.1029 - mae: 0.2598 
Epoch 40/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 101ms/step - loss: 0.1024 - mae: 0.2548

 7/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0996 - mae: 0.2571  

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0996 - mae: 0.2565
Epoch 41/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0898 - mae: 0.2440

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0960 - mae: 0.2551 
Epoch 42/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0681 - mae: 0.2043

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0859 - mae: 0.2356 
Epoch 43/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0881 - mae: 0.2422

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0862 - mae: 0.2372 
Epoch 44/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0762 - mae: 0.2334

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0833 - mae: 0.2366 
Epoch 45/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 94ms/step - loss: 0.0836 - mae: 0.2403

 7/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0836 - mae: 0.2359 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0839 - mae: 0.2359
Epoch 46/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0771 - mae: 0.2279

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0813 - mae: 0.2303 
Epoch 47/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 101ms/step - loss: 0.0759 - mae: 0.2237

 7/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0780 - mae: 0.2289  

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0792 - mae: 0.2312
Epoch 48/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0571 - mae: 0.1972

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0719 - mae: 0.2195 
Epoch 49/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0613 - mae: 0.2045

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0720 - mae: 0.2183 
Epoch 50/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0716 - mae: 0.2102

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0714 - mae: 0.2175 
Epoch 51/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0787 - mae: 0.2271

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0719 - mae: 0.2193 
Epoch 52/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 99ms/step - loss: 0.0506 - mae: 0.1789

 9/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0604 - mae: 0.1976 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0621 - mae: 0.2012
Epoch 53/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0602 - mae: 0.2008

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0647 - mae: 0.2088 
Epoch 54/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0619 - mae: 0.2054

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0614 - mae: 0.2036 
Epoch 55/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0537 - mae: 0.1965

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0573 - mae: 0.1970 
Epoch 56/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 98ms/step - loss: 0.0484 - mae: 0.1814

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0536 - mae: 0.1917

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0542 - mae: 0.1912 
Epoch 57/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0581 - mae: 0.1949

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0559 - mae: 0.1925 
Epoch 58/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0486 - mae: 0.1754

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0507 - mae: 0.1832 
Epoch 59/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0575 - mae: 0.1931

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0483 - mae: 0.1779 
Epoch 60/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0509 - mae: 0.1818

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0459 - mae: 0.1746 
Epoch 61/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0420 - mae: 0.1707

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0415 - mae: 0.1653 
Epoch 62/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0322 - mae: 0.1394

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0368 - mae: 0.1517 
Epoch 63/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0304 - mae: 0.1411

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0377 - mae: 0.1555 
Epoch 64/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0350 - mae: 0.1554

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0356 - mae: 0.1507 
Epoch 65/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0396 - mae: 0.1571

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0348 - mae: 0.1482 
Epoch 66/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0317 - mae: 0.1409

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0328 - mae: 0.1420 
Epoch 67/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0301 - mae: 0.1411

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0293 - mae: 0.1359 
Epoch 68/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0283 - mae: 0.1337

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0279 - mae: 0.1324 
Epoch 69/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 98ms/step - loss: 0.0245 - mae: 0.1233

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0274 - mae: 0.1290

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0276 - mae: 0.1303 
Epoch 70/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 46ms/step - loss: 0.0343 - mae: 0.1446

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0283 - mae: 0.1336 
Epoch 71/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0318 - mae: 0.1392

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0267 - mae: 0.1284 
Epoch 72/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0210 - mae: 0.1137

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0246 - mae: 0.1237 
Epoch 73/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0276 - mae: 0.1335

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0258 - mae: 0.1286 
Epoch 74/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 92ms/step - loss: 0.0326 - mae: 0.1410

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0267 - mae: 0.1283 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0266 - mae: 0.1282
Epoch 75/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0259 - mae: 0.1302

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0244 - mae: 0.1242 
Epoch 76/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0238 - mae: 0.1246

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0236 - mae: 0.1216 
Epoch 77/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0170 - mae: 0.1028

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0235 - mae: 0.1202 
Epoch 78/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0203 - mae: 0.1154

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0251 - mae: 0.1263 
Epoch 79/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0187 - mae: 0.1036

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0218 - mae: 0.1151 
Epoch 80/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0149 - mae: 0.0978

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0216 - mae: 0.1155 
Epoch 81/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0265 - mae: 0.1306

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0228 - mae: 0.1192 
Epoch 82/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0263 - mae: 0.1284

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0217 - mae: 0.1166 
Epoch 83/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0205 - mae: 0.1159

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0206 - mae: 0.1148 
Epoch 84/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0186 - mae: 0.1108

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0212 - mae: 0.1172 
Epoch 85/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0198 - mae: 0.1163

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0216 - mae: 0.1169 
Epoch 86/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0229 - mae: 0.1205

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0208 - mae: 0.1140 
Epoch 87/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0127 - mae: 0.0873

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0206 - mae: 0.1124 
Epoch 88/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0170 - mae: 0.1041

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0227 - mae: 0.1167 
Epoch 89/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0263 - mae: 0.1251

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0227 - mae: 0.1171 
Epoch 90/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0218 - mae: 0.1182

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0210 - mae: 0.1158 
Epoch 91/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0251 - mae: 0.1289

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0202 - mae: 0.1136 
Epoch 92/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0187 - mae: 0.1127

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0201 - mae: 0.1132 
Epoch 93/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0183 - mae: 0.1089

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0210 - mae: 0.1136 
Epoch 94/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0216 - mae: 0.1208

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0203 - mae: 0.1148 
Epoch 95/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0193 - mae: 0.1138

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0184 - mae: 0.1073 
Epoch 96/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0169 - mae: 0.1062

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0192 - mae: 0.1111 
Epoch 97/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0226 - mae: 0.1163

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0192 - mae: 0.1084 
Epoch 98/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 102ms/step - loss: 0.0200 - mae: 0.1140

 7/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0190 - mae: 0.1099  

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0189 - mae: 0.1100
Epoch 99/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0160 - mae: 0.0961

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0174 - mae: 0.1026 
Epoch 100/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0209 - mae: 0.1171

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0187 - mae: 0.1085 
Epoch 101/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0178 - mae: 0.1045

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0183 - mae: 0.1073 
Epoch 102/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0158 - mae: 0.1034

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0174 - mae: 0.1045 
Epoch 103/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0177 - mae: 0.1061

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0182 - mae: 0.1075 
Epoch 104/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0181 - mae: 0.1065

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0183 - mae: 0.1074 
Epoch 105/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0182 - mae: 0.1114

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0185 - mae: 0.1082 
Epoch 106/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0219 - mae: 0.1220

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0185 - mae: 0.1087 
Epoch 107/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0223 - mae: 0.1202

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0196 - mae: 0.1113 
Epoch 108/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0171 - mae: 0.1045

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0176 - mae: 0.1052 
Epoch 109/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0175 - mae: 0.1108

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0188 - mae: 0.1094 
Epoch 110/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 97ms/step - loss: 0.0202 - mae: 0.1089

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0188 - mae: 0.1077

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0180 - mae: 0.1058 
Epoch 111/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0220 - mae: 0.1150

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0180 - mae: 0.1057 
Epoch 112/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0202 - mae: 0.1154

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0180 - mae: 0.1059 
Epoch 113/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0126 - mae: 0.0858

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0166 - mae: 0.1004 
Epoch 114/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0140 - mae: 0.0972

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0161 - mae: 0.1014 
Epoch 115/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0145 - mae: 0.0876

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0159 - mae: 0.0987 
Epoch 116/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0196 - mae: 0.1081

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0176 - mae: 0.1047 
Epoch 117/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0179 - mae: 0.1059

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0161 - mae: 0.1007 
Epoch 118/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 95ms/step - loss: 0.0155 - mae: 0.0976

 9/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0157 - mae: 0.0992 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0159 - mae: 0.0997
Epoch 119/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0134 - mae: 0.0961

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0157 - mae: 0.1007 
Epoch 120/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 74ms/step - loss: 0.0091 - mae: 0.0749

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0150 - mae: 0.0958 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0151 - mae: 0.0961
Epoch 121/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 70ms/step - loss: 0.0157 - mae: 0.0985

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0165 - mae: 0.1027 
Epoch 122/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0166 - mae: 0.1021

12/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0166 - mae: 0.1008 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0166 - mae: 0.1008
Epoch 123/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 76ms/step - loss: 0.0215 - mae: 0.1103

12/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0184 - mae: 0.1069 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0183 - mae: 0.1068
Epoch 124/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - loss: 0.0196 - mae: 0.1129

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0176 - mae: 0.1058 
Epoch 125/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0153 - mae: 0.0988

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0159 - mae: 0.1000 
Epoch 126/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0170 - mae: 0.0985

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0160 - mae: 0.0994 
Epoch 127/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 98ms/step - loss: 0.0154 - mae: 0.1001

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0147 - mae: 0.0964

11/13 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0151 - mae: 0.0973

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0152 - mae: 0.0976
Epoch 128/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 119ms/step - loss: 0.0135 - mae: 0.0913

 7/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0167 - mae: 0.0999  

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0169 - mae: 0.1010

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0169 - mae: 0.1011
Epoch 129/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 31ms/step - loss: 0.0120 - mae: 0.0829

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0149 - mae: 0.0966 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0150 - mae: 0.0969
Epoch 130/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0161 - mae: 0.1049

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0162 - mae: 0.1018 
Epoch 131/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0167 - mae: 0.1043

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0158 - mae: 0.1000 
Epoch 132/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0166 - mae: 0.1027

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0166 - mae: 0.1032 
Epoch 133/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0179 - mae: 0.1080

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0167 - mae: 0.1028 
Epoch 134/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0120 - mae: 0.0891

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0144 - mae: 0.0950 
Epoch 135/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0203 - mae: 0.1160

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0164 - mae: 0.1022 
Epoch 136/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - loss: 0.0168 - mae: 0.1054

11/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0152 - mae: 0.0978 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0152 - mae: 0.0981
Epoch 137/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0176 - mae: 0.1060

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0157 - mae: 0.0993 
Epoch 138/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0161 - mae: 0.0987

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0154 - mae: 0.0983 
Epoch 139/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 98ms/step - loss: 0.0189 - mae: 0.1131

 8/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0165 - mae: 0.1040 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0163 - mae: 0.1028
Epoch 140/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0212 - mae: 0.1177

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0163 - mae: 0.1020 
Epoch 141/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0178 - mae: 0.1042

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0153 - mae: 0.0978 
Epoch 142/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0134 - mae: 0.0923

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0165 - mae: 0.1006 
Epoch 143/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0103 - mae: 0.0812

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0147 - mae: 0.0955 
Epoch 144/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 98ms/step - loss: 0.0171 - mae: 0.1072

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0153 - mae: 0.0987 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0153 - mae: 0.0987
Epoch 145/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0119 - mae: 0.0894

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0148 - mae: 0.0966 
Epoch 146/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0189 - mae: 0.1074

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0165 - mae: 0.1004 
Epoch 147/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0191 - mae: 0.1061

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0163 - mae: 0.0988 
Epoch 148/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0151 - mae: 0.1024

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0150 - mae: 0.0971 
Epoch 149/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0142 - mae: 0.0943

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0150 - mae: 0.0969 
Epoch 150/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0126 - mae: 0.0886

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0149 - mae: 0.0974 
Epoch 151/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - loss: 0.0142 - mae: 0.0965

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0150 - mae: 0.0976 
Epoch 152/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 93ms/step - loss: 0.0124 - mae: 0.0871

 8/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0140 - mae: 0.0942 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0144 - mae: 0.0952
Epoch 153/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 38ms/step - loss: 0.0200 - mae: 0.1121

12/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0151 - mae: 0.0965 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0150 - mae: 0.0964
Epoch 154/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 47ms/step - loss: 0.0142 - mae: 0.0956

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0146 - mae: 0.0955 
Epoch 155/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0184 - mae: 0.1128

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0159 - mae: 0.1012 
Epoch 156/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0156 - mae: 0.0981

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0162 - mae: 0.1001 
Epoch 157/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 99ms/step - loss: 0.0155 - mae: 0.1013

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0169 - mae: 0.1043

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0168 - mae: 0.1032 
Epoch 158/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0161 - mae: 0.1020

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0153 - mae: 0.0984 
Epoch 159/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0242 - mae: 0.1241

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0168 - mae: 0.1021 
Epoch 160/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0124 - mae: 0.0883

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0162 - mae: 0.1007 
Epoch 161/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0155 - mae: 0.0955

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0144 - mae: 0.0943 
Epoch 162/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0103 - mae: 0.0815

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0138 - mae: 0.0931 
Epoch 163/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 100ms/step - loss: 0.0122 - mae: 0.0871

 8/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0134 - mae: 0.0914  

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0141 - mae: 0.0937
Epoch 164/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0135 - mae: 0.0880

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0144 - mae: 0.0943 
Epoch 165/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0135 - mae: 0.0937

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0150 - mae: 0.0975 
Epoch 166/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0149 - mae: 0.0942

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0147 - mae: 0.0972 
Epoch 167/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0140 - mae: 0.0906

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0149 - mae: 0.0953 
Epoch 168/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0121 - mae: 0.0862

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0156 - mae: 0.0986 
Epoch 169/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0228 - mae: 0.1207

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0161 - mae: 0.0996 
Epoch 170/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 85ms/step - loss: 0.0138 - mae: 0.0884

12/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0140 - mae: 0.0919 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0141 - mae: 0.0924
Epoch 171/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0137 - mae: 0.0921

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0145 - mae: 0.0948 
Epoch 172/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0151 - mae: 0.0991

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0154 - mae: 0.0980 
Epoch 173/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0115 - mae: 0.0867

11/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0141 - mae: 0.0946 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0142 - mae: 0.0950
Epoch 174/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 74ms/step - loss: 0.0167 - mae: 0.1038

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0162 - mae: 0.1011

11/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0158 - mae: 0.0995

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0156 - mae: 0.0989
Epoch 175/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 41ms/step - loss: 0.0147 - mae: 0.0966

 9/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0137 - mae: 0.0937 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0138 - mae: 0.0937
Epoch 176/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0183 - mae: 0.1091

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0153 - mae: 0.0991 
Epoch 177/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0168 - mae: 0.1000

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0144 - mae: 0.0948 
Epoch 178/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0193 - mae: 0.1060

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0149 - mae: 0.0957 
Epoch 179/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 78ms/step - loss: 0.0118 - mae: 0.0858

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0141 - mae: 0.0931 
Epoch 180/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0139 - mae: 0.0961

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0145 - mae: 0.0955 
Epoch 181/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0133 - mae: 0.0921

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0142 - mae: 0.0943 
Epoch 182/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0142 - mae: 0.0955

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0139 - mae: 0.0936 
Epoch 183/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0156 - mae: 0.1003

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0140 - mae: 0.0939 
Epoch 184/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0141 - mae: 0.0945

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0145 - mae: 0.0965 
Epoch 185/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0146 - mae: 0.0964

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0149 - mae: 0.0966 
Epoch 186/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 99ms/step - loss: 0.0133 - mae: 0.0934

 9/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0139 - mae: 0.0944 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0141 - mae: 0.0948
Epoch 187/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0111 - mae: 0.0806

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0132 - mae: 0.0899 
Epoch 188/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0133 - mae: 0.0935

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0132 - mae: 0.0916 
Epoch 189/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - loss: 0.0168 - mae: 0.1021

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0154 - mae: 0.0979 
Epoch 190/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0162 - mae: 0.0969

10/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0158 - mae: 0.0979 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0158 - mae: 0.0983
Epoch 191/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0157 - mae: 0.0972

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0151 - mae: 0.0972 
Epoch 192/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 96ms/step - loss: 0.0167 - mae: 0.1050

 6/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0142 - mae: 0.0957

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 0.0147 - mae: 0.0964 
Epoch 193/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0155 - mae: 0.1012

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0151 - mae: 0.0980 
Epoch 194/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0163 - mae: 0.1003

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0146 - mae: 0.0959 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0146 - mae: 0.0958
Epoch 195/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0145 - mae: 0.0998

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0156 - mae: 0.0995 
Epoch 196/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0110 - mae: 0.0871

10/13 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0135 - mae: 0.0918 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0138 - mae: 0.0927
Epoch 197/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0160 - mae: 0.0980

11/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0138 - mae: 0.0927 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0139 - mae: 0.0932
Epoch 198/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 31ms/step - loss: 0.0133 - mae: 0.0867

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0147 - mae: 0.0952 
Epoch 199/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - loss: 0.0133 - mae: 0.0916

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0144 - mae: 0.0945 
Epoch 200/200
 1/13 ━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0141 - mae: 0.0930

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0144 - mae: 0.0953 
phase apprentissage: 20.06 seconds
modele_lstm.summary()
Model: "sequential"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                     Output Shape                  Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ lstm (LSTM)                     │ (None, 14)             │           896 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense (Dense)                   │ (None, 14)             │           210 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_1 (Dense)                 │ (None, 7)              │           105 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_2 (Dense)                 │ (None, 7)              │            56 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
 Total params: 3,803 (14.86 KB)
 Trainable params: 1,267 (4.95 KB)
 Non-trainable params: 0 (0.00 B)
 Optimizer params: 2,536 (9.91 KB)
ypred = modele_lstm.predict(Xlearn, verbose=True)
print(Xlearn.shape,ypred.shape)
Ylearn = ylearn.reshape(ylearn.shape[0],nap,)
print("R2 score {:.2f}".format(r2_score(Ylearn, ypred)))
print("model evaluate loss/mae")
modele_lstm.evaluate(Xlearn,ylearn)
 1/13 ━━━━━━━━━━━━━━━━━━━ 1s 112ms/step

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step 

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step
(400, 14, 1) (400, 7)
R2 score 0.98
model evaluate loss/mae
 1/13 ━━━━━━━━━━━━━━━━━━━ 2s 237ms/step - loss: 0.0163 - mae: 0.1031

13/13 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0152 - mae: 0.0991  
[0.014187569729983807, 0.09469059109687805]
# prediction à partir de t2
t2 = t0 
Xpred  = np.array([ys[t2-nav:t2]]).reshape(1,nav,1)
ypred = modele_lstm.predict(Xpred, verbose=True)
print(Xpred.shape,ypred.shape)
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step

1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step
(1, 14, 1) (1, 7)
Xpred = Xpred.reshape(1,nav,)
ypred = ypred.reshape(nap)
plot_pred()
../../_images/c2e1201e0eb752735a3b8ba3e41ce19fc7acfe8a08ad43e2ebbbf6448caf53ab.png

9.7. bibliographie#

9.8. FIN#