더북(TheBook)

데이터셋 클래스를 위한 코드는 다음과 같습니다.

코드 2-5 배치 입력과 타깃을 위한 데이터셋

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

class GPTDatasetV1(Dataset):
    def __init__(self, txt, tokenizer, max_length, stride):
        self.input_ids = []
        self.target_ids = []

        token_ids = tokenizer.encode(txt) ----- 전체 텍스트를 토큰화합니다.

        for i in range(0, len(token_ids) - max_length, stride): ----- 슬라이딩 윈도를 사용해 책을 max_length 길이의 중첩된 시퀀스로 나눕니다.
            input_chunk = token_ids[i:i + max_length]
            target_chunk = token_ids[i + 1: i + max_length + 1]
            self.input_ids.append(torch.tensor(input_chunk))
            self.target_ids.append(torch.tensor(target_chunk))

    def __len__(self): ----- 데이터셋에 있는 전체 행 수를 반환합니다.
        return len(self.input_ids)

    def __getitem__(self, idx): ----- 데이터셋에서 하나의 행을 반환합니다.
        return self.input_ids[idx], self.target_ids[idx]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.