pytorch加载txt数据集
时间: 2023-09-13 22:07:53 浏览: 111
pytorch 自定义数据集加载方法
5星 · 资源好评率100%
可以使用`torchtext`库来加载txt数据集。下面是一个简单的例子:
```python
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import Vocab
from torch.utils.data import DataLoader, Dataset
import torch
# 定义一个自定义数据集类
class MyDataset(Dataset):
def __init__(self, data_path, vocab):
self.data = []
with open(data_path, 'r', encoding='utf-8') as f:
for line in f:
self.data.append(line.strip())
self.vocab = vocab
self.tokenizer = get_tokenizer('basic_english')
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
tokens = self.tokenizer(self.data[idx])
ids = [self.vocab.stoi[token] for token in tokens]
return torch.tensor(ids)
# 构建词汇表
tokenizer = get_tokenizer('basic_english')
counter = Counter()
with open('data.txt', 'r', encoding='utf-8') as f:
for line in f:
counter.update(tokenizer(line.strip()))
vocab = Vocab(counter)
# 加载数据集
batch_size = 32
train_dataset = MyDataset('data.txt', vocab)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
```
在上面的代码中,我们首先定义了一个自定义的数据集类`MyDataset`,用于加载txt数据集。在`__init__`方法中,我们读取数据集文件内容并将其存储在一个列表中。在`__getitem__`方法中,我们使用`get_tokenizer`函数将每个句子分词,并将每个单词转换为其在词汇表中的索引。最后,我们使用`DataLoader`类将数据集加载到内存中,并设置批量大小、是否打乱数据等参数。
阅读全文