Hantera sekvenser med PyTorch

Fördjupad djupinlärning med PyTorch

Michal Oleszak

Machine Learning Engineer

Sekventiell data

  • Ordnade i tid eller rum
  • Datapunkternas ordning innehåller beroenden
  • Exempel på sekventiell data:
    • Tidsserier
    • Text
    • Ljudvågor

En tidsserie visad på en datorskärm.

En öppen bok.

Högtalare och en datorskärm med ljudbearbetningsprogram öppet.

Fördjupad djupinlärning med PyTorch

Prediktion av elförbrukning

  • Uppgift: förutsäg framtida elförbrukning baserat på historiska mönster

  • Datamängd för elförbrukning:

                 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.
Fördjupad djupinlärning med PyTorch

Tränings- och testuppdelning

  • Ingen slumpmässig uppdelning för tidsserier!
  • Framåtblicksbias: modellen får information om framtiden
  • Lösning: dela upp efter tid

Träningsdata för åren 2011–2013 visad i blått och testdata för 2014 visad i orange.

Fördjupad djupinlärning med PyTorch

Skapa sekvenser

  • Sekvenslängd = antal datapunkter i ett träningsexempel
    • 24 × 4 = 96 -> beaktar de senaste 24 timmarna
  • Förutsäg nästa enskilda datapunkt

Indatasekvenser av samma längd visade i blått och målvärdet visat i grönt.

Fördjupad djupinlärning med PyTorch

Skapa sekvenser i 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)
  • Ta data och sekvenslängd som indata
  • Initiera listor för indata och mål
  • Iterera över datapunkterna
  • Definiera indata och mål
  • Lägg till i de initierade listorna
  • Returnera indata och mål som NumPy-arrayer
Fördjupad djupinlärning med PyTorch

TensorDataset

Skapa träningsexempel

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

Konvertera dem till ett Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Fördjupad djupinlärning med PyTorch

Tillämpning på annan sekventiell data

Samma tekniker är tillämpliga på andra sekvenser:

  • Stora språkmodeller
  • Taligenkänning
Fördjupad djupinlärning med PyTorch

Nu kör vi en övning!

Fördjupad djupinlärning med PyTorch

Preparing Video For Download...