การจัดการลำดับข้อมูลด้วย PyTorch

Deep Learning ระดับกลางด้วย PyTorch

Michal Oleszak

Machine Learning Engineer

ข้อมูลลำดับ

  • เรียงตามเวลาหรือพื้นที่
  • ลำดับของจุดข้อมูลมีความสัมพันธ์เชื่อมโยงกัน
  • ตัวอย่างของข้อมูลลำดับ:
    • อนุกรมเวลา
    • ข้อความ
    • คลื่นเสียง

กราฟอนุกรมเวลาที่แสดงบนหน้าจอคอมพิวเตอร์

หนังสือที่เปิดอยู่

ลำโพงและหน้าจอคอมพิวเตอร์ที่เปิดซอฟต์แวร์ประมวลผลเสียง

Deep Learning ระดับกลางด้วย PyTorch

การพยากรณ์การใช้ไฟฟ้า

  • งาน: พยากรณ์การใช้ไฟฟ้าในอนาคตจากรูปแบบในอดีต

  • ชุดข้อมูลการใช้ไฟฟ้า:

                 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 ระดับกลางด้วย PyTorch

การแบ่งชุดฝึกสอนและชุดทดสอบ

  • อย่าสุ่มแบ่งข้อมูลสำหรับอนุกรมเวลา!
  • Look-ahead bias: โมเดลได้รับข้อมูลจากอนาคต
  • วิธีแก้: แบ่งตามลำดับเวลา

ชุดฝึกสอนปี 2011-2013 แสดงด้วยสีน้ำเงิน และชุดทดสอบปี 2014 แสดงด้วยสีส้ม

Deep Learning ระดับกลางด้วย PyTorch

การสร้างลำดับข้อมูล

  • ความยาวลำดับ = จำนวนจุดข้อมูลในตัวอย่างฝึกสอนหนึ่งชุด
    • 24 × 4 = 96 -> ใช้ข้อมูล 24 ชั่วโมงล่าสุด
  • พยากรณ์จุดข้อมูลถัดไปจุดเดียว

ลำดับอินพุตความยาวเท่ากันแสดงด้วยสีน้ำเงิน และค่าเป้าหมายแสดงด้วยสีเขียว

Deep Learning ระดับกลางด้วย PyTorch

การสร้างลำดับข้อมูลใน 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)
  • รับข้อมูลและความยาวลำดับเป็นอินพุต
  • กำหนดค่าเริ่มต้นให้ลิสต์อินพุตและเป้าหมาย
  • วนซ้ำผ่านจุดข้อมูล
  • กำหนดอินพุตและเป้าหมาย
  • เพิ่มเข้าลิสต์ที่กำหนดไว้
  • คืนค่าอินพุตและเป้าหมายเป็น NumPy arrays
Deep Learning ระดับกลางด้วย PyTorch

TensorDataset

สร้างตัวอย่างสำหรับฝึกสอน

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

แปลงเป็น 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 ระดับกลางด้วย PyTorch

การประยุกต์ใช้กับข้อมูลลำดับประเภทอื่น

เทคนิคเดียวกันนี้ใช้ได้กับลำดับข้อมูลประเภทอื่น:

  • Large Language Models
  • การรู้จำเสียงพูด
Deep Learning ระดับกลางด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning ระดับกลางด้วย PyTorch

Preparing Video For Download...