| from torch.utils.data import Dataset | |
| import torch | |
| # class TinyLLMDataset(Dataset): | |
| # def __init__(self, texts, block_size, encode): | |
| # self.data = [torch.tensor(encode(t[:block_size]), dtype=torch.long) # Pour chaque ligne dans texts alors on encode avec le tokenizer la ligne si le texte est de plus de 10 caractères | |
| # for t in texts if len(t) > 10] | |
| # def __len__(self): | |
| # return len(self.data) | |
| # def __getitem__(self, idx): | |
| # x = self.data[idx][:-1] # si idx = 0 on récupère la premiere phrase encodée sans le dernier paramètre | |
| # y = self.data[idx][1:] # si idx = 0 on récupère la premiere phrase encodée sans le premier paramètre | |
| # return x, y | |
| class TinyLLMDataset(Dataset): | |
| def __init__(self, texts, block_size, encode): | |
| self.data = [] | |
| for t in texts: | |
| if len(t) > 10: | |
| words = t.split() | |
| for i in range(0, len(words) - block_size): | |
| segment = " ".join(words[i : i + block_size]) | |
| encoded = torch.tensor(encode(segment), dtype=torch.long) | |
| self.data.append(encoded) | |
| def __len__(self): | |
| return len(self.data) | |
| def __getitem__(self, idx): | |
| x = self.data[idx][:-1] | |
| y = self.data[idx][1:] | |
| return x, y | |