Reeksen verwerken met PyTorch

Gevorderde Deep Learning met PyTorch

Michal Oleszak

Machine Learning Engineer

Sequentiële data

  • Geordend in tijd of ruimte
  • De volgorde bevat onderlinge afhankelijkheden
  • Voorbeelden van sequentiële data:
    • Tijdreeksen
    • Tekst
    • Audiogolven

Een tijdreeks op een computerscherm.

Een open boek.

Een set luidsprekers en een computerscherm met audiobewerkingssoftware.

Gevorderde Deep Learning met PyTorch

Voorspelling elektriciteitsverbruik

  • Taak: voorspel toekomstig elektriciteitsverbruik op basis van patronen uit het verleden

  • Dataset elektriciteitsverbruik:

                 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.
Gevorderde Deep Learning met PyTorch

Train-test-split

  • Geen willekeurige splitsing voor tijdreeksen!
  • Look-ahead bias: model kent info uit de toekomst
  • Oplossing: splits op tijd

Visueel gescheiden trainset voor 2011-2013 in blauw en testset voor 2014 in oranje.

Gevorderde Deep Learning met PyTorch

Reeksen aanmaken

  • Sequentielengte = aantal punten per trainingsvoorbeeld
    • 24 × 4 = 96 -> laatste 24 uur
  • Voorspel het eerstvolgende punt

Visueel gescheiden invoersequenties van gelijke lengte in blauw en de targetwaarde in groen.

Gevorderde Deep Learning met PyTorch

Reeksen maken in 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)
  • Neem data en sequentielengte als input
  • Initialiseer lijsten voor inputs en targets
  • Loop over de datapunten
  • Definieer inputs en target
  • Voeg toe aan de vooraf gemaakte lijsten
  • Retourneer inputs en targets als NumPy-arrays
Gevorderde Deep Learning met PyTorch

TensorDataset

Maak trainingsvoorbeelden

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

Zet ze om naar een Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Gevorderde Deep Learning met PyTorch

Toepasbaarheid op andere sequentiële data

Zelfde aanpak geldt voor andere reeksen:

  • Large Language Models
  • Spraakherkenning
Gevorderde Deep Learning met PyTorch

Laten we oefenen!

Gevorderde Deep Learning met PyTorch

Preparing Video For Download...