Есть ли способ создать объект torch.utils.data.DataLoader из torchtext.TabularDataset?
Я новичок в ML и борюсь с задачей предварительной обработки данных.
Я использую PyTorch и хочу классифицировать тексты с помощью простой модели RNN. Я не знаю, актуальна ли архитектура модели на данный момент.
Чтобы дать вам немного контекста, у меня есть два файла json, откуда я беру данные: файл train.json и файл test.json .
Каждая строка этих файлов представлена так:
{"text" : ["word_1", "word_2", ..., "word_n"], "label" : "actual_label"},
где текстовый ключ - это список слов, а метка - это фактическая метка для текущего текста.
Пока у меня что-то вроде этого:
from torchtext import data
TEXT = data.Field()
LABEL = data.LabelField()
fields = {'text': ('text', TEXT), 'label': ('label', LABEL)}
train_data, test_data = data.TabularDataset.splits(
path = 'data_path_folder',
train = 'train.json',
test = 'test.json',
format = 'json',
fields = fields)
Затем я создаю словарь для своих данных:
TEXT.build_vocab(train_data, max_size = max_size)
LABEL.build_vocab(train_data)
и итераторы:
batch_size = 64
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
train_iter, test_iter = data.BucketIterator.splits(
(train_data, test_data),
sort_key = lambda x: len(x.text),
batch_size = batch_size,
device = device)
Теперь в цикле обучения я могу легко перебирать данные следующим образом:
for batch in train_iter:
batch.text # this is a tensor with a shape of [max words number from a sentence, number of sencentes]
batch.label # this is a tensor with a shape of [number of sentences]
Мой первый вопрос: где именно мои данные преобразуются в тензоры. Меняются ли данные на тензоры, когда я вызываю функцию data.BucketIterator.splits ? Или есть что-то делать при создании словаря?
Я хочу обработать данные, используя вместо этого torch.utils.data.DataLoader .
Цель состоит в том, чтобы перебрать данные следующим образом:
for batch_idx, (text, label) in enumerate(dataloader):
text # this should be a tensor with a shape of [max words number from a sentence, number of sencentes]
label # this should be a tensor with a shape of [number of sentences]
Я попытался сохранить часть data.TabularDataset.splits и оттуда создать загрузчик данных, но безуспешно.
Кто-нибудь может мне с этим помочь?
Заранее спасибо!