Как объединить поезд и тестовый набор для набора данных IMDB в Torchtext / Pytorch - PullRequest
0 голосов
/ 07 августа 2020

Я хочу использовать примеры в тестовом наборе набора данных анализа настроений IMDB для обучения, так как я построил свой собственный тест, с которым я буду сравнивать производительность различных моделей (моя аттестат зрелости)

Итак, после попытки я получил добавляющуюся работу, а также смог разделить ее, так что у меня также есть набор для проверки. Код следующий:

 from torchtext import datasets
    
    train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)
    
    import random
    train_data, valid_data = train_data.split(random_state = random.seed(SEED))
    from torch.utils.data import ConcatDataset
    data_list = list()
    data_list.append(train_data)
    data_list.append(test_data)
    train_data = ConcatDataset(data_list)
    print(f'Number of validation examples: {len(valid_data)}')
    print(f'Number of training examples: {len(train_data)}')

И я получаю следующее разделение (что и является моей целью):

Number of validation examples: 7500
Number of training examples: 42500

Теперь, когда я хочу создать словарь с помощью следующего кода, Я получаю эту ошибку:

MAX_VOCAB_SIZE = 25_000 
LABEL.build_vocab(train_data)

TEXT.build_vocab(train_data, max_size = MAX_VOCAB_SIZE)
~\.conda\envs\matura-ml\lib\collections\__init__.py in update(*args, **kwds)
    654             else:
--> 655                 _count_elements(self, iterable)
    656         if kwds:

TypeError: 'Example' object is not iterable

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
 in 
      1 MAX_VOCAB_SIZE = 25_000
      2 
----> 3 TEXT.build_vocab(train_data, max_size = MAX_VOCAB_SIZE)
      4 LABEL.build_vocab(train_data)

~\.conda\envs\matura-ml\lib\site-packages\torchtext\data\field.py in build_vocab(self, *args, **kwargs)
    299                     counter.update(x)
    300                 except TypeError:
--> 301                     counter.update(chain.from_iterable(x))
    302         specials = list(OrderedDict.fromkeys(
    303             tok for tok in [self.unk_token, self.pad_token, self.init_token,

TypeError: 'Example' object is not iterable

Как правильно объединить разделение поездов и тестов?

...