Gérer les séquences avec PyTorch

Deep learning intermédiaire avec PyTorch

Michal Oleszak

Machine Learning Engineer

Données séquentielles

  • Ordonnées dans le temps ou l’espace
  • L’ordre des points de données implique des dépendances
  • Exemples de données séquentielles :
    • Séries temporelles
    • Texte
    • Ondes audio

Une série temporelle affichée sur un écran d’ordinateur.

Un livre ouvert.

Un ensemble de haut-parleurs et un écran avec un logiciel de traitement audio.

Deep learning intermédiaire avec PyTorch

Prédire la consommation électrique

  • Tâche : prédire la consommation électrique future à partir des motifs passés

  • Jeu de données de consommation électrique :

                 timestamp  consumption
0      2011-01-01 00:15:00    -0.704319
1      2011-01-01 00:30:00    -0.704319
...                    ...          ...
140254 2014-12-31 23:45:00    -0.095751
140255 2015-01-01 00:00:00    -0.095751
1 Trindade,Artur. (2015). ElectricityLoadDiagrams20112014. UCI Machine Learning Repository. https://doi.org/10.24432/C58C86.
Deep learning intermédiaire avec PyTorch

Séparation entraînement-test

  • Pas de séparation aléatoire pour les séries temporelles !
  • Biais d’anticipation : le modèle voit le futur
  • Solution : séparer par temps

Jeu d’entraînement 2011-2013 en bleu et jeu de test 2014 en orange, séparés visuellement.

Deep learning intermédiaire avec PyTorch

Créer des séquences

  • Longueur de séquence = nombre de points par exemple d’entraînement
    • 24 × 4 = 96 -> dernières 24 heures
  • Prédire le prochain point uniquement

Séquences d’entrée de longueur égale en bleu et valeur cible en vert, séparées visuellement.

Deep learning intermédiaire avec PyTorch

Créer des séquences en Python

import numpy as np

def create_sequences(df, seq_length):

xs, ys = [], []
for i in range(len(df) - seq_length):
x = df.iloc[i:(i+seq_length), 1] y = df.iloc[i+seq_length, 1]
xs.append(x) ys.append(y)
return np.array(xs), np.array(ys)
  • Entrées : données et longueur de séquence
  • Initialiser les listes entrées et cibles
  • Itérer sur les points de données
  • Définir entrées et cible
  • Ajouter aux listes préinitialisées
  • Retourner entrées et cibles en tableaux NumPy
Deep learning intermédiaire avec PyTorch

TensorDataset

Créer des exemples d’entraînement

X_train, y_train = create_sequences(train_data, seq_length)
print(X_train.shape, y_train.shape)
(34944, 96) (34944,)

Les convertir en Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Deep learning intermédiaire avec PyTorch

Applicabilité à d’autres données séquentielles

Techniques applicables à d’autres séquences :

  • Grands modèles de langue
  • Reconnaissance vocale
Deep learning intermédiaire avec PyTorch

Passons à la pratique !

Deep learning intermédiaire avec PyTorch

Preparing Video For Download...