Итерация по объекту Torchtext.data.BucketIterator выбрасывает объект AttributeError 'Field' не имеет атрибута 'vocab'

Когда я пытаюсь посмотреть пакет, напечатав следующую итерацию BucketIterator объект, AttributeError брошен

tv_datafields=[("Tweet",TEXT), ("Anger",LABEL), ("Fear",LABEL), ("Joy",LABEL), ("Sadness",LABEL)]
train, vld = data.TabularDataset.splits(path="./data/", train="train.csv",validation="test.csv",format="csv", fields=tv_datafields)

train_iter, val_iter = BucketIterator.splits(
(train, vld),
batch_sizes=(64, 64),
device=-1,
sort_key=lambda x: len(x.Tweet),
sort_within_batch=False,
repeat=False
)
print(next(iter(train_dl)))

1 ответ

Я не уверен в конкретной ошибке, которую вы получаете, но в этом случае вы можете перебрать пакет, используя следующий код:

for i in train_iter:
    print i.Tweet
    print i.Anger
    print i.Fear
    print i.Joy
    print i.Sadness

i.Tweet (также другие) - тензор формы (input_data_length, batch_size),

Таким образом, чтобы просмотреть отдельные данные пакета (скажем, пакет 0), вы можете сделать print i.Tweet[:,0],

То же самое касается val_iter (а также test_iter, если нужно).

Другие вопросы по тегам