(05๊ฐ•) Dataset & Dataloader

210818

๋ชจ๋ธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋จน์ด๋Š” ๋ฐฉ๋ฒ•

  • Data : ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์ „์ฒ˜๋ฆฌ ํ•œ๋‹ค

  • Dataset : ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  Dataset์„ ์ •์˜ํ•œ๋‹ค

    • __init__() : ์‹œ์ž‘ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ง€

    • __len__() : ๋ฐ์ดํ„ฐ ์…‹์˜ ํฌ๊ธฐ ๋ฐ˜ํ™˜

    • __getitem__() : map-style ์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์–ด๋–ป๊ฒŒ ๋ฐ˜ํ™˜ํ•ด์ค„์ง€๋ฅผ ์ •์˜. ๋ณดํ†ต์€ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

  • Transforms : ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•์‹œํ‚จ๋‹ค.

    • Augmentation ํ•  ๋•Œ๋„ ์ด ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค

    • ํ…์„œ๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋Š” ๋ถ€๋ถ„๋„ ์—ฌ๊ธฐ์— ์†ํ•จ

  • DataLoader : ๋ชจ๋ธ์— ๋“ค์–ด๊ฐˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ์ •์˜

  • Model : ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ

Dataset ํด๋ž˜์Šค

  • ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ํ˜•ํƒœ๋ฅผ ์ •์˜ํ•˜๋Š” ํด๋ž˜์Šค

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹์˜ ํ‘œ์ค€ํ™”

import torch
from torch.utils.data import Dataset, DataLoader

class CustomDataset(Dataset):
    def __init__(self, text, labels):
            self.labels = labels
            self.data = text

    def __len__(self):
            return len(self.labels)

    def __getitem__(self, idx):
            label = self.labels[idx]
            text = self.data[idx]
            sample = {"Text": text, "Class": label}
            return sample
  • 5 : ์ดˆ๊ธฐ์— ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•œ๋‹ค

  • 9 : ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

  • 12 : index๊ฐ’์„ ์ฃผ์—ˆ์„ ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์ •์˜ํ•œ๋‹ค

    • ์ฃผ๋กœ index ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›์ง€๋งŒ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค

    • ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ–ˆ์ง€๋งŒ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ๋„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • getitem์€ ๋‚˜์ค‘์— DataLoader์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค

Dataset ํด๋ž˜์Šค ์ƒ์„ฑ์‹œ ์œ ์˜์ 

  • ๋ฐ์ดํ„ฐ ํ˜•ํƒœ์— ๋”ฐ๋ผ ๊ฐ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ •์˜ํ•œ๋‹ค

  • ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์‹œ์ ์— ์ฒ˜๋ฆฌํ•  ํ•„์š”๋Š” ์—†๋‹ค

  • ๋ฐ์ดํ„ฐ ์…‹์— ๋Œ€ํ•œ ํ‘œ์ค€ํ™”๋œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค

  • ์ตœ๊ทผ์—๋Š” HuggingFace๋“ฑ์˜ ํ‘œ์ค€ํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

DataLoader ํด๋ž˜์Šค

  • Data์˜ Batch๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํด๋ž˜์Šค

  • ํ•™์Šต์ง์ „ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™˜์„ ์ฑ…์ž„

  • Tensor๋กœ ๋ณ€ํ™˜ + Bacth ์ฒ˜๋ฆฌ๊ฐ€ ๋ฉ”์ธ ์—…๋ฌด

  • ๋ณ‘๋ ฌ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ์ฝ”๋“œ์˜ ๊ณ ๋ฏผ ํ•„์š”

Last updated

Was this helpful?