Zpracování sekvencí pomocí PyTorch

Intermediate Deep Learning with PyTorch

Michal Oleszak

Machine Learning Engineer

Sekvenční data

  • Uspořádaná v čase nebo prostoru
  • Pořadí datových bodů obsahuje závislosti
  • Příklady sekvenčních dat:
    • Časové řady
    • Text
    • Zvukové vlny

Časová řada zobrazená na obrazovce počítače.

Otevřená kniha.

Sada reproduktorů a obrazovka počítače se softwarem pro zpracování zvuku.

Intermediate Deep Learning with PyTorch

Predikce spotřeby elektřiny

  • Úkol: predikce budoucí spotřeby elektřiny na základě minulých vzorů

  • Dataset spotřeby elektřiny:

                 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.
Intermediate Deep Learning with PyTorch

Rozdělení na trénovací a testovací sadu

  • Žádné náhodné dělení pro časové řady!
  • Předstih: model má přístup k budoucím datům
  • Řešení: dělení podle času

Vizuálně oddělená trénovací sada pro roky 2011–2013 zobrazená modře a testovací sada pro rok 2014 zobrazená oranžově.

Intermediate Deep Learning with PyTorch

Vytváření sekvencí

  • Délka sekvence = počet datových bodů v jednom trénovacím příkladu
    • 24 × 4 = 96 -> uvažujeme posledních 24 hodin
  • Predikce jednoho následujícího datového bodu

Vizuálně oddělené vstupní sekvence stejné délky zobrazené modře a cílová hodnota zobrazená zeleně.

Intermediate Deep Learning with PyTorch

Vytváření sekvencí v Pythonu

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)
  • Vstup: data a délka sekvence
  • Inicializace seznamů vstupů a cílů
  • Iterace přes datové body
  • Definice vstupů a cíle
  • Přidání do předem inicializovaných seznamů
  • Vrácení vstupů a cílů jako pole NumPy
Intermediate Deep Learning with PyTorch

TensorDataset

Vytvoření trénovacích příkladů

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

Převedení na Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Intermediate Deep Learning with PyTorch

Použitelnost pro jiná sekvenční data

Stejné techniky jsou použitelné i pro jiné sekvence:

  • Velké jazykové modely
  • Rozpoznávání řeči
Intermediate Deep Learning with PyTorch

Pojďme procvičovat!

Intermediate Deep Learning with PyTorch

Preparing Video For Download...