Sequenzen mit PyTorch verarbeiten

Deep Learning mit PyTorch für Fortgeschrittene

Michal Oleszak

Machine Learning Engineer

Sequenzdaten

  • Geordnet in Zeit oder Raum
  • Die Reihenfolge enthält Abhängigkeiten
  • Beispiele für Sequenzdaten:
    • Zeitreihen
    • Text
    • Audiosignale

Eine Zeitreihe auf einem Computermonitor.

Ein aufgeschlagenes Buch.

Ein Set Lautsprecher und ein Bildschirm mit Audio-Software.

Deep Learning mit PyTorch für Fortgeschrittene

Vorhersage des Stromverbrauchs

  • Aufgabe: zukünftigen Stromverbrauch aus vergangenen Mustern vorhersagen

  • Datensatz zum Stromverbrauch:

                 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 mit PyTorch für Fortgeschrittene

Train-Test-Split

  • Kein zufälliges Split für Zeitreihen!
  • Look-ahead-Bias: Modell kennt Infos aus der Zukunft
  • Lösung: zeitbasiertes Split

Optisch getrenntes Trainingsset (2011–2013) in Blau und Testset (2014) in Orange.

Deep Learning mit PyTorch für Fortgeschrittene

Sequenzen erstellen

  • Sequenzlänge = Anzahl Punkte pro Trainingsbeispiel
    • 24 × 4 = 96 -> letzte 24 Stunden
  • Vorhersage: nächster einzelner Punkt

Eingabesequenzen gleicher Länge in Blau, Zielwert in Grün.

Deep Learning mit PyTorch für Fortgeschrittene

Sequenzen in Python erstellen

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)
  • Nimmt Daten und Sequenzlänge als Eingaben
  • Initialisiere Listen für Inputs und Targets
  • Iteriere über die Datenpunkte
  • Definiere Inputs und Target
  • Hänge an die Listen an
  • Gib Inputs und Targets als NumPy-Arrays zurück
Deep Learning mit PyTorch für Fortgeschrittene

TensorDataset

Trainingsbeispiele erstellen

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

In ein Torch-Dataset umwandeln

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Deep Learning mit PyTorch für Fortgeschrittene

Anwendbarkeit auf andere sequentielle Daten

Gleiches gilt für andere Sequenzen:

  • Large Language Models
  • Spracherkennung
Deep Learning mit PyTorch für Fortgeschrittene

Lass uns üben!

Deep Learning mit PyTorch für Fortgeschrittene

Preparing Video For Download...